手把手教你如何建立自己的网站,西安市网站搭建,wordpress主题怎么写,关于成立网站建设项目小组的通知模型又可分为语言模型#xff08;擅长文本补全#xff0c;输入和输出都是字符串#xff09;和聊天模型#xff08;擅长对话#xff0c;输入时消息列表#xff0c;输出是一个消息#xff09;两大类。
以调用openai的聊天模型为例#xff0c;先安装langchain_openai库 1…模型又可分为语言模型擅长文本补全输入和输出都是字符串和聊天模型擅长对话输入时消息列表输出是一个消息两大类。
以调用openai的聊天模型为例先安装langchain_openai库 1、基础调用
初始化模型——构建消息列表——调用模型并输出结果
# 导入openai的聊天模型类
from langchain_openai import ChatOpenAI# 初始化模型
modelChatOpenAI(modelgpt-3.5-turbo,base_urlhttps://api.gptsapi.net/v1,temperature1.2,max_tokens300,model_kwargs{frequency_penalty:1.5})from langchain.schema.messages import (SystemMessage,HumanMessage)#构建消息列表
messages[SystemMessage(content请你作为我的物理课助教用通俗易懂的语言解释物理概念。),HumanMessage(content什么是波粒二象性)
]#调用模型并输出结果
responsemodel.invoke(messages)
print(response)
print(response.content) model_kwargs是一个用于向语言模型传递额外参数的字典它的键是一些不常用的参数。它允许你在初始化模型如ChatOpenAI时对模型的行为进行更细致的控制。注意modelbase_urlopenai_api_keymax_tokens或max_completion_tokenstemperaturestream这些参数通常独立于model_kwargs。为什么?因为这些参数非常基础几乎所有模型都有。为了方便设置就把他们作为更明显的独立参数。把常用参数放进model_kwargs时就会有警告多种消息类型SystemMessageHumanMessageAIMessage表示模型生成的回复消息FunctionCallMessage当模型决定调用某个函数来完成任务时会生成一个 FunctionCallMessage 消息包含函数名和参数等信息invoke 触发模型的响应里面封装了和语言模型通信的复杂过程包括构建请求、发送请求、处理响应等。print(response)打印整个响应对象这个对象包含了模型返回的所有信息如消息内容、元数据等。print(response.content)打印响应对象中的content属性即模型生成的文本内容 2、提示模板
可以动态构建给模型的消息效率更高。
针对系统消息、人类消息和AI消息都有相应的模板类。 对于如何填充变量有隐式识别变量和显式指定 input_variables 两种方式。
from langchain.schema import SystemMessage
from langchain.prompts import SystemMessagePromptTemplate# 定义模板
template 你是一名 {role}在 {scene} 中需要 {task}。# 方法一隐式识别变量
# 直接使用 from_template 并传入变量值
system_message_implicit SystemMessage.from_template(template,role消防员,scene火灾现场,task扑灭大火并营救被困人员
)print(隐式识别变量生成的系统消息)
print(system_message_implicit.content)# 方法二显式指定 input_variables
# 创建 SystemMessagePromptTemplate 对象显式指定 input_variables
system_message_prompt SystemMessagePromptTemplate.from_template(template,input_variables[role, scene, task] #可省
)
# 根据模板和具体变量值生成 SystemMessage
system_message_explicit system_message_prompt.format_messages(role消防员,scene火灾现场,task扑灭大火并营救被困人员
)[0]print(\n显式指定 input_variables 生成的系统消息)
print(system_message_explicit.content) 显式解析
先用模板类的from_template方法从一个模板template字符串来创建提示模板对象。
后用提示模板对象的format_messages方法对消息进行格式化处理即将模板中的占位符填充为实际的值。
SystemMessagePromptTemplate类的实例调用 format_messages 方法传入具体的变量值该方法会根据模板和变量值生成一个 SystemMessage 对象列表。即调用者是提示模板对象返回值是消息对象的列表
返回消息列表的原因 由于这里只有一个消息所以取列表的第一个元素。 提示模板对象提示模板类.from_template模板字符串 消息列表提示模板对象.format_messages变量赋值 from langchain.schema import SystemMessage
from langchain.prompts import SystemMessagePromptTemplateprompt_template你是一名{role}在{scene}中需要{task}。# 由模板字符串 构建模板实例
system_message_prompt_templateSystemMessagePromptTemplate.from_template(prompt_template)# 填充模板实例 得到消息列表
system_messagessystem_message_prompt_template.format_messages(role消防员,scene火灾现场,task扑灭大火并营救被困人员
)
print(system_messages)
print(system_messages[0])
print(system_messages[0].content)
#[SystemMessage(content你是一名消防员在火灾现场中需要扑灭大火并营救被困人员。, additional_kwargs{}, response_metadata{})]
#content你是一名消防员在火灾现场中需要扑灭大火并营救被困人员。 additional_kwargs{} response_metadata{}
#你是一名消防员在火灾现场中需要扑灭大火并营救被困人员。 集成版本 from_messages接受一个参数该参数是一个由元组组成的列表。每个元组包含两个元素第一个元素表示消息的角色第二个元素是消息内容模板其中可以包含占位符。 printprompt_value后可以发现它是消息列表被包装后的形态。
它也可以直接作为参数传给模型。