Skip to main content

context_handling

TransformChatHistory

class TransformChatHistory()

一个代理与其他代理的聊天历史是它生成回复时常用的上下文。这个功能允许代理在使用聊天历史生成回复之前对其进行转换。它不会永久修改聊天历史,而是在每次调用时对其进行处理。

这个功能类可以实现各种转换聊天历史的策略,例如:

  • 截断消息:将每条消息截断为最多的标记数。
  • 限制消息数量:将聊天历史截断为最多的(最近的)消息数量。
  • 限制标记数量:将聊天历史截断为最近的 N 条消息,使其标记数量不超过最大限制。 需要注意的是,由于其特殊意义,系统消息始终保持不变。

这三种策略可以组合使用。例如,当指定了这些参数时,它们的使用顺序如下:

  1. 首先将消息截断为最多的标记数。
  2. 其次,限制要保留的消息数量。
  3. 最后,限制聊天历史中的总标记数量。

将此功能添加到代理时,会进行以下修改:

  • 在可挂钩方法 process_all_messages_before_reply 中添加了一个钩子,用于转换接收到的消息以进行可能的截断。 不修改存储的消息历史。

__init__

def __init__(*,
max_tokens_per_message: Optional[int] = None,
max_messages: Optional[int] = None,
max_tokens: Optional[int] = None)

参数

  • max_tokens_per_message Optional[int] - 每条消息要保留的最大标记数。
  • max_messages Optional[int] - 要保留的最大消息数量。
  • max_tokens Optional[int] - 要保留的上下文中的最大标记数量。

add_to_agent

def add_to_agent(agent: ConversableAgent)

将 TransformChatHistory 功能添加到给定的代理中。

truncate_str_to_tokens

def truncate_str_to_tokens(text: str,
max_tokens: int,
model: str = "gpt-3.5-turbo-0613") -> str

使用 tiktoken 将字符串截断,使其标记数量小于等于 max_tokens。

参数

  • text - 要截断的字符串。
  • max_tokens - 要保留的最大标记数量。
  • model - 用于标记化对齐的目标 OpenAI 模型。

返回值

截断后的字符串。