LLM 配置
大语言模型(LLM)配置
相关源文件
以下文件为本 Wiki 页面的生成提供了上下文:
docs/components/embedders/config.mdxdocs/components/embedders/overview.mdxdocs/components/llms/config.mdxdocs/components/llms/overview.mdxmem0/configs/llms/azure.pymem0/configs/llms/base.pymem0/configs/llms/openai.pymem0/embeddings/configs.pymem0/llms/base.pymem0/llms/configs.pymem0/llms/openai.pymem0/llms/xai.pytests/llms/test_groq.pytests/llms/test_openai.pytests/llms/test_together.py
本文档介绍了 Mem0 中的大语言模型(LLM)配置系统,包括基础配置类、特定提供商的设置、工具调用和响应处理。重点说明如何在 Mem0 记忆系统中配置和定制大语言模型(LLM)提供商。
配置架构
Mem0 中的大语言模型(LLM)配置系统采用分层结构,基础配置类定义了通用参数,而特定提供商的实现则在此基础上扩展专用设置。
配置类层次结构
来源:mem0/configs/llms/base.py:7-68, mem0/configs/llms/openai.py:6-88, mem0/llms/configs.py:6-36, mem0/llms/base.py:7-142, mem0/llms/openai.py:14-150, mem0/llms/xai.py:10-53
基础大语言模型(LLM)配置参数
BaseLlmConfig 类提供了适用于所有大语言模型(LLM)提供商的通用参数。这些参数控制模型行为和连接设置的基本方面。
核心参数
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
model | str | None | 模型标识符(例如 "gpt-4o-mini"、"claude-3-5-sonnet-20240620") |
temperature | float | 0.1 | 控制随机性(0.0-2.0) |
api_key | str | None | 提供商的 API 密钥 |
max_tokens | int | 2000 | 生成的最大 Token 数(1-4096) |
top_p | float | 0.1 | 核采样参数(0.0-1.0) |
top_k | int | 1 | Top-k 采样参数(1-40) |
enable_vision | bool | False | 启用视觉能力 |
vision_details | str | "auto" | 视觉处理级别("low"、"high"、"auto") |
reasoning_effort | str | None | 推理模型的努力级别("low"、"medium"、"high") |
http_client_proxies | dict/str | None | 内部 httpx.Client 的代理设置 |
如果提供了 http_client_proxies,BaseLlmConfig 会初始化一个 httpx.Client mem0/configs/llms/base.py:67-67。
来源:mem0/configs/llms/base.py:16-68
提供商配置系统
LlmConfig 类使用 Pydantic 校验和管理特定提供商的配置。
配置结构
来源:mem0/llms/configs.py:6-36
特定提供商的配置参数
OpenAI 和 OpenRouter 配置
OpenAIConfig 类扩展了 BaseLlmConfig,增加了针对 OpenAI、OpenRouter 和监控的专用参数。
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
openai_base_url | str | None | 自定义 OpenAI API 基础 URL |
models | List[str] | None | 用于 OpenRouter 路由的模型列表 |
route | str | "fallback" | OpenRouter 路由策略 |
openrouter_base_url | str | None | OpenRouter API 基础 URL |
site_url | str | None | 用于 OpenRouter 请求头的站点 URL |
app_name | str | None | 用于 OpenRouter 请求头的应用名称 |
store | bool | None | 是否在 OpenAI 服务器上存储对话(选择加入) |
response_callback | Callable | None | 用于监控大语言模型(LLM)响应的函数 |
store 参数被显式处理,以避免将未知字段泄露到兼容 OpenAI 的后端(如 Gemini 或 Groq)mem0/llms/openai.py:129-133。
来源:mem0/configs/llms/openai.py:12-87, mem0/llms/openai.py:112-133
工具调用和响应处理
Mem0 实现了一种标准化的方式来处理大语言模型(LLM)响应,特别是在涉及工具调用(函数调用)时。
响应数据流
工具调用解析
在 OpenAILLM._parse_response 中,如果提供了工具,响应会被结构化为一个包含 content 和 tool_calls 列表的字典。每个工具调用包含函数 name 和解析后的 arguments mem0/llms/openai.py:65-80。
推理模型支持
LLMBase 类包含过滤推理模型(例如 o1、o3、gpt-5)参数的逻辑。这些模型通常不支持 temperature 或 top_p 等参数 mem0/llms/base.py:43-102。
- _is_reasoning_model:通过模型名称前缀(例如
o1-、o3-)检测模型mem0/llms/base.py:43-70。 - _get_supported_params:过滤掉推理模型的通用参数,仅保留
messages、response_format、tools、tool_choice和reasoning_effortmem0/llms/base.py:85-102。
来源:mem0/llms/openai.py:54-82, mem0/llms/base.py:43-105, mem0/llms/openai.py:141-149
配置校验和优先级
值优先级规则
配置值按以下顺序解析:
- 显式值:在传递给构造函数的
config字典中设置docs/components/llms/config.mdx:30。 - 环境变量:例如
OPENAI_API_KEY或OPENAI_BASE_URLdocs/components/llms/config.mdx:31。 - 默认值:在特定大语言模型(LLM)实现中定义(例如,如果未提供模型,
OpenAILLM默认使用gpt-5-mini)mem0/llms/openai.py:38-39。
实现示例:OpenAI
OpenAILLM 类处理复杂的初始化逻辑,先检查 OpenRouter 特定的密钥,然后回退到标准的 OpenAI 变量 mem0/llms/openai.py:41-52。
# 来自 mem0/llms/openai.py:41-52
if os.environ.get("OPENROUTER_API_KEY"): # 使用 OpenRouter
self.client = OpenAI(
api_key=os.environ.get("OPENROUTER_API_KEY"),
base_url=self.config.openrouter_base_url
or os.getenv("OPENROUTER_API_BASE")
or "https://openrouter.ai/api/v1",
)
else:
api_key = self.config.api_key or os.getenv("OPENAI_API_KEY")
base_url = self.config.openai_base_url or os.getenv("OPENAI_BASE_URL") or "https://api.openai.com/v1"
self.client = OpenAI(api_key=api_key, base_url=base_url)
来源:docs/components/llms/config.mdx:26-34, mem0/llms/openai.py:15-52, mem0/configs/llms/base.py:16-68