凉城老泉
手机扫码
九.LangChian实验笔记,组合提示词模板和从文件加载提示词模板
凉城老泉  2025-05-16     阅读(68)   分享

一.在复杂应用中,我们可以将多个提示词模板组合起来使用,可降低复杂度,组合提示词模板需引入 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)