Skip to content

BaseMessage 消息基类

介绍

在TFRobot整个系统中,所有的消息在此基类的基础上进行扩展。比如:

  1. 用户消息
  2. 系统消息
  3. LLM(Assistant)消息
  4. 工具消息(工具返回)

结构

消息基类结构定义如下:

class BaseMessage(TFBaseModel, Generic[StrSubclass]):

    # The message content may be in bytes format for attachments, images, or videos. sometimes it may be a string.
    # and sometimes it may be a dict for contact, file, or url, or a list of dicts for multiple contacts, files, or urls
    content: Union[StrSubclass, AnyUrl, Path, BaseUser, list["BaseMessage"]]
    # Additional kwargs will be saved as metadata in some memory stores or in tool/function return info(msg_meta).
    additional_kwargs: Attributes = Field(default_factory=dict)
    create_ts: Optional[int] = Field(default_factory=lambda: int(time.time() * 1000))  # message creation timestamp

    function_call: Optional[FunctionCall] = None
    """Function call info, if applicable"""

    function_res: Optional[Union[str, ToolReturn]] = None
    """Function call return value, if applicable"""

    tool_calls: Optional[list[ToolCall]] = None
    """Tool calls info, returned by OpenAI, its a list of ToolCall"""

    tool_reses: Optional[list[Union[str, ToolReturn]]] = None
    """Tool calls return value, if applicable"""

    creator: Optional[BaseUser] = None
    group: Optional[BaseGroup] = None
    role: Optional[Literal["system", "user", "assistant", "function", "tool"]] = "user"

    __register_key__: ClassVar[str] = "MESSAGE"

    model_config: ClassVar[ConfigDict] = ConfigDict(strict=True, arbitrary_types_allowed=True)