LangChain学习(三)

147 阅读2分钟

我正在参加「豆包MarsCode AI练中学体验活动」详情请看:掘金小册上线 AI练中学功能 | 你的 AI 编程助教喊你免费领小册啦!

模型IO的目标是使开发者无须深入理解各个模型平台的API调用协议就可以方便的与各个大模型进行交互。

模型

大型语言模型(LLM):这类模型接受一个文本字符串作为输入,并返回一个文本字符串作为输出。

聊天模型:这类模型通常由一个语言模型支持,但它们的API更加结构化。具体来说,这些模型接受一个聊天信息的列表作为输入,并返回一个聊天信息。

文本嵌入模型:这类模型将文本作为输入,并返回一个浮点数列表。

image.png

提示

对模型进行编程的新方法是通过提示语。一个提示指的是对模型的输入。LangChain提供了几个类和函数,使构建和处理提示信息变得容易。

  • 提示模板: 对模型输入进行参数化处理
  • 例子选择器: 动态地选择要包含在提示中的例子

提示模板

提示模板是指产生提示的可重复的方式。它包含一个文本字符串("模板"),可以从终端用户那里接收一组参数并生成一个提示。 例如:

  • 对语言模型的指示、
  • 一组少量的例子,以帮助语言模型产生一个更好的反应、
  • 一个对语言模型的问题。

创建提示模板

from langchain import PromptTemplate

# An example prompt with no input variables
no_input_prompt = PromptTemplate(input_variables=[], template="Tell me a joke.")
no_input_prompt.format()
# -> "Tell me a joke."

# An example prompt with one input variable
one_input_prompt = PromptTemplate(input_variables=["adjective"], template="Tell me a {adjective} joke.")
one_input_prompt.format(adjective="funny")
# -> "Tell me a funny joke."

# An example prompt with multiple input variables
multiple_input_prompt = PromptTemplate(
    input_variables=["adjective", "content"], 
    template="Tell me a {adjective} joke about {content}."
)
multiple_input_prompt.format(adjective="funny", content="chickens")
# -> "Tell me a funny joke about chickens."

ChatPromptTemplate聊天提示模板

PromptTemplate创建字符串提示的模板。默认情况下,使用Python的str.format语法进行模板化。而ChatPromptTemplate是创建聊天消息列表的提示模板。

from langchain.prompts.chat import ChatPromptTemplate

template = "你是一个翻译专家,擅长将 {input_language} 语言翻译成 {output_language}语言."
human_template = "{text}"

chat_prompt = ChatPromptTemplate.from_messages([
    ("system", template),
    ("human", human_template),
])
print(chat_prompt)

# 导入LangChain中的ChatOpenAI模型接口
from langchain_openai import ChatOpenAI

# 创建模型实例
model = ChatOpenAI(model_name='gpt-3.5-turbo')
# 输入提示
messages = chat_prompt.format_messages(input_language="英文", output_language="中文", text="I love programming.")
# 得到模型的输出
output = model.invoke(messages)
# 打印输出内容
print(output)

LangChain提供不同类型的MessagePromptTemplate.最常用的是AIMessagePromptTemplateSystemMessagePromptTemplateHumanMessagePromptTemplate,分别创建人工智能消息、系统消息和人工消息。

要创建与角色相关联的消息模板,可以使用MessagePromptTemplate

少量样本示例的提示模板

基于LLM模型与聊天模型,可分别使用FewShotPromptTemplateFewShotChatMessagePromptTemplate