【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. {参数名} 是占位符,用 format 或 invoke 传参
  3. stream 用于流式输出,体验更好
  4. prompt | model 是 LangChain 标准链式写法,现代项目优先用

九、运行效果示例

复制代码
王雨桐
赵思雅
相关推荐
墨心@11 分钟前
AskUserQuestion 工具
agent·coding agent·harness·zcode
SharpCJ1 小时前
Koog(4)—— Agent Skills 和 Tools
llm·agent
七夜zippoe1 小时前
Agent 事件驱动架构:从轮询到事件触发的架构升级
ai·架构·agent·轮询·事件驱动·事件触发
for_ever_love__1 小时前
LangChain Token 计数与成本控制:先知道钱花在哪
开发语言·langchain
Sand(ContextGate)1 小时前
从开发者调试工具到消费级 App:一个 AI 电商导购项目的 C 端改造与 6 个连环踩坑实录
开发语言·人工智能·python·ai·langchain
丨白色风车丨2 小时前
LangChain 1.0 核心用法速查:创建模型、创建 Agent、调用
数据库·langchain
yuzhiboyouye2 小时前
longchain就像已做好的项目和大模型的连接器一样
agent
yuzhiboyouye2 小时前
langchain和spring-boot功能上有什么区别
agent
笑小枫3 小时前
AgentScope 学习系列 - 04:Tool 工具调用实战
agent·智能体开发·agentscope·java开发智能体
为你学会写情书3 小时前
别再让你的 Agent 当“黑盒”了:LangSmith 如何用可观测性、评估和洞察闭环驯服生产级智能体
agent