【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 标准链式写法,现代项目优先用

九、运行效果示例

复制代码
王雨桐
赵思雅
相关推荐
易小染16 小时前
AI-Agent学习-LangChain-01
学习·langchain
字节跳动开源16 小时前
你的 Agent 每次都“失忆”?这个工具彻底治好了我的前端开发焦虑
大数据·开源·agent
颜酱18 小时前
LangChain 输出解析器:把模型回复变成你要的数据
python·langchain
Python私教19 小时前
给AI代理选大脑:别只盯着『谁最强』,这6个维度才决定上限
agent·ai编程·claude
leeyi19 小时前
多租户隔离:一条 RLS 策略怎么防数据串
llm·agent
leeyi19 小时前
长期记忆:Agent 怎么“记住“用户
llm·agent
leeyi20 小时前
工具调用:Agent 的手和眼
llm·agent
leeyi20 小时前
多 LLM Provider:不改一行业务代码换模型
llm·agent
leeyi20 小时前
SSE 实时推流 —— Token 怎么一个个蹦出来
后端·agent
凌奕20 小时前
微信小程序接入微信 AI:让用户"说一句话"就能下单
微信·微信小程序·agent