本文档涵盖了 LangChain 的两个主要 LLM 供应商集成(OpenAI 和 Anthropic)的实现细节。这些集成提供了全面的聊天模型实现,支持工具调用、结构化输出、流式传输和多模态功能。
有关这些集成所实现的核心接口的信息,请参阅 核心模型接口。有关 Mistral 和 Groq 等其他供应商集成,请参阅 其他供应商集成。
OpenAI 和 Anthropic 集成均作为独立的伙伴包在 LangChain 单一仓库中实现,遵循一致的架构模式。
来源: libs/partners/openai/pyproject.toml9-13 libs/partners/anthropic/pyproject.toml9-13
| 包 | 核心依赖 | 供应商 SDK | 附加 |
|---|---|---|---|
langchain-openai | langchain-core<1.0.0,>=0.3.63 | openai<2.0.0,>=1.68.2 | tiktoken<1,>=0.7 |
langchain-anthropic | langchain-core<1.0.0,>=0.3.63 | anthropic<1,>=0.52.0 | pydantic<3.0.0,>=2.7.4 |
来源: libs/partners/openai/pyproject.toml9-13 libs/partners/anthropic/pyproject.toml9-13
这两个集成遵循相同的继承模式,通过供应商特定的实现扩展了 LangChain 的 BaseChatModel。
来源: libs/partners/openai/langchain_openai/chat_models/base.py444-570 libs/partners/anthropic/langchain_anthropic/chat_models.py482-1052
两种实现都支持广泛的配置选项
model_name: 模型标识符(默认:"gpt-3.5-turbo")temperature: 采样温度控制max_tokens: 生成最大令牌数streaming: 启用令牌级流式传输tools: 工具调用配置use_responses_api: 为结构化输出启用响应 APImodel: 模型标识符(例如:"claude-3-5-sonnet-latest")max_tokens: 生成最大令牌数temperature: 采样温度控制streaming: 启用令牌级流式传输tools: 工具调用配置thinking: Claude 3.7 的扩展思考配置来源: libs/partners/openai/langchain_openai/chat_models/base.py444-570 libs/partners/anthropic/langchain_anthropic/chat_models.py482-1052
这两个集成均实现了复杂的消息转换系统,以弥合 LangChain 的通用消息格式与供应商特定 API 之间的差距。
来源: libs/partners/openai/langchain_openai/chat_models/base.py131-316
来源: libs/partners/anthropic/langchain_anthropic/chat_models.py152-469
这两个集成均提供全面的工具调用支持,其方法不同,反映了各自的 API 设计。
来源: libs/partners/openai/langchain_openai/chat_models/base.py269-286
来源: libs/partners/anthropic/langchain_anthropic/chat_models.py91-106 libs/partners/anthropic/langchain_anthropic/output_parsers.py
这两个集成均支持使用不同的底层机制生成结构化输出。
OpenAI 通过响应格式规范提供原生结构化输出支持
| 方法 | 机制 | 兼容性 |
|---|---|---|
response_format | 原生 JSON 模式 | GPT-4o, GPT-4o-mini, GPT-4-turbo |
function_calling | 工具调用回退 | 所有支持工具的模型 |
| 响应 API | 增强型结构化输出 | 最新模型 |
来源: libs/partners/openai/langchain_openai/chat_models/base.py403-427
Anthropic 通过工具调用模式实现结构化输出
来源: libs/partners/anthropic/langchain_anthropic/chat_models.py1053-1200
这两个集成均提供全面的流式传输支持,并带有使用元数据跟踪功能。
来源: libs/partners/openai/langchain_openai/chat_models/base.py879-931 libs/partners/anthropic/langchain_anthropic/chat_models.py1353-1450
OpenAI 通过结构化内容块支持多种内容类型
来源: libs/partners/openai/langchain_openai/chat_models/base.py203-245
Anthropic 提供广泛的多模态支持和复杂的内容格式化功能
来源: libs/partners/anthropic/langchain_anthropic/chat_models.py200-284
| 提供商 | 主要 API 密钥 | 附加配置 |
|---|---|---|
| OpenAI | OPENAI_API_KEY | OPENAI_API_BASE, OPENAI_ORG_ID |
| Anthropic | ANTHROPIC_API_KEY | ANTHROPIC_API_URL |
这两个集成在其 validate_environment 方法中包含全面的验证,以确保正确的设置和凭据可用性。
来源: libs/partners/openai/langchain_openai/chat_models/base.py589-667 libs/partners/anthropic/langchain_anthropic/chat_models.py1052-1100
这两个集成均实现了强大的错误处理模式
InvalidToolCall 对象中保留错误上下文来源: libs/partners/openai/langchain_openai/chat_models/base.py403-427 libs/partners/anthropic/langchain_anthropic/chat_models.py472-480