ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

LangChain 从入门到实战(02):用三个最小件,跑通第一次真实调用

LangChain 从入门到实战(02):用三个最小件,跑通第一次真实调用 LangChain 从入门到实战02用三个最小件跑通第一次真实调用上一篇我们认识了 LangChain 的核心组件。这一篇直接动手用最小的三个部件——ChatModel、PromptTemplate、OutputParser——把一次真实的模型调用跑通并看清它们各自负责什么。你会得到一个自己就能跑、能改接到任意 OpenAI 兼容端点的最小脚本并理解|管道为什么能一路串下去。一、最小三件套跑通一遍先看完整代码。环境要求Python 3.10执行pip install langchain langchain-openai若用.env管理密钥再pip install python-dotenv。importosfromdotenvimportload_dotenv# 若不用 .env 可删掉这两行load_dotenv()fromlangchain_openaiimportChatOpenAIfromlangchain_core.promptsimportChatPromptTemplatefromlangchain_core.output_parsersimportStrOutputParser# ① 模型llmChatOpenAI(modelos.getenv(LLM_MODEL,gpt-4o),api_keyos.getenv(OPENAI_API_KEY),temperature0,)# ② 提示词模板带变量可复用promptChatPromptTemplate.from_template(你是资深{role}工程师。用三句话回答{question})# ③ 输出解析器这是最朴素的字符串输出parserStrOutputParser()# 用 LCEL 管道把三块串成一条可调用链chainprompt|llm|parser# ④ 调用resultchain.invoke({role:Java 后端,question:什么是幂等})print(result)把OPENAI_API_KEY放进环境变量或.env再跑你会收到一段面向 Java 后端的幂等说明。注意chain.invoke传的是一个字典键就是要填充的模板变量——这是整条链统一的输入接口。二、三个零件各负责什么本篇重点① ChatModel —— 对外适配ChatOpenAI屏蔽了向谁发消息、怎么鉴权、走什么协议。你要换模型供应商时通常只换这一个类的实现prompt与parser几乎不用动。这就是换供应商不换业务代码的原点对应 Java 里面向接口编程。② PromptTemplate —— 输入格式化ChatPromptTemplate.from_template把模板串里的{role}、{question}变成占位符之后通过invoke({...})传字典填充。好处是不在代码里用f-string去拼提示词避免缺空格、换行、意外注入模板本身还能被复用和版本化。补充一点给下篇埋线索from_template生成的是单条用户human消息如果你想让模型扮演某个 system 角色设定语气/规则需要用到from_messages来定义多条消息。这个我们放到第 03 篇专门讲。③ OutputParser —— 输出还原StrOutputParser是最基础的一档它只做一件事从模型返回里取出文本内容段不把消息包裹或元数据带出来。之后我们会看到它换成PydanticOutputParser后能把输出直接解析成强类型的对象——那是让链进生产的关键一步。三者的主循环一句话**模型负责生成内容模板负责加工输入解析器负责还原输出。**它们之间靠|这条水管衔接。三、为什么是管道符chain prompt | llm | parser读作数据从prompt流进llm再从llm流进parser。这是 LangChain 的LCELLangChain Expression Language核心是把每个部件抽象成统一的输入 → 输出再用管道任意组合。管道带来的立刻价值可复用chain本身是一个能反复invoke()的对象可插入想加记忆、检索、后处理都在|之间塞一个新件即可可组合prompt可单独测试llm可单独调试整条链还可作为构件转给更大的链。对 Java 后端来说这很像把一次调用的输入输出抽象成接口再用责任链串联——只是这次链接的不是 Java 方法而是模型 周边的组件。四、工程化对照Java 视角配置外置api_key、model放环境变量 /.env别写死在代码里——跟你用Value/profile 一回事。尽早用结构化解析别只满足于字符串输出把答案收进Pydantic模型成为强类型结构化输出是生产友好代码的核心。链可测invoke进出都是纯数据天然适合做单元测试。小结部件职责一句话ChatModel管跟哪个模型、怎么调用的适配PromptTemplate管输入怎么格式化的模板OutputParser管输出怎么还原成结构LCEL 管道把三者串成可复用、可替换、可测试的链下一篇预告第 03 篇把ChatPromptTemplate拆开——多消息格式system/human、few-shot 示例、绑定结构化输出JSON等真正能上生产的提示词技巧让提示词从一段静态文本变成一个可被管理的组件。
返回列表