原文地址
此部分包含与提示相关的所有内容。提示符是传递到语言模型中的值。此值可以是字符串(一般LLM模型接受字符串参数-如openai的text-davinci-003模型)或消息列表(一般chat模型接受消息列表参数-如openai的gpt-3.5-turbo模型)。
我们可以通过langchain在向模型传递参数时调用提示模板,来对数据进行构造,langchain在这方面提供的优势包括:
我们有关于特定类型的字符串提示、特定类型的聊天提示、示例选择器和输出解析器的深入文档。
在这里,我们将介绍一个标准界面的快速入门,以便通过简单的提示开始使用。
PromptTemplates负责构建提示值。这些PromptTemplates可以执行格式化、示例选择等操作。PromptTemplates是一种对象,它提供了一个format_prompt
方法,用于构建提示。在底层实现中,PromptTemplates可以实现各种功能,其灵活性非常高。这意味着我们可以根据需要进行任何操作,从而实现各种不同的提示方式。
from langchain.prompts import PromptTemplate, ChatPromptTemplate
string_prompt = PromptTemplate.from_template("告诉我一个关于{subject}的笑话")
chat_prompt = ChatPromptTemplate.from_template("告诉我一个关于{subject}的笑话")
string_prompt_value = string_prompt.format_prompt(subject="篮球")
chat_prompt_value = chat_prompt.format_prompt(subject="篮球")
to_string
操作上面我们通过PromptTemplates的format_prompt
的方法构建了提示string_prompt_value、chat_prompt_value。
我们通过to_string
操作就生成了传递给LLM的参数数据
string_prompt_value.to_string()
'告诉我一个关于篮球的笑话'
type(string_prompt_value.to_string())
str
chat_prompt_value.to_string()
'Human: 告诉我一个关于篮球的笑话'
type(chat_prompt_value.to_string())
str
to_messages
操作通过to_messages
操作,可以将提示生成传递给ChatModel时的参数数据
string_prompt_value.to_messages()
[HumanMessage(content='告诉我一个关于篮球的笑话', additional_kwargs={}, example=False)]
type(string_prompt_value.to_messages())
list
chat_prompt_value.to_messages()
[HumanMessage(content='告诉我一个关于篮球的笑话', additional_kwargs={}, example=False)]
type(chat_prompt_value.to_messages())
list
我们下面基于提示模板简易的做一个当下比较热门的,使chatGPT扮演一个角色,来回答用户的内容的小案例
import os
os.environ["OPENAI_API_KEY"] = "在这里填写你的openaikey"
from langchain.chat_models import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
template = """
你是诗仙李白,我需要你根据下面内容,用李白的风格作一首相关的诗词,并回答内容:
-------
{text}
-------
你需要能表达出大才子桀骜不驯的性格。
"""
def inpup_load(text: str) -> str:
chat_prompt = ChatPromptTemplate.from_template(template=template)
chat_prompt_value = chat_prompt.format_prompt(text = text)
chat_prompt_value_message = chat_prompt_value.to_messages()
gpt = ChatOpenAI(model="gpt-3.5-turbo",temperature=0)
result = gpt(chat_prompt_value_message).content
return result
inpup_load("今天天气很热")
'烈日炎炎照大地, \n热浪滚滚燃人心。 \n李白身世自由放, \n桀骜不驯任天真。 \n\n热情如火燃不尽, \n豪情万丈狂放情。 \n天地为舞任意舞, \n风云为伴任意行。 \n\n今日天气炎热甚, \n李白心中热情燃。 \n不羁不驯任意行, \n豪情万丈任意放。 \n\n问:这首诗表达了什么意思?\n答:这首诗表达了李白桀骜不驯、豪情万丈的性格,以及他对热情的追求和自由的向往。'