Message用于处理和传递系统中的各种信息,其设计旨在简化信息的输入和输出,使得不同接口之间的通信更加流畅和一致。
Message
Message信息对象包含了发送者、接收者、会话ID、文本内容以及一些可选的元数据。通过使用这个模块,开发者可以轻松地创建和处理信息,而无需担心底层的数据结构和格式。
信息创建
Message 类提供了一个简单的方法来创建信息对象。你可以指定以下参数:
sender: 信息的发送者。 sender_id: 发送者的唯一标识。 receiver: 信息的接收者。 receiver_id: 接收者的唯一标识。 session_id: 会话的唯一标识。 text: 信息的文本内容。 metadata: 附加的元数据。
信息转换
Message 类还提供了一个 as_dict 方法,可以将信息对象转换为一个字典。这个方法在需要将信息传递给其他系统或存储时非常有用。
使用示例
以下是一个简单的使用示例,展示了如何创建一个信息对象并将其转换为字典:
from message import Message
# 创建一个信息对象
msg = Message(
sender="user",
sender_id="user123",
receiver="bot",
receiver_id="bot456",
session_id="session789",
text="Hello, bot!",
metadata={"type": "greeting"}
)
# 将信息对象转换为字典
msg_dict = msg.as_dict()
print(msg_dict)
输出结果将会是一个包含所有信息参数的字典:
{
'sender': 'user',
'sender_id': 'user123',
'receiver': 'bot',
'receiver_id': 'bot456',
'session_id': 'session789',
'text': 'Hello, bot!',
'metadata': {'type': 'greeting'}
}
Message 和 Channel
message和 channel 是两个紧密相关的模块,它们共同构成了消息处理的核心机制。message定义了消息对象的结构和处理逻辑,包含了消息的发送者、接收者、内容等属性。
channel负责处理不同通信渠道的消息。它使用 Message 类来创建和处理消息对象,确保消息能够正确地从外部渠道进入系统,并进行相应的处理。
在接受到客户端的消息后,Channel 类中的 handle_message 方法会将接收到的消息转换为 Message 对象。send_response 方法则负责将处理后的消息发送回客户端。 通过这种设计,message 和 channel 共同确保了消息在不同通信渠道之间的正确传递和处理,使得系统能够灵活地适应各种通信方式。
消息处理
Query 和 Response 是两个具体的动作(Action)类,分别代表用户的请求和系统的回复,message和这两个Action的生产和处理相关。
Processor 接收到 Message,并根据消息内容生成一个 Query 动作。这个 Query 动作包含了消息的所有信息,如发送者、接收者、消息内容等。
Processor 会根据 Message 对象的 session_id 获取或创建一个对话状态跟踪器(DST),并更新这个跟踪器的状态。这个过程中,Message 对象的信息会被用于更新对话状态。
Processor 会将agent生成的回复动作 (Response)通过通道发送给用户,这个过程中,Message 对象的信息会被用于执行通道相关的操作。 通过这种设计,确保了用户消息的正确处理和系统回复的生成。