什么是langchain?它的核心特点是什么,有哪些应用场景
langchain的核心组件有哪些,每个组件有什么作用
langchain中的模型调用有几种方式,分别适用于什么场景
langchain中模型结构化输出有几种方式,分别是什么
什么是langchain中的智能体(Agent),它的工作原理和执行流程是什么
Agent的静态模型和动态模型有什么应用场景
Agent使用@tool创建工具有几种方式,分别是什么
Agent工具调用出现错误的时候应该如何处理
Agent的结构化输出有几种策略
- ProviderStrategy(原生结构化)
- 适用场景:追求极致准确率和最低延迟,且明确知道模型支持(OpenAI、Anthropic、Grok 等)。
- 底层原理:利用厂商 API 底层的 JSON Mode 或 Constrained Decoding(约束解码)。模型在推理过程中,每一步 Token 的生成都受到 Grammer(语法树)的限制,绝无格式解析失败的可能。
- 注意点:原生模式通常要求
prompt中明确指示“输出 JSON”,且对temperature有一定限制(部分厂商要求温度不等于0时效果打折)。
- ToolStrategy(虚拟工具兜底)
- 适用场景:兼容市面上 99% 支持 Function Calling 的开源或闭源模型(如 Llama 3、Qwen 等),是通用性最强的策略。
- 底层原理(核心亮点):系统在 Agent 内部注入一个名为
submit_final_output的虚拟工具。工具的parameters字段定义为你想要的 JSON Schema。模型不直接生成 JSON,而是生成调用该工具的指令(Tool Call),框架拦截这次调用,将参数中的字典提取出来作为最终结果。 - 面试加分项:这种方式的缺点是什么?—— 相比原生模式,它多了一步“生成工具调用”的逻辑,会多消耗少量 Token,且如果模型工具调用能力弱,可能输出不规范的参数值。
- Type(智能路由,最推荐)
- 用法:
response_format=MyPydanticModel。 - 自动决策逻辑:LangChain 内部会执行一个
if supports_native()判断。若模型在native_response_format列表中,走策略1;否则自动走策略2。 - 面试价值:这是工程最佳实践。它解耦了业务逻辑与底层模型,当未来更换更强模型时,无需修改代码,框架自动切换至最高效的方式。
- None(关闭结构化)
- 本质:不施加任何约束,流式或非流式返回纯文本。
- 使用提示:适用于需要 Agent 进行开放式聊天、头脑风暴,或者后续需要经过人机交互再提取字段的场景。
在实际业务落地中,Type 策略是最优雅的,兼顾了效率和兼容性。如果做高并发低延迟的 ToB 接口,我会固定使用 ProviderStrategy 并做好错误熔断;如果是本地部署的开源模型,ToolStrategy 是最稳妥的兜底方案。切记:不要为了结构化而牺牲模型本身的思考自由度,在需要 Agent 规划复杂步骤时,先设为 None,仅在最终输出答案的那一刻施加约束。