Skip to main content

通用提示词模板

通用prompt(zero-shot)​

提示词优化在模型应用中非常重要,LangChain提供了 PromptTemplate 类,用来协助优化提示词。

PromptTemplate 表示提示词模板,可以构建一个自定义的基础提示词模板,支持变量的注入,最终生成所需的提示词。

标准写法​

import os
import logging
from langchain_community.llms.tongyi import Tongyi
from langchain_core.prompts import PromptTemplate
from dotenv import load_dotenv

load_dotenv()
DASHSCOPE_API_KEY = os.getenv('LLM_API_KEY')

# 基础日志配置
logging.basicConfig(
level=logging.INFO,format='%(asctime)s - %(levelname)s - %(message)s'
)
logger = logging.getLogger(__name__)

prompt_template = PromptTemplate.from_template(
"我的邻居姓{lastname},刚生了{gender},你帮我取个名字,简洁回答。"
)
prompt_text = prompt_template.format(lastname="张", gender="女儿")
logger.info("生成的提示词: %s", prompt_text)

model = Tongyi(model="qwen-max",api_key=DASHSCOPE_API_KEY)
res = model.invoke(input=prompt_text)
logger.info("大模型回复: %s",res)

基于chain链的写法​

import os
import logging
from langchain_community.llms.tongyi import Tongyi
from langchain_core.prompts import PromptTemplate
from dotenv import load_dotenv

load_dotenv()
DASHSCOPE_API_KEY = os.getenv('LLM_API_KEY')

# 基础日志配置
logging.basicConfig(level=logging.INFO,format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)

prompt_template = PromptTemplate.from_template(
"我的邻居姓{lastname},刚生了{gender},你帮我取个名字,简洁回答。"
)
prompt_text = prompt_template.format(lastname="张", gender="女儿")
logger.info("生成的提示词: %s", prompt_text)

model = Tongyi(model="qwen-max",api_key=DASHSCOPE_API_KEY)

chain = prompt_template | model
logger.info("打印chain看一下: %s",chain)

res = chain.invoke(input={"lastname":"张","gender":"女儿"})
logger.info("大模型回复: %s",res)


总结​

基于PromptTemplate类可以得到提示词模板,支持基于模板注入 变量得到最终提示词。

  • zero-shot 思想下,可以基于 PromptTemplate 直接完成。
  • few-shot 思想下,需要更换为 FewShotPromptTemplate
信息

使用 PromptTemplate 还不如自己手动拼接字符串?

1.使用Template模板构建提示词,在大型工程中更容易做标准化模板

2.Template模板类,支持LangChian框架的链式调用 (Runnable接口)

  • PromptTemplate
  • FewShotPromptTemplate
  • ChatPromptTemplate