玩转 LangChain:从 Prompt 模板到多场景 AI 交互实战
2026/5/14 16:52:31 网站建设 项目流程

在大模型应用开发中,Prompt 工程是核心环节之一,而 LangChain 作为主流的大模型开发框架,为 Prompt 的灵活构建与调用提供了强大支撑。本文将结合实际代码案例,带你从基础 Prompt 模板到少样本(Few-Shot)提示模板,一步步掌握 LangChain 在多场景下的 AI 交互实战技巧。

一、LangChain 核心:Prompt 模板的基础认知

LangChain 的langchain_core.prompts模块提供了丰富的 Prompt 模板类,能够精准定义系统消息、人类消息、AI 消息的格式,让 Prompt 构建更结构化、可复用。核心优势在于:

  • 支持动态变量注入,适配不同输入场景;
  • 分离 Prompt 结构与业务数据,降低维护成本;
  • 兼容多类型消息格式,贴合大模型交互逻辑。

二、实战场景 1:多语言风格化翻译

翻译场景中,我们常需要适配不同源语言、目标语言和文本风格,基于 LangChain 的 Prompt 模板可高效实现这一需求。

核心代码实现

from langchain_core.prompts import SystemMessagePromptTemplate, HumanMessagePromptTemplate from langchain_openai import ChatOpenAI # 1. 定义系统提示模板(翻译角色与规则) system_template_text = "你是一位专业的翻译,能够将{input_language}翻译成{output_language},并且输出文本会根据用户要求的任何语言风格进行调整。请只输出翻译后的文本,不要有任何其它内容。" system_prompt_template = SystemMessagePromptTemplate.from_template(system_template_text) # 2. 定义人类提示模板(待翻译文本+风格要求) human_template_text = "文本:{text}\n语言风格:{style}" human_prompt_template = HumanMessagePromptTemplate.from_template(human_template_text) # 3. 初始化大模型(以通义千问为例) model = ChatOpenAI( model="qwen-plus", openai_api_key="sk-8639d557594c4fee9d34d27e76cff948", openai_api_base="https://dashscope.aliyuncs.com/compatible-mode/v1" ) # 4. 多组输入批量翻译 input_variables = [ { "input_language": "汉语", "output_language": "汉语", "text": "勿以善小而不为,勿以恶小而为之。", "style": "白话文" }, { "input_language": "法语", "output_language": "英语", "text": "Je suis désolé pour ce que tu as fait", "style": "古英语" }, { "input_language": "俄语", "output_language": "意大利语", "text": "Сегодня отличная погода", "style": "网络用语" }, { "input_language": "韩语", "output_language": "日语", "text": "너 정말 짜증나", "style": "口语" } ] # 执行翻译并输出结果 for input in input_variables: system_prompt = system_prompt_template.format( input_language=input["input_language"], output_language=input["output_language"] ) human_prompt = human_prompt_template.format( text=input["text"], style=input["style"] ) response = model.invoke([system_prompt, human_prompt]) print(f"【输入】{input['text']}") print(f"【输出】{response.content}\n")

关键要点

  • SystemMessagePromptTemplate定义 AI 的角色与核心规则,确保翻译行为的一致性;
  • HumanMessagePromptTemplate接收用户的动态输入(文本、风格),灵活适配不同翻译需求;
  • 批量处理输入变量时,只需循环注入参数,无需重复定义 Prompt 结构,提升开发效率。

三、实战场景 2:少样本(Few-Shot)客户信息格式化

当需要 AI 按照固定格式处理数据时,Few-Shot 提示模板能通过示例让 AI 快速理解格式要求,无需复杂的规则定义。

核心代码实现

from langchain_core.messages import HumanMessage from langchain_core.prompts import FewShotChatMessagePromptTemplate, ChatPromptTemplate from langchain_openai import ChatOpenAI # 1. 定义单条示例的Prompt模板 example_prompt = ChatPromptTemplate.from_messages( [ ("human", "格式化以下客户信息:\n姓名 -> {customer_name}\n年龄 -> {customer_age}\n 城市 -> {customer_city}"), ("ai", "##客户信息\n- 客户姓名:{formatted_name}\n- 客户年龄:{formatted_age}\n- 客户所在地:{formatted_city}") ] ) # 2. 准备示例数据(让AI学习格式) examples = [ { "customer_name": "张三", "customer_age": "27", "customer_city": "长沙", "formatted_name": "张三", "formatted_age": "27岁", "formatted_city": "湖南省长沙市" }, { "customer_name": "李四", "customer_age": "42", "customer_city": "广州", "formatted_age": "42岁", "formatted_city": "广东省广州市" }, ] # 3. 构建Few-Shot提示模板 few_shot_template = FewShotChatMessagePromptTemplate( example_prompt=example_prompt, examples=examples, ) # 4. 组合最终Prompt(示例+新输入) final_prompt_template = ChatPromptTemplate.from_messages( [ few_shot_template, ("human", "{input}"), ] ) # 5. 注入新的客户信息并调用模型 final_prompt = final_prompt_template.invoke({ "input": "格式化以下客户信息:\n姓名 -> 王五\n年龄 -> 31\n 城市 -> 郑州" }) model = ChatOpenAI( model="qwen-plus", openai_api_key="sk-8639d557594c4fee9d34d27e76cff948", openai_api_base="https://dashscope.aliyuncs.com/compatible-mode/v1" ) response = model.invoke(final_prompt) print(response.content)

关键要点

  • FewShotChatMessagePromptTemplate封装示例数据和示例模板,让 AI 通过示例学习格式规则;
  • 示例数据只需贴合目标格式,无需额外说明,符合大模型的学习特性;
  • 新输入只需按统一格式传入,AI 会自动沿用示例的格式化逻辑。

四、实战场景 3:定制化角色交互(数学课助教)

除了结构化 Prompt,LangChain 也支持直接通过消息列表定义 AI 角色,实现轻量化的定制化交互。

核心代码实现

from langchain_openai import ChatOpenAI from langchain_core.messages import HumanMessage, SystemMessage # 初始化模型 model = ChatOpenAI( model="qwen-plus", openai_api_key="sk-8639d557594c4fee9d34d27e76cff948", openai_api_base="https://dashscope.aliyuncs.com/compatible-mode/v1", temperature=1.2, # 调整随机性,值越高回答越灵活 max_tokens=300 # 限制回答长度 ) # 定义角色与问题 messages = [ SystemMessage(content="请你作为我的数学课助教,用通俗易懂且直接的语言帮我解释数学原理。"), HumanMessage(content="什么是傅里叶级数?"), ] # 调用模型并输出 response = model.invoke(messages) print(response.content)

关键要点

  • SystemMessage直接定义 AI 的角色定位(数学课助教)和回答风格(通俗易懂、直接);
  • temperature参数控制回答的随机性,知识性场景可适当降低,创意场景可提高;
  • max_tokens限制输出长度,避免回答过于冗长。

五、总结与拓展

LangChain 的 Prompt 模板体系覆盖了从简单角色定义到复杂少样本提示的全场景需求,核心价值在于:

  1. 结构化:分离 Prompt 结构与业务数据,降低耦合度;
  2. 复用性:模板可多次调用,适配批量处理场景;
  3. 灵活性:支持动态变量、多语言风格、少样本学习,适配不同业务需求。

在实际开发中,可结合场景进一步优化:

  • 针对复杂场景,可组合多种 Prompt 模板(如 System+Few-Shot+Human);
  • 调整模型参数(temperature、max_tokens)适配不同交互需求;
  • 结合 LangChain 的其他模块(如记忆、工具调用),构建更复杂的 AI 应用。

掌握 LangChain 的 Prompt 模板技巧,能让大模型交互从 “零散的文本指令” 升级为 “结构化的工程化方案”,大幅提升开发效率与交互效果。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询