如何用 uv 从源码安装 PrivateGPT 并以热重载开发模式运行
【免费下载链接】privateGPTComplete API layer for private AI applications on local models: RAG, skills, tools, MCP, text-to-sql, and more. Works with any OpenAI-compatible inference server.项目地址: https://gitcode.com/GitHub_Trending/pr/privateGPT
如果你需要修改 PrivateGPT 源码、跑测试或边改代码边看效果,就需要从克隆的仓库出发,用 uv 安装依赖并以开发模式启动服务。这篇文章走通完整路径:安装 uv、克隆仓库、uv sync装依赖、先以普通模式确认服务能起来,最后用--reload参数开启文件变更自动重启的热重载模式。适用前提是:本机已经有一个 OpenAI 兼容的 LLM 服务在运行(官方文档默认以 Ollama 的http://localhost:11434/v1为例),因为 PrivateGPT 本身不运行模型,它通过OPENAI_API_BASE连接外部推理服务。
前置条件
- Python 版本:pyproject.toml 声明
requires-python = ">=3.11,<3.12",项目只接受 3.11。uv 在uv sync时会自动按这个约束处理解释器。 - 一个运行中的 LLM 服务:PrivateGPT 启动时会向
OPENAI_API_BASE指向的服务发起GET /v1/models并自动注册返回的模型,服务没起来就会无模型可用(见 启动流程说明)。 - git:用于克隆仓库。
安装 uv
按平台选择官方安装命令(来自 本地安装文档):
# macOS / Linux curl -LsSf https://astral.sh/uv/install.sh | sh安装后需要重启 shell,或执行source ~/.zshrc(macOS)/source ~/.bashrc(Linux)让uv命令生效。
# Windows PowerShell powershell -c "irm https://astral.sh/uv/install.ps1 | iex"Windows 上安装后重启 PowerShell 会话即可。
克隆仓库并安装依赖
git clone https://gitcode.com/GitHub_Trending/pr/privateGPT cd privateGPT uv sync --frozen --extra core说明:
- 默认的源码安装使用
coreextra,它包含了 OpenAI 兼容的 LLM/Embedding 客户端、tokenizer、Qdrant 向量库、文档摄入和工具集(定义见 pyproject.toml 的[project.optional-dependencies])。 - 按需追加功能 extra,文档给出的例子是队列支持:
uv sync --frozen --extra core --extra queue。不需要时不要多加。 - 装完可以在
private_gpt/包和tests/目录上继续开发,uv sync创建的项目虚拟环境由uv run统一使用。
先以普通模式启动,确认基线可用
在开热重载之前,先用普通方式跑一次,排除环境问题:
# macOS / Linux OPENAI_API_BASE=http://localhost:11434/v1 uv run private-gpt serve# Windows PowerShell $env:OPENAI_API_BASE = "http://localhost:11434/v1" uv run python -m private_gpt启动后在浏览器打开 http://localhost:8080/ui 确认界面可访问。服务默认监听8080端口,API 基地址为http://localhost:8080。这一步能通,说明依赖、LLM 连接和配置都没有问题,后面的热重载才有意义。
开启热重载开发模式
文档给出的开发命令是:
# macOS / Linux OPENAI_API_BASE=http://localhost:11434/v1 \ PGPT_PROFILES=local \ uv run private-gpt serve --reload# Windows PowerShell $env:OPENAI_API_BASE = "http://localhost:11434/v1" $env:PGPT_PROFILES = "local" uv run private-gpt serve --reload其中--reload是serve命令的开发参数,文件发生变化时自动重启服务(见 CLI 文档 中 serve 的参数表)。
注意PGPT_PROFILES=local的含义:它告诉 PrivateGPT 在基础settings.yaml之上叠加加载settings-local.yaml(profile 命名规则是settings-{name}.yaml,默认定位在项目根目录,可用PGPT_SETTINGS_FOLDER覆盖,见 Settings & Profiles)。仓库本身并没有附带settings-local.yaml,如果该文件不存在,启动会报FileNotFoundError: Settings file not found for profile 'local'(见 Troubleshooting)。所以有两种做法:
- 你还没有自定义配置:把
PGPT_PROFILES=local这一行删掉,直接OPENAI_API_BASE=http://localhost:11434/v1 uv run private-gpt serve --reload即可; - 你想覆盖模型、可观测性等配置:先在项目根目录创建
settings-local.yaml再启动,需要更细粒度模型设置时参考 Detailed Model Configuration 生成settings-model.yaml的做法。
Makefile 快捷方式(仅 Unix):
OPENAI_API_BASE=http://localhost:11434/v1 make devmake dev实际执行的是 Makefile 中的dev目标:PYTHONUNBUFFERED=1 uv run private-gpt serve --reload --host 0.0.0.0 --port 8080。注意它比文档命令多绑定了--host 0.0.0.0,服务会监听所有网卡,在不可信网络环境下要留意这一点。
验证热重载是否生效
文档给出的成功条件是服务可用:启动后打开 http://localhost:8080/ui 能看到界面,API 在http://localhost:8080。修改private_gpt/下任意 Python 文件保存后,服务应自动重启,无需手动 Ctrl+C。
模型是否被正确发现,可以看启动日志,或用文档中列出的接口确认:
curl http://localhost:8080/v1/modelsPrivateGPT 启动时会自动向 LLM 服务查询并注册所有返回的模型,GET /v1/models应列出这些模型。
常见问题
按 Troubleshooting 文档:
- 启动后没有模型 / 报 "no models available":依次确认 LLM 服务是否在运行(
curl http://localhost:11434/v1/models应能返回)、OPENAI_API_BASE是否包含/v1、以及PGPT_LLM_AUTO_DISCOVER_MODELS是否被设成了false(默认true,会自动发现)。 FileNotFoundError: Settings file not found for profile 'xxx':PGPT_PROFILES指向的settings-xxx.yaml在 settings 文件夹(默认项目根目录)中不存在。创建该文件或去掉PGPT_PROFILES环境变量。[Errno 48] Address already in use:8080 端口被占用,用--port换端口,例如private-gpt serve --port 8081。
后续操作
依赖安装完成的基础上,make test、make format、make lint、make typecheck等 Makefile 目标可以直接用于开发和代码质量检查;需要给某个模型单独调 tokenizer、context window 或采样参数时,再按 Settings & Profiles 与 Detailed Model Configuration 生成并使用 profile。
【免费下载链接】privateGPTComplete API layer for private AI applications on local models: RAG, skills, tools, MCP, text-to-sql, and more. Works with any OpenAI-compatible inference server.项目地址: https://gitcode.com/GitHub_Trending/pr/privateGPT
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考