LangChain 学习笔记 · Day 2 PromptTemplate

LangChain PromptTemplate 使用指南,包括基本语法、多变量模板、实战练习和 API Key 管理最佳实践
12 分钟阅读
LangChainPythonPromptTemplate邮件生成器API管理

🎯 学习目标

  1. 理解 PromptTemplate 的作用和语法
  2. 学会通过参数化模板来复用 Prompt
  3. 编写一个小应用 —— 邮件生成器 / 摘要器
  4. 学习如何安全地管理 API Key(环境变量 & 配置文件)

🔹 1. 什么是 PromptTemplate?

  • 定义:带变量的 Prompt 模板
  • 作用
    • 把 Prompt 和业务逻辑分开
    • 通过占位符插入动态变量
    • 避免每次都写完整的 prompt

👉 类似 Python 的 f-string,但专门用于 LLM。


🔹 2. 基本用法

from langchain.prompts import PromptTemplate

prompt = PromptTemplate(
    input_variables=["product"],
    template="请为这个产品写一句广告词:{product}"
)

print(prompt.format(product="LangChain 学习计划"))

输出:

请为这个产品写一句广告词:LangChain 学习计划

🔹 3. 和模型结合

from langchain_openai import ChatOpenAI
from langchain.prompts import PromptTemplate
from langchain_core.output_parsers import StrOutputParser

llm = ChatOpenAI(
    model="kimi-k2-0711-preview",
    temperature=0.7,
    # 如果已配置环境变量,则无需传 api_key / base_url
)

prompt = PromptTemplate(
    input_variables=["product"],
    template="请为这个产品写一句广告词:{product}"
)

chain = prompt | llm | StrOutputParser()
print(chain.invoke({"product": "智能写作助手"}))

输出示例:

智能写作助手,让灵感随时涌现!

🔹 4. 多变量模板

prompt = PromptTemplate(
    input_variables=["job", "skill"],
    template="请写一段简历介绍,职位是{job},突出技能是{skill}"
)

print(prompt.format(job="前端工程师", skill="Vue3 + Nuxt3"))

🔹 5. 实战练习:邮件生成器

prompt = PromptTemplate(
    input_variables=["recipient", "subject", "content"],
    template=(
        "写一封邮件给 {recipient},主题是「{subject}」。"
        "邮件内容要包含:{content}。"
        "请用正式礼貌的语气。"
    )
)

print(prompt.format(
    recipient="客户王先生",
    subject="项目进度汇报",
    content="项目已完成 80%,预计下周交付"
))

🔹 6. API Key 管理最佳实践

方法一:系统环境变量(推荐)

export OPENAI_API_KEY="你的_KIMI_API_KEY"
export OPENAI_BASE_URL="https://api.moonshot.cn/v1"

代码中直接使用:

llm = ChatOpenAI(model="kimi-k2-0711-preview")

方法二:.env 文件 + python-dotenv

.env 文件:

OPENAI_API_KEY=你的_KIMI_API_KEY
OPENAI_BASE_URL=https://api.moonshot.cn/v1

Python 代码:

from dotenv import load_dotenv
load_dotenv()
llm = ChatOpenAI(model="kimi-k2-0711-preview")

方法三:集中配置

config.py 里统一管理,再导入使用。


⚠️ 今日收获 & 注意事项

  1. PromptTemplate 提升了 Prompt 的复用性和可维护性
  2. LCEL 写法 (prompt | llm | parser) 是未来推荐的写法
  3. API Key 不要写死在代码里,推荐 .env + 环境变量
  4. 实战练习:邮件生成器 / 简历助手 / 摘要器

⏭️ Day 3 展望

  • 学习 Chains 的使用方法
  • 串联多个 Prompt & 模型调用
  • 实现一个多步骤应用(如翻译 → 总结)