在Windows平台本地搭建Open-WebUI开发环境,并以IDEA DEBUG模式启动源码调试

        当前,人工智能领域发展迅速,各类应用层出不穷。其中,开源项目Open-WebUI因其提供了调用大模型的灵活平台而备受关注。开发者可以基于Open-WebUI进行定制化改造,以满足特定应用场景的需求。然而,尽管Open-WebUI功能强大且灵活,目前网络上却缺乏关于如何在本地环境中进行调试启动,特别是使用MySQL作为数据源的相关文档和教程。这给那些希望深入了解并优化其本地部署方案的开发者带来了挑战。

         针对这一现状,在实际项目落地过程中,我尝试整理了一份详细的本地调试与启动指南,特别涵盖了以MySQL为数据源的配置过程。这份指南旨在填补现有资料的空白,为有类似需求的开发者提供参考和支持。通过这份指南,开发者可以更方便地在本地环境中对Open-WebUI进行调试和定制化修改,从而更好地利用这个强大的工具来实现自己的项目目标。

一、open-webui Python 环境配置

确保您的Python版本符合以下要求:

  • Python 版本:>=3.10,<3.13

二、安装 Python 依赖

1、以管理员身份启动 Anaconda Prompt

为了确保权限足够,建议以管理员身份启动 Anaconda Prompt。

 2、切换到open-webui运行环境,并安装依赖

(base) D:\>conda activate open-webui

(open-webui) D:\>cd D:\WorkSpace\ForAi\pythod\open-webui\backend

(open-webui) D:\WorkSpace\ForAi\pythod\open-webui\backend>pip install -r requirements.txt

三、前端启动

1、前端项目build

我使用的nodejs版本是 20.15.0 如果你本地有多个nodejs版本可以使用nvm管理切换

# 进入目录根目录
D:\WorkSpace\ForAi\pythod\open-webui
# 安装前端依赖
npm install
# build项目
npm run build

四、数据库改为mysql

1、配置环境变量

DATABASE_URL=mysql+pymysql://账号:密码@127.0.0.1:3306/open-webui

2、修改源码支持mysql

修改文件db.py

修改handle_peewee_migration函数支持mysql

from peewee import MySQLDatabase
from peewee_migrate import Router
from urllib.parse import urlparse

def handle_peewee_migration(database_url):
    try:
        # Parse the database URL
        parsed_url = urlparse(database_url)
        if parsed_url.scheme == "mysql+pymysql":
            db = MySQLDatabase(
                parsed_url.path.lstrip('/'),
                user=parsed_url.username,
                password=parsed_url.password,
                host=parsed_url.hostname,
                port=parsed_url.port or 3306,
                charset='utf8mb4'
            )
        else:
            # For other databases, use the existing logic
            db = register_connection(database_url.replace("postgresql://", "postgres://"))

        migrate_dir = OPEN_WEBUI_DIR / "internal" / "migrations"
        router = Router(db, logger=log, migrate_dir=migrate_dir)
        router.run()
        db.close()
    except Exception as e:
        log.error(f"Failed to initialize the database connection: {e}")
        raise
    finally:
        if 'db' in locals() and db and not db.is_closed():
            db.close()
        if 'db' in locals():
            assert db.is_closed(), "Database connection is still open."

由于open-webui不支持mysql,源代码支持的是sqlite,postgresql,其中有方法需要改为mysql支持的方法,目前找到了一个文件

groups.py

    def get_groups_by_member_id(self, user_id: str) -> list[GroupModel]:
        with get_db() as db:
            return [
                GroupModel.model_validate(group)
                for group in db.query(Group)
                .filter(
                    # 原代码为func.json_array_length(Group.user_ids) > 0
                    func.JSON_LENGTH(Group.user_ids) > 0
                )  # Ensure array exists
                .filter(
                    Group.user_ids.cast(String).like(f'%"{user_id}"%')
                )  # String-based check
                .order_by(Group.updated_at.desc())
                .all()
            ]

3、mysql数据库

通过网盘分享的文件:open-webui.sql
链接: https://pan.baidu.com/s/1_gofAFb6tsd10dLQOTXnvA?pwd=k1fi 提取码: k1fi

五、IDEA DEBUG模式启动 项目

1、项目导入时代码报错找不到open_webui

解决办法:

强制标记源码根目录

2、自建启动文件

open-webui默认启动文件为start_windows.bat,这种方式启动,不能DEBUG,十分不方便

解决办法:

在open-webui/backend/open_webui创建启动文件start_run.py

import uvicorn
from open_webui.main import app

if __name__ == "__main__":
    uvicorn.run(app,  host="0.0.0.0", port=8080)

3、DEBUG启动start_run.py文件

六、启动成功后通过http://127.0.0.1:8080访问即可。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值