【Agent智能体项目实战五】LangChain 提示词模板(PromptTemplate)极简实战:两种调用方式详解

一、前言

在使用大模型进行开发时,提示词模板 是最基础、最常用的功能。

本文以通义千问 + LangChain 为例,用一段最简单的宝宝起名代码,带你彻底搞懂:

  • 什么是 PromptTemplate
  • 如何定义带参数的提示词
  • format 手动调用
  • LCEL 链式调用(prompt | model
  • 流式输出与普通调用

全程只解析你给出的代码,不额外扩展,保证原汁原味、一看就会。


二、环境依赖

先安装必须的包:

bash 复制代码
pip install langchain langchain-core langchain-community dashscope

三、完整代码

python 复制代码
import os
from langchain_core.prompts import PromptTemplate
from langchain_community.llms.tongyi import Tongyi

# 设置 dashscope api key
os.environ["DASHSCOPE_API_KEY"] = "sk-你的API_KEY"
model = Tongyi(model="qwen-max")

# 方法一
prompt = PromptTemplate.from_template(
    "我的孩子姓{last_name}是个{gender},帮我生成一个名字,简单回答"
)

# 调用.format方法,传入参数
prompt_text = prompt.format(last_name="王", gender="女")

# 使用stream方法流式输出
for chunk in model.stream(input=prompt_text):
    print(chunk, end="", flush=True)

# 方法二
chain = prompt | model
res = chain.invoke({"last_name": "赵", "gender": "女"})
print(res)

四、逐行代码解析

1. 导入模块

python 复制代码
import os
from langchain_core.prompts import PromptTemplate
from langchain_community.llms.tongyi import Tongyi
  • os:用于设置环境变量,存放 API Key
  • PromptTemplate:LangChain 最基础提示词模板类,用于做参数化提示
  • Tongyi:通义千问大模型封装,属于 langchain-community

2. 设置 API Key 并初始化模型

python 复制代码
os.environ["DASHSCOPE_API_KEY"] = "sk-你的API_KEY"
model = Tongyi(model="qwen-max")
  • 将通义千问的 API Key 写入环境变量,供模型调用
  • Tongyi(model="qwen-max") 初始化大模型,使用qwen-max版本

3. 定义提示词模板

python 复制代码
prompt = PromptTemplate.from_template(
    "我的孩子姓{last_name}是个{gender},帮我生成一个名字,简单回答"
)

这是本文核心

  • PromptTemplate.from_template():从字符串创建提示模板
  • {last_name}{gender}参数占位符,后续可动态传入
  • 好处:提示词结构固定,只变参数,便于复用、维护

五、方法一:format + stream 手动调用

1. 格式化提示词

python 复制代码
prompt_text = prompt.format(last_name="王", gender="女")
  • .format():把参数填入模板,生成最终完整提示词字符串

  • 等价于:

    "我的孩子姓王是个女,帮我生成一个名字,简单回答"

2. 流式输出

python 复制代码
for chunk in model.stream(input=prompt_text):
    print(chunk, end="", flush=True)
  • model.stream()流式调用,逐字返回结果
  • 优点:不用等全部生成完,实时输出,体验更流畅
  • end=""flush=True 保证字一个接一个打出,不换行、不卡顿

六、方法二:LCEL 链式调用(推荐)

python 复制代码
chain = prompt | model
res = chain.invoke({"last_name": "赵", "gender": "女"})
print(res)

这是 LangChain 现代标准写法

  • prompt | model:把模板模型直接连成一条调用链
  • 内部自动完成:
    1. 模板接收参数
    2. 自动 format
    3. 传给模型
    4. 返回结果
  • chain.invoke({...}):直接传入参数字典,一行调用

七、两种方法对比(总结)

方式 写法 优点 适用场景
format + stream 手动拼接,循环输出 灵活、可控、流式展示 界面实时输出、聊天界面
prompt|model|invoke 链式调用,简洁 代码极简、易读、易维护 业务逻辑、后台接口、批量调用

八、核心知识点(必看)

  1. PromptTemplate 作用:把提示词参数化
  2. {参数名} 是占位符,用 formatinvoke 传参
  3. stream 用于流式输出,体验更好
  4. prompt | model 是 LangChain 标准链式写法,现代项目优先用

九、运行效果示例

复制代码
王雨桐
赵思雅
相关推荐
KaneLogger3 分钟前
如何提升模型编码能力
agent·ai编程
louiX8 分钟前
初级 AI Agent 工程师
langchain·agent·客户端
阿珊和她的猫1 小时前
从实践中提炼的架构设计与工程规范
ai·agent·llama·cli·mcp
幸福巡礼1 小时前
【LangChain 1.2 实战(六)】 工具调用 (Function Calling)
langchain
大山同学2 小时前
Feynman—证据驱动的 AI 研究代理
人工智能·agent·智能体
欧雷殿2 小时前
跨设备自动化:家庭 AI 工作台的首个小目标
后端·agent·aiops
DigitalOcean2 小时前
AI变智能体,传统云不够用了:成本降67%,延迟降40%的新解法
aigc·agent
Irissgwe4 小时前
LangChain之核心组件(少样本提示词)
人工智能·langchain·llm·langgraph
python零基础入门小白4 小时前
从0到1:手把手教你用Coze打造AI Agent,小白也能转行AI!
人工智能·学习·程序员·大模型·agent·产品经理·ai大模型
johnny2335 小时前
多智能体协作:Edict、Open Multi-Agent、Agora
agent