一.原则:想要写出优秀的提示词其实不难,只需按照以下规范书写即可
1. 立角色:引导AI进入具体场景,赋予其行家身份
2. 述问题:告诉AI你的困惑或问题、以及背景信息
3. 定目标:告诉AI你的需求,希望达成的目标
4. 补要求:告诉AI回答时注意什么、或如何回复
二.langchain字符串提示词模板样例
from langchain.prompts import PromptTemplate ##字符串模板 prompt = PromptTemplate.from_template(""" 你是一个算命大师,请根据出生年月:{year}年{month}月,给这个名字{name}算命,算命依据周易算命来计算,按列表形式输出。 """) pmt=prompt.format(name="张三",year="1990",month="11") pmt_list=prompt.format_prompt(name="张三",year="1990",month="11") print(pmt) print(pmt_list)
三.langchain聊天提示词模板样例
from langchain.prompts import ChatPromptTemplate ##聊天模板 prompt = ChatPromptTemplate.from_messages( [ ("system", "你是一个算命大师,请根据用户输入的姓名、出生年月使用周易算命来为用户算命,按列表形式输出。"), ("human", "姓名:{name},出生年月:{year}年{month}月"), ] ) #格式化为字符串 prompt_str=prompt.format(name="张三",year="1980",month="11") #格式化为消息列表 prompt_list=prompt.format_messages(name="张三",year="1980",month="11") print(prompt_str) print(prompt_list)
四.分开构造提示词,更加灵活
from langchain.prompts import AIMessagePromptTemplate from langchain.schema import HumanMessage,SystemMessage,AIMessage system=SystemMessage( content="你是一个算命大师,请根据用户输入的姓名、出生年月使用周易算命来为用户算命,按列表形式输出。" ,additional_kwargs={"大师姓名":"陈瞎子"}) human=HumanMessage( content="我叫{name},我出生在1932年10月" ) ai=AIMessage( content="算命结果:大吉大利,今晚吃鸡!" ) msg_list=[system,human,ai] print(msg_list) prompt=ChatPromptTemplate.from_messages(msg_list) print(prompt) template="你的名字是{name}" ai_msg=AIMessagePromptTemplate.from_template(template=template) m=ai_msg.format(name="张三") print(m)