03 提示词模板与 Chains tags:/n - langchain提示词ChainsLCEL面试aliases:/n - Prompt Template链式调用03 提示词模板与 Chains一、提示词模板通过模板将变量插入 Prompt创建灵活的提示词。ChatPromptTemplate 示例 ChatPromptTemplate 演示 运行方式python 03_提示词模板.py fromlangchain_core.promptsimportChatPromptTemplatefromlangchain_openaiimportChatOpenAIimportosfromdotenvimportload_dotenv load_dotenv()# 构造提示词模板chat_prompt_templateChatPromptTemplate.from_messages([(system,你是一个专业的评论员),(human,请评价{product}的优缺点包括{aspect1}和{aspect2}。),])# 填充变量chat_message_listchat_prompt_template.invoke({product:iPhone 15,aspect1:性能,aspect2:外观,})# 调用模型llmChatOpenAI(modelqwen-plus,base_url...,api_key...)respllm.invoke(chat_message_list)print(resp.content)二、Runnable 接口LangChain 所有组件都实现了Runnable 接口统一调用方式。方法说明invoke()同步单次调用ainvoke()异步调用stream()流式调用batch()批次调用三、Chains链3.1 LCELLangChain 表达式语言使用管道符|将多个 Runnable 组件串联 LCEL 管道式组合演示 运行方式python 03_LCEL基础.py fromlangchain_core.promptsimportPromptTemplatefromlangchain_openaiimportChatOpenAIfromlangchain_core.output_parsersimportStrOutputParser llmChatOpenAI(modelqwen-plus,base_url...,api_key...)prompt_templatePromptTemplate(template讲一个关于{topic}的笑话,input_variables[topic],)parserStrOutputParser()# LCEL 管道式组合chainprompt_template|llm|parser# 一次调用自动串联执行respchain.invoke({topic:人工智能})print(resp)3.2 RunnableParallel并行执行 RunnableParallel 演示同一句话翻译成不同语言 运行方式python 03_RunnableParallel.py fromlangchain_core.promptsimportPromptTemplatefromlangchain_openaiimportChatOpenAIfromlangchain_core.runnablesimportRunnableParallelfromlangchain_core.output_parsersimportStrOutputParser llmChatOpenAI(modelqwen-plus,base_url...,api_key...)# 两个并行的翻译链english_chain(PromptTemplate.from_template(翻译成英文: {topic})|llm|StrOutputParser())korean_chain(PromptTemplate.from_template(翻译成韩文: {topic})|llm|StrOutputParser())# 并行执行map_chainRunnableParallel(englishenglish_chain,koreankorean_chain)respmap_chain.invoke({topic:人工智能是一种智能技术})print(resp)# {english: ..., korean: ...}3.3 LCEL 并行语法糖 LCEL 并行语法糖两个模型赏析同一首诗 运行方式python 03_LCEL并行.py llmChatOpenAI(modelqwen-plus,base_url...,api_key...)paragraph_1_chain(PromptTemplate.from_template(赏析这首诗{poem})|llm|StrOutputParser())paragraph_2_chain(PromptTemplate.from_template(从哲学角度分析这首诗{poem})|llm|StrOutputParser())summary_chain(PromptTemplate.from_template(对比这两种赏析{paragraph_1} 和 {paragraph_2})|llm|StrOutputParser())# LCEL 并行语法map_chain{paragraph_1:paragraph_1_chain,paragraph_2:paragraph_2_chain,}|summary_chain poem菩提本无树明镜亦非台本来无一物何处惹尘埃。respmap_chain.invoke({poem:poem})print(resp)相关笔记[[01-LangChain概述]] · [[02-Model-IO与模型调用]] · [[04-RAG检索增强]] · [[05-Agents智能体]]