一.在复杂应用中,我们可以将多个提示词模板组合起来使用,可降低复杂度,组合提示词模板需引入 PipelinePromptTemplate 组模块
下面是代码示例:
"""组合提示词模板测试""" from langchain.prompts import PromptTemplate from langchain.prompts import PipelinePromptTemplate from qifan_ai import CreateMyLLM PROMPT_TEMPLATE = """ {character} {behavior} {prohibit} """ full_prompt = PromptTemplate.from_template(template=PROMPT_TEMPLATE) character_template ="你是{person},你有着{xingge},请生成一段文字。" character_prompt=PromptTemplate.from_template(template=character_template) behavior_template=""" 你尊从以下行为: {behavior_list} """ behavior_prompt=PromptTemplate.from_template(template=behavior_template) prohibit_template="""你不允许有以下行为: {prohibit_list}""" prohibit_prompt=PromptTemplate.from_template(template=prohibit_template) pip_list=[("character",character_prompt),("behavior",behavior_prompt),("prohibit",prohibit_prompt)] pip_prompt=PipelinePromptTemplate(final_prompt=full_prompt,pipeline_prompts=pip_list) print(pip_prompt.input_variables) p=pip_prompt.format( person="作家", xingge="幽默风趣的写作风格", behavior_list=["1.你会说一些很有哲理的话","2.你会讲故事","3.你会写一些有哲理的文章"], prohibit_list=["1.说脏话","2.有违道德的行为","3.有违反法律的行为"] ) print(p) #调用大模型测试 model=CreateMyLLM() chain=pip_prompt|model res=chain.invoke({"person":"作家","xingge":"幽默风趣的写作风格","behavior_list":"1.你会说一些很有哲理的话\n2.你会讲故事\n3.你会写一些有哲理的文章","prohibit_list":"1.说脏话\n2.有违道德的行为\n3.有违反法律的行为"}) print(res.content)二.为了能够更好的维护提示词模板板本,我们需要将提示词模板保存在文件中,在使用时从文件中加载。使用文件存储提示词模板的文件格式包:.json文件和.yaml文件, 觉的.json格式文件更好用。
如下为simple_p.json文件内容:
{ "_type": "prompt", "input_variables": [ "name", "what" ], "template": "你好, {name}! 你能帮我 {what}?" }
下面为simple_p.yaml文件内容:
_type:prompt input_variables: ["name","what"] template: "给我讲一个关于{name}的{what}的故事。"
上图为官网上更为复杂的模板文件内容
下面示例代码为从文件加载的提示词模板代码:
"""使用文件夹来存储提示词模板""" from langchain.prompts import load_prompt from qifan_ai import CreateMyLLM prompt=load_prompt("simple_p.json",encoding="utf-8") p=prompt.format(name="图书管理员",what="推荐一些关于机器学习类的图书") print(p) model=CreateMyLLM() res=model.predict(p) print(res)