当前位置:首页>python>langchain,一个成熟的 Python 库

langchain,一个成熟的 Python 库

  • 2026-10-11 07:56:02
langchain,一个成熟的 Python 库

大家好,我是木木。

今天给大家分享一个成熟的 Python 库,langchain。

langchain

做 LLM 应用时,真正麻烦的往往不是“调用一次模型”,而是把 Prompt、模型、工具、解析器、记忆、检索和业务流程串成一条稳定链路。langchain 的定位就是帮你做这件事:把 AI 能力拆成可组合组件,再按流程编排起来。

它现在也在向 Agent 工程平台演进,所以更适合讲“让 AI 调工具、走流程、接业务系统”这类需求。简单问答可以不用它,但只要流程开始变长,它的组合能力就很有价值。

项目地址:https://github.com/langchain-ai/langchain

官方文档:https://docs.langchain.com/

三大特点

组件成熟

Prompt、模型、输出解析、Runnable、工具、检索和 Agent 相关能力都已经形成比较完整的生态。

编排灵活

可以用 | 串联步骤,也可以并行分支、条件路由、批处理和流式输出,适合把复杂 AI 流程拆开维护。

生态丰富

大量模型、向量库、工具和观测系统都有现成集成,做原型和接业务系统都比较省时间。

最佳实践

安装方式:python -m pip install langchain==1.2.17

下面的 Demo 使用 langchain-core 里的 Runnable、Prompt 和 Parser,不调用真实 LLM,所以不会消耗 API 额度。

功能一:把 Prompt 和处理步骤串起来

这段代码解决什么问题:把“生成消息”和“模型/处理函数”拆成两个步骤,再用管道组合。真实项目里,fake_llm 可以换成模型客户端,链路结构不需要大改。

importwarningswarnings.filterwarnings('ignore')fromlangchain_core.promptsimportChatPromptTemplatefromlangchain_core.runnablesimportRunnableLambdaprompt=ChatPromptTemplate.from_messages([('system','你是一个技术选型助手。'),('human','用一句话介绍 {name}')])deffake_llm(value):user_text=value.to_messages()[-1].contentreturnf'收到任务:{user_text} -> 适合编排 AI 流程'chain=prompt|RunnableLambda(fake_llm)result=chain.invoke({'name':'LangChain'})print('result:',result)print('steps:',len(chain.steps))print('first step:',type(chain.steps[0]).__name__)print('second step:',type(chain.steps[1]).__name__)

这个模式的好处是边界清楚。Prompt 改 Prompt,模型改模型,后处理改后处理,不需要把所有逻辑揉成一个大函数。

功能二:并行跑多个分支

这段代码解决什么问题:同一份输入可以同时进入多个处理分支,比如摘要、打标签、判断是否需要调工具。这样适合做内容审核、路由判断和多指标分析。

importwarningswarnings.filterwarnings('ignore')fromlangchain_core.runnablesimportRunnableLambda,RunnableParalleltext='LangChain 可以把 prompt、模型、工具和解析器串起来'workflow=RunnableParallel(summary=RunnableLambda(lambdax:x['text'][:12]),length=RunnableLambda(lambdax:len(x['text'])),has_tool=RunnableLambda(lambdax:'工具'inx['text']),)result=workflow.invoke({'text':text})print('summary:',result['summary'])print('length:',result['length'])print('has tool:',result['has_tool'])print('branches:',', '.join(workflow.steps__.keys()))

多分支流程要注意成本。真实接模型时,每个分支可能都是一次请求,所以需要缓存、限流和明确的失败兜底。

环境与版本信息

  • Demo 环境:Windows 11,Python 3.11
  • 本文安装的 langchain 版本:1.2.17
  • 当前包要求 Python:>=3.10,<4.0
  • 关键依赖版本:langchain-core 1.3.3、langgraph 1.1.10
  • 官方定位:面向 agents 和 LLM-powered applications 的框架

高级功能

这段代码解决什么问题:LLM 返回的文本如果要进入业务流程,最好先解析成结构化结果。JsonOutputParser 可以给模型格式提示,也可以把 JSON 文本解析成可用对象。

importwarningswarnings.filterwarnings('ignore')frompydanticimportBaseModel,Fieldfromlangchain_core.output_parsersimportJsonOutputParserclassRoute(BaseModel):action:str=Field(description='下一步动作')confidence:float=Field(description='置信度')parser=JsonOutputParser(pydantic_object=Route)raw='{"action":"call_tool","confidence":0.91}'parsed=parser.parse(raw)print('raw:',raw)print('action:',parsed['action'])print('confidence:',parsed['confidence'])print('format hint starts with:',parser.get_format_instructions()[:36])

结构化解析不是银弹,但能减少“模型说得像对的,程序却不知道怎么用”的尴尬。上线时还要给解析失败、字段缺失和低置信度分支留处理逻辑。

适用场景

  • 你要把 Prompt、模型、工具和输出解析组成稳定流程
  • 你需要并行分支、路由、批处理、流式输出或 Agent 调度
  • 你希望快速接入不同模型、向量库、检索组件和观测系统

不适用场景

  • 只是一次简单问答或短文本生成,普通模型 SDK 就够了
  • 团队还没定义清楚流程边界,却想先堆一堆链式调用
  • 对延迟和成本特别敏感,但没有缓存、限流和降级策略

上线检查

  1. 每个 Runnable 的输入输出要清楚,避免链路中间靠隐式字段传来传去。
  2. 并行分支要评估调用次数、超时、缓存和失败兜底。
  3. 模型输出进入业务系统前,必须做结构化解析、校验和日志记录。

总结

langchain 适合把 LLM 应用从“单次调用”推进到“可维护流程”。它的核心价值不是替你写 Prompt,而是把 Prompt、模型、工具、解析器和运行流程变成可组合、可替换的工程结构。

最新文章

随机文章