langchain快速入门基本组件介绍和快速搭建服务1. 模型组件load_dotenv()llmChatOpenAI(api_keyos.getenv(DASHSCOPE_API_KEY),base_urlos.getenv(BASE_URL),modelos.getenv(LLM_MODEL),temperature0.1,)text你是谁messages[HumanMessage(contenttext)]if__name____main__:# LLM模型组件:输入为字符串# print(llm.invoke(text))# CHAT MODEL模型组件print(llm.invoke(messages))LangChain 将大语言模型抽象为两种调用方式LLM 接口接受纯字符串输入适合简单文本生成场景。底层调用的是模型的completion端点。Chat Model 接口接受结构化消息列表SystemMessage/HumanMessage/AIMessage更适合对话场景。底层调用的是模型的chat.completion端点。选型建议现代模型GPT-4、通义千问、Claude 等普遍基于 Chat API 设计建议优先使用ChatOpenAI而非 legacy 的LLM类。2. 提示词模板组件importosfromdotenvimportload_dotenvfromlangchain_openaiimportChatOpenAIfromlangchain_core.messagesimportHumanMessagefromlangchain_core.promptsimportPromptTemplatefromlangchain_core.promptsimportChatPromptTemplate load_dotenv()llmChatOpenAI(api_keyos.getenv(DASHSCOPE_API_KEY),base_urlos.getenv(BASE_URL),modelos.getenv(LLM_MODEL),temperature0.1,)#自动将用户的输入转换为完整的格式化提示词promptPromptTemplate.from_template(猫得了{disease}怎么办)prompt_1prompt.format(disease拉肚子)#细化每条消息的具体消息比如角色和列表中的位置template你是一个宠物医疗AI助手human_template我的宠物{pet_type}名为{name},出现{symptoms}chat_promptChatPromptTemplate.from_messages([(system,template),(human,human_template),])prompt_2chat_prompt.format_messages(pet_type猫,name臭臭,symptoms牙结石)if__name____main__:print(**50)print(llm.invoke(prompt_1))print(**50)print(llm.invoke(prompt_2))LangChain 提供了两种提示词模板分别对应不同的交互模式模板类型适用场景特点PromptTemplate单轮指令/文本生成字符串模板通过.format()注入变量输出为字符串ChatPromptTemplate多轮对话/角色扮演消息列表模板支持system/human/ai角色定义输出为消息对象列表关键区别PromptTemplate解决的是**“如何优雅地拼接字符串”**——避免在代码里硬编码大量提示词文本。ChatPromptTemplate解决的是**“如何结构化地管理对话上下文”**——通过角色标签让模型明确区分系统指令和用户输入显著提升指令遵循的稳定性。3. 输出解析器组件 / 使用 LCEL 进行组合importosfromdotenvimportload_dotenvfromlangchain_openaiimportChatOpenAIfromlangchain_core.promptsimportChatPromptTemplatefromlangchain_core.output_parsersimportBaseOutputParserfromtypingimportList load_dotenv()llmChatOpenAI(api_keyos.getenv(DASHSCOPE_API_KEY),base_urlos.getenv(BASE_URL),modelos.getenv(LLM_MODEL),temperature0.1,)classCommaSeperatedListOutputParser(BaseOutputParser[List[str]]):defparse(self,text:str)-List[str]:returntext.strip().split(,)template 你是一个智能ai医疗助手用户会传入一个宠物的症状你应该生成该症状下的3种药品(中文名)并以英文逗号分分隔的形式返回. 只返回以逗号分隔的内容不要返回其他内容。 human_template{text}chat_promptChatPromptTemplate.from_messages([(system,template),(human,human_template)])if__name____main__:chainchat_prompt|llm|CommaSeperatedListOutputParser()print(**50)print(chain.invoke({text:猫咪软便}))print(**50)LCELLangChain Expression Language是 LangChain 的管道编排语法用|运算符将组件串联成可执行的数据流。本例的数据流转过程用户输入 {text: 猫咪软便} ↓ chat_prompt 渲染为结构化消息 → [SystemMessage, HumanMessage] ↓ llm 调用模型生成文本 → 蒙脱石散,益生菌,克痢肽 ↓ CommaSeperatedListOutputParser 解析 → [蒙脱石散, 益生菌, 克痢肽]为什么要自定义输出解析器模型本质上输出的是非结构化文本。输出解析器的作用是将文本转换为结构化数据如列表、字典、Pydantic 对象方便下游程序直接消费。这是构建可靠 AI 应用的关键环节——提示词要求模型按格式输出只是软性约束解析器则提供了硬性的数据校验和转换。4. 使用 LangSmith 观测LangSmith 是 LangChain 官方提供的 LLM 应用可观测性平台核心价值在于解决大模型应用的黑盒问题Trace 追踪可视化展示 Chain 中每一步的输入输出、Token 消耗、延迟耗时调试排错当输出不符合预期时可逐层检查是提示词渲染错误、模型理解偏差还是解析器逻辑问题数据沉淀自动收集生产环境的调用记录为后续迭代提供高质量的标注数据配置方式在环境变量中设置LANGCHAIN_API_KEY和LANGCHAIN_PROJECT无需修改代码即可自动接入。5. 使用 LangServe 提供服务importosfromdotenvimportload_dotenvfromlangchain_openaiimportChatOpenAIfromlangchain_core.promptsimportChatPromptTemplatefromlangchain_core.output_parsersimportBaseOutputParserfromtypingimportListfromlangserveimportadd_routesfromfastapiimportFastAPI load_dotenv()llmChatOpenAI(api_keyos.getenv(DASHSCOPE_API_KEY),base_urlos.getenv(BASE_URL),modelos.getenv(LLM_MODEL),temperature0.1,)classCommaSeperatedListOutputParser(BaseOutputParser[List[str]]):defparse(self,text:str)-List[str]:returntext.strip().split(,)template 你是一个智能ai医疗助手用户会传入一个宠物的症状你应该生成该症状下的3种药品(中文名)并以英文逗号分分隔的形式返回. 只返回以逗号分隔的内容不要返回其他内容。 human_template{text}chat_promptChatPromptTemplate.from_messages([(system,template),(human,human_template)])appFastAPI(title宠物医疗助手v1,version0.0.1,descriptionLangchain应用接口)first_chainchat_prompt|llm|CommaSeperatedListOutputParser()add_routes(app,first_chain,path/first_app)if__name____main__:importuvicorn uvicorn.run(app,hostlocalhost,port8000)LangServe 是 LangChain 的部署工具核心能力是将 LCEL Chain 一键转换为 FastAPI 服务。它自动完成以下工作能力说明路由注册将Chain.invoke映射为 HTTP POST 接口输入校验基于 Chain 的输入 Schema 自动生成 Pydantic 校验文档生成自动生成 OpenAPI 文档和交互式 Playground流式支持原生支持stream/astream等异步流式接口访问路径API 端点POST http://localhost:8000/first_app/invoke调试界面http://localhost:8000/first_app/playground/⚠️注意add_routes会自动暴露invoke、batch、stream等多个端点生产环境建议通过enable_feedback_endpoint等配置进行访问控制。好了以下就是今天介绍的所有内容本文仅仅简单介绍了基本组件介绍和快速搭建服务