LangChain: Message封装和Prompt封装

  本篇博客主要介绍Langchain中的Message和Prompt封装

1. Message封装

1.1 Messages

  Messages对象可以用在提示词和聊天信息中。目前主要有MessageMessageChunk两种类型,这里仅以Message类为主进行介绍。Message类主要有以下几种:

  • AIMessage: 大模型返回的信息,类似于OpenAI模型中assistant类型的消息。
  • ChatMessage: ChatMessage有一个role字段,用于标识消息发送者的角色或类型。
  • FunctionMessage/ToolMessage:向LLM返回函数或工具得到的信息。FunctionMessage是ToolMessage的旧版本。
  • SystemMessage: 系统角色信息,类似于OpenAI模型中system类型的消息。
  • HumanMessage:用户角色的信息,类似于OpenAI模型中user类型的消息。

关于Message类信息其用法举例如下(目前只能用到content参数):

from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage,SystemMessage,ToolMessage
from dotenv import load_dotenv,find_dotenv
_=load_dotenv(find_dotenv())
client=ChatOpenAI(
    model_kwargs={
   "tools":[{
    
            "type": "function",
            "function": {
   
                "name": "sum",
                "description": "加法器,计算一组数的和",
                "parameters": {
   
                    "type": "object",
                    "properties": {
   
                        "numbers": {
   "type": "array", "items": {
    "type": "number"}}
                    }
                }
            }
        }]})
messages=[
    SystemMessage(content="你是一个数学家,可以计算所有整数的和。"),
    HumanMessage(content="请计算12343、4363、984773这三个整数的和"),
]
response=client.invoke(messages)
#response的类型为AIMessage类型
if response.additional_kwargs['tool_calls']:
    tool=response.additional_kwargs['tool_calls'][0]
    arguments=eval(tool['function']['arguments'])
    fun_message=ToolMessage(
        content=str(sum(arguments['numbers'])),
        tool_call_id=tool['id'])
    #ToolMessage向大模型返回function calling执行的结果
    messages.extend([response,fun_message])
    response2=client.invoke(messages)
    print(response2)

其执行结果如下(返回的类型是AIMessage类型):

content='这三个整数的和为1001479。' response_metadata={
   'token_usage': {
   'completion_tokens': 13, 'prompt_tokens': 114, 'total_tokens': 127}, 'model_name': 'gpt-3.5-turbo'<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值