agentic_huge_data_base / wiki
页面 Mem0 · 6.2 LLM 配置·DeepWiki 中文全文译文

6.2 · LLM 配置(LLM Configuration)

长期记忆与上下文管理 · 聚焦本章的模块关系、源码依据与实现要点。

项目Mem0 章节6.2 状态全文译文 模块模型调用与提供方适配、系统架构、接口与服务契约、界面与交互
源码线索
  • docs/components/embedders/config.mdx
  • docs/components/embedders/overview.mdx
  • docs/components/llms/config.mdx
  • docs/components/llms/overview.mdx
  • mem0/configs/llms/azure.py
  • mem0/configs/llms/base.py
  • mem0/configs/llms/openai.py
  • mem0/embeddings/configs.py
  • mem0/llms/base.py
  • mem0/llms/configs.py
模块标签
  • 模型调用与提供方适配
  • 系统架构
  • 接口与服务契约
  • 界面与交互
  • 测试、发布与运维

章节正文

LLM 配置

大语言模型(LLM)配置

相关源文件

以下文件为本 Wiki 页面的生成提供了上下文:

  • docs/components/embedders/config.mdx
  • docs/components/embedders/overview.mdx
  • docs/components/llms/config.mdx
  • docs/components/llms/overview.mdx
  • mem0/configs/llms/azure.py
  • mem0/configs/llms/base.py
  • mem0/configs/llms/openai.py
  • mem0/embeddings/configs.py
  • mem0/llms/base.py
  • mem0/llms/configs.py
  • mem0/llms/openai.py
  • mem0/llms/xai.py
  • tests/llms/test_groq.py
  • tests/llms/test_openai.py
  • tests/llms/test_together.py

本文档介绍了 Mem0 中的大语言模型(LLM)配置系统,包括基础配置类、特定提供商的设置、工具调用和响应处理。重点说明如何在 Mem0 记忆系统中配置和定制大语言模型(LLM)提供商。

配置架构

Mem0 中的大语言模型(LLM)配置系统采用分层结构,基础配置类定义了通用参数,而特定提供商的实现则在此基础上扩展专用设置。

配置类层次结构
Mem0 · 配置类层次结构 · 图 1
Mem0 · 配置类层次结构 · 图 1

来源: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)提供商的通用参数。这些参数控制模型行为和连接设置的基本方面。

核心参数
参数类型默认值描述
modelstrNone模型标识符(例如 "gpt-4o-mini"、"claude-3-5-sonnet-20240620")
temperaturefloat0.1控制随机性(0.0-2.0)
api_keystrNone提供商的 API 密钥
max_tokensint2000生成的最大 Token 数(1-4096)
top_pfloat0.1核采样参数(0.0-1.0)
top_kint1Top-k 采样参数(1-40)
enable_visionboolFalse启用视觉能力
vision_detailsstr"auto"视觉处理级别("low"、"high"、"auto")
reasoning_effortstrNone推理模型的努力级别("low"、"medium"、"high")
http_client_proxiesdict/strNone内部 httpx.Client 的代理设置

如果提供了 http_client_proxiesBaseLlmConfig 会初始化一个 httpx.Client mem0/configs/llms/base.py:67-67

来源:mem0/configs/llms/base.py:16-68

提供商配置系统

LlmConfig 类使用 Pydantic 校验和管理特定提供商的配置。

配置结构
Mem0 · 配置结构 · 图 2
Mem0 · 配置结构 · 图 2

来源:mem0/llms/configs.py:6-36

特定提供商的配置参数

OpenAI 和 OpenRouter 配置

OpenAIConfig 类扩展了 BaseLlmConfig,增加了针对 OpenAI、OpenRouter 和监控的专用参数。

参数类型默认值描述
openai_base_urlstrNone自定义 OpenAI API 基础 URL
modelsList[str]None用于 OpenRouter 路由的模型列表
routestr"fallback"OpenRouter 路由策略
openrouter_base_urlstrNoneOpenRouter API 基础 URL
site_urlstrNone用于 OpenRouter 请求头的站点 URL
app_namestrNone用于 OpenRouter 请求头的应用名称
storeboolNone是否在 OpenAI 服务器上存储对话(选择加入)
response_callbackCallableNone用于监控大语言模型(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)响应,特别是在涉及工具调用(函数调用)时。

响应数据流
Mem0 · 响应数据流 · 图 3
Mem0 · 响应数据流 · 图 3
工具调用解析

OpenAILLM._parse_response 中,如果提供了工具,响应会被结构化为一个包含 contenttool_calls 列表的字典。每个工具调用包含函数 name 和解析后的 arguments mem0/llms/openai.py:65-80

推理模型支持

LLMBase 类包含过滤推理模型(例如 o1、o3、gpt-5)参数的逻辑。这些模型通常不支持 temperaturetop_p 等参数 mem0/llms/base.py:43-102

  • _is_reasoning_model:通过模型名称前缀(例如 o1-o3-)检测模型 mem0/llms/base.py:43-70
  • _get_supported_params:过滤掉推理模型的通用参数,仅保留 messagesresponse_formattoolstool_choicereasoning_effort mem0/llms/base.py:85-102

来源:mem0/llms/openai.py:54-82, mem0/llms/base.py:43-105, mem0/llms/openai.py:141-149

配置校验和优先级

值优先级规则

配置值按以下顺序解析:

  1. 显式值:在传递给构造函数的 config 字典中设置 docs/components/llms/config.mdx:30
  2. 环境变量:例如 OPENAI_API_KEYOPENAI_BASE_URL docs/components/llms/config.mdx:31
  3. 默认值:在特定大语言模型(LLM)实现中定义(例如,如果未提供模型,OpenAILLM 默认使用 gpt-5-minimem0/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