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

messagechannel 是两个紧密相关的模块,它们共同构成了消息处理的核心机制。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 对象的信息会被用于执行通道相关的操作。 通过这种设计,确保了用户消息的正确处理和系统回复的生成。