langchain提示词工程学习笔记

1.提示词模板

对提示词按照模板的方式进行维护,类似于短信模板、邮件模板

一个提示词模板包括:

发给llm的指令

一个实例展示,告诉模型应用什么样的格式返回请求

发给语言模型的问题

2.提示词模板的创建

可以使用prompttemplate类进行创建

from langchain.prompts import PromptTemplate

from deepapi import prompt

prompt_template = PromptTemplate.from_template(
    "帮我写一篇{content}的使用方法"

)
result = prompt_template.format(content = 'deepseek')
print(result)

输出结果为:

上述提示词模板是一个相对简单的模板,还可以用chatprompttemplate建立一个聊天机器人模板

from langchain.prompts import ChatPromptTemplate

prompt_template = ChatPromptTemplate.from_messages(
   [
    ("system","你是一位算命大师,你的名字是袁天罡"),
    ("human","大师您好"),
     ("ai","小友想算什么"),
     ("human","大师我想算{input}"),]

)
result = prompt_template.format(input = "姻缘")
print(result)

或者这样:

from langchain.prompts import HumanMessagePromptTemplate
from langchain_core.messages import SystemMessage
from langchain_core.prompts import ChatPromptTemplate


chat_template = ChatPromptTemplate.from_messages(
   [
    SystemMessage(
        content=("你是一个强大的算命大师,你不屑于算姻缘")

    ),
        HumanMessagePromptTemplate.from_template("{text}"),]

)
result = chat_template.format_messages(text = "那我想算算我能不能飞升成仙")
print(result)

3.MessagesPlaceholder

它可以用来在特定位置添加消息列表

#from langchain.prompts import HumanMessagePromptTemplate
#from langchain_core.messages import SystemMessage
#from langchain.chains.summarize.refine_prompts import prompt_template
from langchain_core.prompts import ChatPromptTemplate,MessagesPlaceholder
from langchain_core.messages import HumanMessage

prompt_template = ChatPromptTemplate.from_messages(
   [
       ("system","你是一个算命大师"),
       MessagesPlaceholder('text')
    ]

)
result =prompt_template.invoke({"text": [HumanMessage(content="大师您好")]})

print(result)

还有另一种方法:

4.提示词追加示例(Few-shot prompt templates)

加入一个QA的示例,可以有效减少大模型幻觉问题。

from langchain_core.prompts import ChatPromptTemplate,MessagesPlaceholder
from langchain_core.messages import HumanMessage
from langchain .prompts.few_shot import FewShotPromptTemplate
from langchain.prompts.prompt import PromptTemplate
from optree.version import suffix

examples =[
    {"question": "......",
     "answer": "......", },
    {
    "question": "......",
     "answer": "......",
    }
]
example_prompts = PromptTemplate(input_variables=["question","answer"],template="问题:{question}\\n{answer}")

prompt = FewShotPromptTemplate(
    examples = examples,
    example_prompt=example_prompts,
    suffix = "问题:{input}",
    input_variables=["input"]
)
print(prompt.format(input = "......."))

创建小样本示例的格式化程序

通过PromptTemplate对象,在提示词模板中插入样例。

将示例和格式化程序提供个FewShotTemplate

prompt = FewShotPromptTemplate(
    examples = examples,
    example_prompt=example_prompts,
    suffix = "问题:{input}",
    input_variables=["input"]
)

5.示例选择器(exampleelector)

from langchain.prompts.example_selector import SemanticSimilarityExampleSelector
from langchain_community.vectorstores import Chroma
from langchain_openai import OpenAIEmbeddings

examples =[
    {"question": "......",
     "answer": "......", },
    {
    "question": "......",
     "answer": "......",
    }
]
example_selector = SemanticSimilarityExampleSelector.from_examples(

    examples,#可供选择的示例列表
    OpenAIEmbeddings(api_key=""),#用于生成嵌入的嵌入类,用于衡量语义相似性
    Chroma,#用于存储嵌入和执行相似搜索的VectorStore类
    k=1,
)

question = "......"
selected_examples = example_selector.select_examples({"question":question})
print(f"最相似的实例:{question}")
for example in selected_examples:
    print("\\n")
    for k,v in example.items():
        print(f"{k},{v}")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一尾清风915

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值