SuperAPI AI 工具集

langchain-knowledge-patch

智能体与模型

查看项目

更新于 10-16 06:51

技能介绍

用途:这是一份 LangChain 知识补丁指南,供在改动智能体循环、中间件策略、图状态、流式契约或供应商工具之前,先查阅当前 LangChain、LangGraph、供应商集成、MCP 适配器与 Deep Agents API 的参考。

参考索引覆盖:智能体与工具(create_agent、中间件钩子与策略、结构化输出、模型配置、工具运行时注入、动态工具、自定义状态、ToolNode 错误);Anthropic 集成(原生 schema、工具元数据与流式、effort、引用、缓存、上下文管理、供应商工具、代码执行、远程 MCP、工具搜索);Deep Agents(harness 工具、文件系统与二进制后端、协议 v2、后台子智能体、沙箱、配置、上下文存储、摘要、记忆、CLI);LangGraph 工作流(类型化流与调用结果、事件投影、增量检查点、超时与恢复、排空、JavaScript 状态 schema、节点缓存、扇入、可重连流);MCP 适配器(会话生命周期、结构化与多模态结果、资源、提示、运行时感知拦截器、回调、进度、日志、elicitation);OpenAI 集成(官方与 Azure 端点、自定义与内置工具、Responses 路由与续接、审批、压缩、推理、PDF 输入、提示缓存);v1 迁移(包拆分、运行时下限、经典导入、智能体迁移、供应商中立内容块、发布限制、Google GenAI v4)。

破坏性变更:主 Python 与 JavaScript 包现聚焦核心智能体抽象,仅在无法立即迁移时安装经典包:uv pip install --upgrade langchain langgraph;uv pip install langchain-classic;npm install langchain @langchain/core @langchain/langgraph;npm install @langchain/classic。Python 需 3.10 或更高。旧 Python API 移至 langchain-classic;JavaScript 链、检索器、索引 API 与社区导出移至 @langchain/classic,例如把 langchain/chains 替换为 @langchain/classic/chains。用 langchain.agents.create_agent 替换 langgraph.prebuilt.create_react_agent。

自定义智能体状态须以 TypedDict 扩展 AgentState,不接受 Pydantic 模型与 dataclass;把 schema 放在拥有字段的中间件上,create_agent(state_schema=...) 仅保留用于仅工具状态兼容。Deep Agents 后端直接构造 StateBackend() 与 StoreBackend(),弃用 lambda rt: StateBackend(rt) 等运行时工厂;JavaScript 实现 BackendProtocolV2 结构化结果并在 error 中报告失败,二进制字节用 readRaw(),lsInfo/grepRaw/globInfo 更名为 ls/grep/glob,迁移 v1 后端时用 adaptBackendProtocol。langchain-google-genai v4 使用 Google 统一 SDK 同时支持 Gemini API 与 Vertex AI,需小幅升级改动并迁离已弃用的 langchain-google-vertexai 包。

用 create_agent 构建智能体:它构建由 LangGraph 支撑的模型/工具循环,接受供应商模型字符串、工具、系统提示、中间件、状态与结构化输出。名称在智能体作为子图嵌入时成为节点标识符,仅限字母、数字、下划线与连字符。

中间件:Python 子类化 AgentMiddleware,JavaScript 用 createMiddleware,生命周期钩子对为 before_agent/beforeAgent、before_model/beforeModel、wrap_model_call/wrapModelCall、wrap_tool_call/wrapToolCall、after_model/afterModel、after_agent/afterAgent。内置中间件含 PIIMiddleware(命名或正则检测器,redact 或 block)、SummarizationMiddleware(token 触发与配置感知)、HumanInTheLoopMiddleware(按工具 approve、edit、reject)、模型重试中间件(可配置指数退避)、内容审核中间件(在单一策略边界检查用户输入、模型输出与工具结果)。JavaScript 的 dynamicSystemPromptMiddleware 结果为追加式。

结构化输出:在智能体循环内运行,ToolStrategy 用于模型通过工具调用发出 schema,ProviderStrategy 用于原生 schema 生成,模型配置可推断原生支持。Python handle_errors 与 JavaScript handleErrors 控制 schema 解析与多输出失败。若中间件切换模型,启用结构化输出时替换模型不得已用 bind_tools 绑定。

工具运行时:在工具上声明 runtime: ToolRuntime 可接收模型隐藏状态、不可变类型化上下文、store、流写入器、config 与工具调用 ID;runtime 与 config 参数名保留。返回 Command 更新状态,并在模型需要结果时附带相关联的 ToolMessage。并行工具写入的字段需要 reducer。运行时发现的工具必须在 wrap_model_call 与 wrap_tool_call 中都添加。

消息与流:用 message.content_blocks 跨集成归一化文本、推理、引用、工具调用、服务端工具调用与多模态内容。用 stream_mode="messages" 接收图节点内普通 model.invoke() 调用的 token 块,通过 langgraph_node 或模型标签等元数据选择调用。LangGraph version="v2" 时流方法发出 StreamPart,调用方法返回 GraphOutput.value 与 GraphOutput.interrupts;事件流 version="v3" 时消费类型化 run 与模型调用投影。

工具错误边界:ToolNode 默认捕获调用错误,但会重新抛出工具执行失败;当执行失败应返回模型时,把 handle_tool_errors 设为 True、模型可见字符串、异常处理器或异常类型元组。

供应商行为:供应商原生工具、响应续接、缓存、上下文压缩与审批循环有集成特定契约,不要从一个供应商推断另一个的线上格式;绑定服务端工具或在消息历史保留供应商内容块前先读供应商参考。MCP 工具需决定每次调用是否可用新会话,服务端状态要显式打开会话,租户头、策略检查、状态更新或重路由用运行时感知拦截器。Deep Agents 需显式选择文件系统变更策略、后端协议、沙箱、子智能体行为与持久化;后台子智能体需要 LangSmith Deployment。

限制:资料未提供具体版本号、价格、平台支持范围与效果数据,暂未提供。