菜单

OpenAI 和 Anthropic 集成

相关源文件

本文档涵盖了 LangChain 的两个主要 LLM 供应商集成(OpenAI 和 Anthropic)的实现细节。这些集成提供了全面的聊天模型实现,支持工具调用、结构化输出、流式传输和多模态功能。

有关这些集成所实现的核心接口的信息,请参阅 核心模型接口。有关 Mistral 和 Groq 等其他供应商集成,请参阅 其他供应商集成

包架构

OpenAI 和 Anthropic 集成均作为独立的伙伴包在 LangChain 单一仓库中实现,遵循一致的架构模式。

软件包结构

来源: libs/partners/openai/pyproject.toml9-13 libs/partners/anthropic/pyproject.toml9-13

依赖管理

核心依赖供应商 SDK附加
langchain-openailangchain-core<1.0.0,>=0.3.63openai<2.0.0,>=1.68.2tiktoken<1,>=0.7
langchain-anthropiclangchain-core<1.0.0,>=0.3.63anthropic<1,>=0.52.0pydantic<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

关键配置参数

两种实现都支持广泛的配置选项

OpenAI 配置

  • model_name: 模型标识符(默认:"gpt-3.5-turbo")
  • temperature: 采样温度控制
  • max_tokens: 生成最大令牌数
  • streaming: 启用令牌级流式传输
  • tools: 工具调用配置
  • use_responses_api: 为结构化输出启用响应 API

Anthropic 配置

  • model: 模型标识符(例如:"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 之间的差距。

OpenAI 消息转换

来源: libs/partners/openai/langchain_openai/chat_models/base.py131-316

Anthropic 消息格式化

来源: libs/partners/anthropic/langchain_anthropic/chat_models.py152-469

工具调用实现

这两个集成均提供全面的工具调用支持,其方法不同,反映了各自的 API 设计。

OpenAI 工具调用

来源: libs/partners/openai/langchain_openai/chat_models/base.py269-286

Anthropic 工具调用

来源: libs/partners/anthropic/langchain_anthropic/chat_models.py91-106 libs/partners/anthropic/langchain_anthropic/output_parsers.py

结构化输出支持

这两个集成均支持使用不同的底层机制生成结构化输出。

OpenAI 结构化输出

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 结构化输出

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 多模态功能

OpenAI 通过结构化内容块支持多种内容类型

  • 图像: URL 引用和 base64 编码数据
  • 音频: 音频输入处理(部分模型)
  • 文档: 通过内容块的文件附件

来源: libs/partners/openai/langchain_openai/chat_models/base.py203-245

Anthropic 多模态功能

Anthropic 提供广泛的多模态支持和复杂的内容格式化功能

来源: libs/partners/anthropic/langchain_anthropic/chat_models.py200-284

身份验证和配置

环境变量

提供商主要 API 密钥附加配置
OpenAIOPENAI_API_KEYOPENAI_API_BASE, OPENAI_ORG_ID
AnthropicANTHROPIC_API_KEYANTHROPIC_API_URL

配置验证

这两个集成在其 validate_environment 方法中包含全面的验证,以确保正确的设置和凭据可用性。

来源: libs/partners/openai/langchain_openai/chat_models/base.py589-667 libs/partners/anthropic/langchain_anthropic/chat_models.py1052-1100

错误处理与可靠性

这两个集成均实现了强大的错误处理模式

  • 速率限制: 指数退避自动重试
  • 无效响应: 优雅处理格式错误的 API 响应
  • 工具调用错误: 在 InvalidToolCall 对象中保留错误上下文
  • 网络问题: 可配置的超时和重试机制

来源: libs/partners/openai/langchain_openai/chat_models/base.py403-427 libs/partners/anthropic/langchain_anthropic/chat_models.py472-480