LLM 组件是 PrivateGPT 的核心子系统,负责初始化、配置和与各种语言模型提供商进行交互。它抽象了本地和云端 LLM 实现之间的差异,为系统的其余部分提供了一个统一的接口。该组件支持多种 LLM 后端,包括本地模型(Llama.cpp, Ollama)和云服务(OpenAI, Azure OpenAI, Google Gemini, AWS Sagemaker)。
来源: private_gpt/components/llm/llm_component.py18-22
LLM 组件被实现为一个单例类,该类根据配置设置初始化相应的 LLM 实现。
该组件使用依赖注入来接收应用程序设置并初始化相应的 LLM 实现。它还处理基于所选模型的 tokenizer 设置和提示格式化。
来源: private_gpt/components/llm/llm_component.py18-44
LLM 组件的初始化过程遵循以下步骤
来源: private_gpt/components/llm/llm_component.py22-44 private_gpt/components/llm/llm_component.py45-225
LLM 组件支持通过不同模式的多种 LLM 后端
| 模式 | 描述 | 提供商 | 主要功能 |
|---|---|---|---|
llamacpp | 使用 Llama.cpp 的本地 LLM | 本地 | 完整的本地执行,GPU 加速 |
ollama | 使用 Ollama 的本地 LLM | 本地 | 简易的模型管理,容器化 |
openai | 使用 OpenAI API 的云端 LLM | OpenAI | 高性能,最新模型 |
openailike | OpenAI 兼容 API (LocalAI, vLLM) | 多种 | 兼容 OpenAI 的自定义模型 |
azopenai | Microsoft Azure OpenAI 服务 | Microsoft | Azure 基础架构上的 OpenAI 模型 |
sagemaker | AWS SageMaker 托管模型 | Amazon | AWS 基础架构上的自定义模型 |
gemini | Google Gemini 模型 | Google 的最新模型 | |
mock | 用于测试的 Mock LLM | None | 无真实 LLM 测试 |
来源: private_gpt/components/llm/llm_component.py45-225 fern/docs/pages/manual/llms.mdx1-234
对于本地 LLM 执行,该组件支持
LLM 组件配置 Llama.cpp,默认启用 GPU 加速,将 n_gpu_layers 设置为 -1(所有层),将 offload_kqv 设置为 True。
来源: private_gpt/components/llm/llm_component.py45-76
使用 Ollama 时,该组件可以自动拉取模型(如果配置了),并支持 keep-alive 设置以在请求之间保持模型加载。
来源: private_gpt/components/llm/llm_component.py129-191
对于云端 LLM 执行,该组件支持
来源: private_gpt/components/llm/llm_component.py91-104
来源: private_gpt/components/llm/llm_component.py193-210
该组件还支持 AWS SageMaker、Google Gemini 和 OpenAI-Like 服务,具有类似的配置模式。
来源: private_gpt/components/llm/llm_component.py78-90 private_gpt/components/llm/llm_component.py105-128 private_gpt/components/llm/llm_component.py211-223
LLM 组件使用提示样式系统为不同的 LLM 后端正确格式化消息。每种提示样式都在标准化消息格式和不同模型所期望的特定格式之间进行转换。
该组件提供以下提示样式
| 风格 | 描述 | 格式示例 |
|---|---|---|
默认 | 使用模型的默认格式 | 取决于模型 |
llama2 | Meta 的 Llama 2 格式 | <s> [INST] <<SYS>> system prompt <</SYS>> user message [/INST] assistant response </s> |
llama3 | Meta 的 Llama 3 格式 | <|begin_of_text|> <|start_header_id|>system<|end_header_id|>... |
tag | 基于标签的格式 (Vigogne) | <|system|>: system message\n<|user|>: user message\n<|assistant|> |
mistral | Mistral AI 格式 | <s>[INST] system\nuser [/INST] assistant</s> |
chatml | ChatML 格式 (Anthropic) | <|im_start|>system\n...<|im_end|>\n<|im_start|>user\n... |
提示样式根据正在使用的模型进行选择,并可在配置中自定义。
来源: private_gpt/components/llm/prompt_helper.py11-310 tests/test_prompt_helper.py1-196
LLM 组件是 PrivateGPT 系统的一个关键部分,正如其在系统架构中的位置所示
LLM 组件主要由 RAG 管道使用,该管道基于检索到的文档提供上下文感知的响应。Chat、Chunks 和 Summarize 等服务都使用 RAG 管道,从而也使用 LLM 组件。
LLM 组件可以通过 settings.yaml 文件或特定于配置文件的设置文件(如 settings-openai.yaml)进行配置。
关键配置参数包括
| 参数 | 描述 | 默认 |
|---|---|---|
llm.mode | 要使用的 LLM 后端 | 必填 |
llm.temperature | 模型温度(随机性) | 取决于模型 |
llm.max_new_tokens | 生成的新 token 的最大数量 | 256 |
llm.context_window | 最大上下文窗口大小 | 取决于模型 |
llm.tokenizer | 用于计算 token 的 tokenizer | None |
llm.prompt_style | 要使用的提示样式 | 默认 |
每个 LLM 模式还有其自己的特定配置选项,例如 API 密钥、端点和模型名称。
来源: private_gpt/components/llm/llm_component.py22-44 fern/docs/pages/manual/llms.mdx34-47
要使用特定的 LLM 模式,您需要创建或修改设置中的配置文件。
然后使用此配置文件运行 PrivateGPT。
对于云服务
运行方式
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(b7ee43)