本指南旨在为开发或扩展 PrivateGPT 代码库的开发者提供帮助。它涵盖了开发环境的设置、开发工作流程的理解以及系统的扩展。有关更具体的信息,请参阅项目结构、发布管理和文档系统。
PrivateGPT 需要 Python 3.11
python = ">=3.11,<3.12"
PrivateGPT 使用 Poetry 进行依赖管理
如果尚未安装 Poetry,请进行安装
克隆仓库
创建虚拟环境并安装依赖项
根据您的开发需求安装特定的附加组件
该项目使用多种开发工具,所有工具均在 pyproject.toml 中配置。
来源:pyproject.toml87-95 pyproject.toml114-197
设置 pre-commit 钩子以自动运行质量检查
这将安装运行以下钩子:
来源:.pre-commit-config.yaml1-43
使用以下命令手动运行这些工具:
来源:pyproject.toml114-197 .pre-commit-config.yaml17-43
来源:pyproject.toml192-197 .github/workflows/tests.yml36-58
PrivateGPT 采用模块化架构,为核心组件的实现提供了灵活性。
PrivateGPT 的设计注重可扩展性,特别是在集成核心组件的不同实现方面。
项目支持核心组件的各种实现。
| 组件类型 | 可用实现 |
|---|---|
| LLMs | LlamaCPP, OpenAI, OpenAI-like, Ollama, Azure OpenAI, Gemini, Sagemaker |
| 嵌入 | Ollama, HuggingFace, OpenAI, Azure OpenAI, Gemini, Mistral, Sagemaker |
| 向量存储 | Qdrant, Chroma, Postgres, Milvus, ClickHouse |
| 节点存储 | 内存, Postgres |
来源:pyproject.toml22-39 pyproject.toml64-84
要为核心组件添加新实现,请执行以下操作:
PrivateGPT 使用 GitHub Actions 进行 CI/CD
来源:.github/workflows/tests.yml1-68
在贡献代码时
PrivateGPT 遵循语义化版本控制。
version = "0.6.2"
有关发布管理的详细信息,请参阅发布管理指南。
该项目定义了各种 Poetry 附加组件以支持选择性地安装依赖项。
[tool.poetry.extras]
ui = ["gradio", "ffmpy"]
llms-llama-cpp = ["llama-index-llms-llama-cpp"]
llms-openai = ["llama-index-llms-openai"]
# ... and many more
在开发新组件时,您可能需要添加新的附加组件定义。
本指南概述了 PrivateGPT 的开发过程。有关代码库结构的更详细信息,请参阅项目结构。