提示工程与上下文3580 字

LangChain提示词工程应用实践

·全库 424 / 611

《LangChain提示词工程应用实践》共 0.4 万字,通篇围绕 提示词、prompt、LangChain、向量 展开,归在「提示工程与上下文」这一层。

覆盖提示词promptLangChain向量数据库

适合天天在写提示词、想把输出调稳的人

目录骨架(8 节)
  1. 什么是提示词模板?
  2. 创建一个提示词模板(prompt template)
  3. 聊天消息提示词模板(chat prompt template)
  4. MessagesPlaceholder
  5. 使用示例集
  6. 使用示例选择器
  7. 创建示例集
  8. 创建小样本示例的格式化程序
目录 · 4 节

示例代码

注:将ppt后缀名改为zip后解压

python版本:3.12.4

Prompt templates(提示词模板)

语言模型以文本作为输入 - 这个文本通常被称为提示词(prompt)。在开发过程中,对于提示词通常不能直接硬编码,不利于提示词管理,而是通过提示词模板进行维护,类似开发过程中遇到的短信模板、邮件模板等等。

64b8936c0bccdc569ca15c504a302d55_u=1578766093,829081525&fm=253&fmt=auto&app=120&f=JPEG_w=1302&h=500.webp

什么是提示词模板?

提示词模板本质上跟平时大家使用的邮件模板、短信模板没什么区别,就是一个字符串模板,模板可以包含一组模板参数,通过模板参数值可以替换模板对应的参数。

一个提示词模板可以包含下面内容:

  • 发给大语言模型(LLM)的指令。
  • 一组问答示例,以提醒AI以什么格式返回请求。
  • 发给语言模型的问题。

创建一个提示词模板(prompt template)

可以使用 PromptTemplate 类创建简单的提示词。提示词模板可以内嵌任意数量的模板参数,然后通过参数值格式化模板内容。

from langchain.prompts import PromptTemplate

# 定义一个提示模板,包含adjective和content两个模板变量,模板变量使用{}包括起来
prompt_template = PromptTemplate.from_template(
    "给我讲一个关于{content}的{adjective}笑话。"

)

# 通过模板参数格式化提示模板
result = prompt_template.format(adjective="冷", content="猴子")
print(result)

模板输出结果:

给我讲一个关于猴子的冷笑话。

聊天消息提示词模板(chat prompt template)

聊天模型(Chat Model)以聊天消息列表作为输入,这个聊天消息列表的消息内容也可以通过提示词模板进行管理。这些聊天消息与原始字符串不同,因为每个消息都与“角色(role)”相关联。

例如,在OpenAI的Chat Completion API中,Openai的聊天模型,给不同的聊天消息定义了三种角色类型分别是助手(assistant)、人类(human)或系统(system)角色:

  • 助手(Assistant) 消息指的是当前消息是AI回答的内容
  • 人类(user)消息指的是你发给AI的内容
  • 系统(system)消息通常是用来给AI身份进行描述。

创建聊天消息模板例子

from langchain_core.prompts import ChatPromptTemplate

# 通过一个消息数组创建聊天消息模板
# 数组每一个元素代表一条消息,每个消息元组,第一个元素代表消息角色(也成为消息类型),第二个元素代表消息内容。
# 消息角色:system代表系统消息、human代表人类消息,ai代表LLM返回的消息内容
# 下面消息定义了2个模板参数name和user_input
chat_template = ChatPromptTemplate.from_messages(
    [
        ("system", "你是一位人工智能助手,你的名字是{name}。"),
        ("human", "你好"),
        ("ai", "我很好,谢谢!"),
        ("human", "{user_input}"),
    ]
)

# 通过模板参数格式化模板内容
messages = chat_template.format_messages(name="Bob", user_input="你的名字叫什么?")
print(messages)

另外一种消息格式例子:

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

# 使用langchain定义的SystemMessage、HumanMessagePromptTemplate等工具类定义消息,跟前面的例子类似,下面定义了两条消息
chat_template = ChatPromptTemplate.from_messages(
    [
        SystemMessage(
            content=(
                "你是一个乐于助人的助手,可以润色内容,使其看起来起来更简单易读。"
            )
        ),
        HumanMessagePromptTemplate.from_template("{text}"),
    ]
)

资料里没有你的场景?

把你手上的数据和想解决的那个环节发上来,我们按具体情况回,不复述方法论。

发布需求