Langchain 提示模块 -初步介绍

原文地址

prompts 简介

此部分包含与提示相关的所有内容。提示符是传递到语言模型中的值。此值可以是字符串(一般LLM模型接受字符串参数-如openai的text-davinci-003模型)或消息列表(一般chat模型接受消息列表参数-如openai的gpt-3.5-turbo模型)。

我们可以通过langchain在向模型传递参数时调用提示模板,来对数据进行构造,langchain在这方面提供的优势包括:

  • 字符串提示和消息提示的标准接口
  • 字符串提示模板和消息提示模板的标准(入门)接口
  • 示例选择器(Example Selectors):将示例插入到提示符中以使语言模型遵循的方法
  • 输出解析器(OutputParsers):用于将指令插入到提示符中作为语言模型输出信息的格式的方法,以及用于然后将该字符串输出解析成格式的方法。

我们有关于特定类型的字符串提示、特定类型的聊天提示、示例选择器和输出解析器的深入文档。

在这里,我们将介绍一个标准界面的快速入门,以便通过简单的提示开始使用。

PromptTemplates

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答:这首诗表达了李白桀骜不驯、豪情万丈的性格,以及他对热情的追求和自由的向往。'

你可能感兴趣的:(langchain,python)