一句话定位Langchain是什么
LangChain 是一个大模型应用开发框架(Python/JS),核心目标:把大语言模型(LLM)和外部能力串联起来,快速做复杂 AI 应用,而不只是简单调用接口。
你之前写的
StrOutputParser就是它里面的组件。
核心解决什么痛点
直接调用大模型 API 有局限:
- 模型知识是静态的,不知道你本地文件、数据库、网页内容
- 没法自动完成多步骤任务(比如:查文档→总结→翻译→输出 JSON)
- 不好管理历史对话、控制输出格式、调用工具
LangChain 提供现成组件帮你搞定这些。
实现最简单的一个大预言模型的调用
我们先要安装对应的库
openai,langchain
导入库
定义模型
定义消息
开始调用模型
我们调试一下
他给我们返回的是aimessage
response_metadata
接口给了你什么,这里就装什么
usage_metadata
LangChain 0.2+ 新增的标准属性,专门放 token 计费信息
他会给我们返回一大串的内容,如果只想要ai的回答
当然也可以用一些其他的组件
也可以用链来解决
大家会发现,不管是模型、提示模板、解析器,还是拼接好的整条链式流程,代码里都在调用invoke,这并不是巧合。
在 LangChain 中,所有实现了Runnable(可运行单元)抽象的组件,都对外提供一套统一的调用规范:
invoke:同步调用,传入输入并一次性获取完整结果stream:流式调用,分块返回输出,实现打字机效果batch:批量调用,支持多组输入并发执行
像对话模型ChatOpenAI、提示词模板ChatPromptTemplate、输出解析器StrOutputParser,以及用|组装出来的 LCEL 链路,全部都属于Runnable。这也是 LangChain 非常关键的设计思想:统一上层调用接口,屏蔽底层的接口差异。
原生开发时,不同大模型厂商的 SDK、API 调用方式各不相同:OpenAI、通义千问、Ollama 的原生请求写法、入参结构、返回格式都有区别。如果直接对接原生接口,切换模型就要大量修改调用逻辑、参数配置和结果解析代码,迁移成本很高。
而在 LangChain 里,各类模型都被封装成标准的Runnable对象。我们只需要修改模型实例化的那一小段代码,上层的业务逻辑、invoke调用方式完全不用改动,链式链路prompt | model | parser也可以直接复用,极大降低了切换模型的成本。
如何理解chain的调用呢?
就是将model调用的返回值,作为parser的参数
既然如此可以有下面两种调用方法