以下包已发布 1.0 Alpha 版本:
langchainlangchain-corelangchain-anthropiclangchain-openai
新增功能
LangChain 1.0 引入了以下新功能:-
消息对象新增
.content_blocks属性。该属性提供完全类型化的消息内容视图,并在各提供商之间标准化现代 LLM 功能,包括推理、引用、服务端工具调用等。新消息内容不涉及任何破坏性变更。详情请参阅消息内容文档。 -
langchain中新增了预构建的langgraph链和代理。langchain包的接口范围已缩减,聚焦于流行和核心的抽象(例如init_chat_model和init_embeddings),以及由langgraph运行时支持的预构建链和代理。为保持向后兼容性,新增了langchain-legacy包。详情请参阅新的代理文档和发布说明。
破坏性变更
不再支持 Python 3.9
不再支持 Python 3.9
Python 3.9 将于 2025 年 10 月停止维护。因此,所有 LangChain 包现在均要求 Python 3.10 或更高版本。
部分旧代码迁移至 `langchain-legacy`
部分旧代码迁移至 `langchain-legacy`
新版 之后:
langchain 包缩减了接口范围,专注于 LangChain 组件的标准接口(如 init_chat_model 和 init_embeddings),以及由 langgraph 运行时支持的预构建链和代理。此范围之外的现有功能(如索引 API 和 langchain-community 功能的导出)已迁移至 langchain-legacy 包。如需恢复之前的行为,请将 langchain 包安装更新为 langchain-legacy,并替换导入语句:之前:更新聊天模型的返回类型
更新聊天模型的返回类型
聊天模型调用的返回类型签名已从 之后:
BaseMessage 修正为 AIMessage。实现 bind_tools 的自定义聊天模型应更新其返回签名,以避免类型检查器报错:之前:OpenAI Responses API 的默认消息格式
OpenAI Responses API 的默认消息格式
与 Responses API 交互时,
langchain-openai 现在默认将响应项存储在消息的 content 中。此前需在实例化 ChatOpenAI 时指定 output_version="responses/v1" 才能启用此行为。此举旨在解决某些多轮对话场景中可能出现的 BadRequestError。如需恢复之前的行为,请将 LC_OUTPUT_VERSION 环境变量设置为 v0,或在实例化 ChatOpenAI 时指定 output_version="v0":`langchain-anthropic` 中默认的 `max_tokens`
`langchain-anthropic` 中默认的 `max_tokens`
ChatAnthropic 中的 max_tokens 参数现在将默认为比之前默认值 1024 更高的新值。新默认值将根据所选模型而变化。移除已弃用的对象
移除已弃用的对象
已弃用并计划在 1.0 中移除的方法、函数及其他对象已被删除。
弃用项
`.text()` 现为属性
`.text()` 现为属性
消息对象上的 现有使用方式(即
.text() 方法应更新为去掉括号:.text())仍可正常工作,但会发出警告。预构建代理
langchain 发布版聚焦于缩减 LangChain 的接口范围,集中于流行和核心的抽象。
ReAct 代理迁移
create_react_agent 已从 langgraph.prebuilts 迁移至 langchain.agents,并进行了重大增强:
增强的结构化输出
create_agent 改进了将输出强制转换为结构化数据类型的能力:
- 主循环集成:结构化输出现在在主循环中生成,无需额外的 LLM 调用
- 工具/输出选择:模型可在调用工具、生成结构化输出或两者之间进行选择
- 成本降低:消除了额外 LLM 调用带来的额外费用
-
人工工具调用(大多数模型的默认策略)
- LangChain 生成与响应格式模式匹配的工具
- 模型调用这些工具,LangChain 将参数强制转换为所需格式
- 通过
ToolStrategy提示进行配置
-
提供商原生实现
- 在可用时使用原生结构化输出支持
- 通过
ProviderStrategy提示进行配置
错误处理
结构化输出错误 通过ToolStrategy 的 handle_errors 参数控制错误处理:
- 解析错误:模型生成的数据与所需结构不匹配
- 多个工具调用:模型为结构化输出模式生成 2 个或更多工具调用
- 调用失败:代理返回人工
ToolMessage,要求模型重试(保持不变) - 执行失败:代理现在默认抛出
ToolException而非重试(防止无限循环)
ToolNode 的 handle_tool_errors 参数配置行为。
破坏性变更
预绑定模型 为更好地支持结构化输出,create_agent 不再支持预绑定工具或配置的模型:
如果未使用结构化输出,动态模型函数仍可返回预绑定模型。
报告问题
请在 GitHub 上使用'v1' 标签 报告在 1.0 中发现的任何问题。