跳到主要内容

agentchat.contrib.capabilities.teachability

可教性

class Teachability(AgentCapability)

可教授性使用向量数据库赋予代理记住用户教导的能力,其中用户是向可教授代理发送消息的任意调用者(人类或非人类)。可教授性被设计为与其他代理功能可组合。要使任何可对话代理可教授,需实例化代理和可教授性类,然后将代理传递给teachability.add_to_agent(agent)。请注意,在群聊中的可教授代理必须赋予唯一的path_to_db_dir值。

在为代理添加可教性时,以下内容会被修改:

  • 代理的系统消息附加了一条关于代理新功能的说明。
  • 为代理的process_last_received_message hookable方法添加了一个钩子, 该钩子可能会修改最后收到的消息,以包含与该消息相关的早期教导。 添加的教导不会传播到存储的消息历史中。 如果检测到新的用户教导,它们将被添加到向量数据库的新备忘录中。

__init__

def __init__(verbosity: Optional[int] = 0,
reset_db: Optional[bool] = False,
path_to_db_dir: Optional[str] = "./tmp/teachable_agent_db",
recall_threshold: Optional[float] = 1.5,
max_num_retrievals: Optional[int] = 10,
llm_config: Optional[Union[Dict, bool]] = None)

参数:

  • verbosity 可选, 整数 - # 0 (默认) 基础信息,1 增加内存操作,2 分析器消息,3 备忘录列表。
  • reset_db 可选,布尔型 - 如果为True,在开始前清除数据库。默认值为False。
  • path_to_db_dir 可选, str - 该特定代理的数据库存储目录的路径。默认 "./tmp/teachable_agent_db"
  • recall_threshold 可选, float - 检索备忘录的最大距离,其中0.0表示完全匹配。默认值为1.5。较大的值允许召回更多(但相关性较低)的备忘录。
  • max_num_retrievals 可选, int - 从数据库中检索备忘录的最大数量。默认为 10。
  • llm_config dict or False - 传递给TextAnalyzerAgent的LLM推理配置。 如果为None,TextAnalyzerAgent将使用teachable agent中的llm_config。

add_to_agent

def add_to_agent(agent: ConversableAgent)

为给定的代理增加可教学性。

prepopulate_db

def prepopulate_db()

向数据库添加一些任意备忘录。

处理最后接收到的消息

def process_last_received_message(text: Union[Dict, str])

将任何相关的备忘录附加到消息文本中,并将任何明显的教导存储在新的备忘录中。 使用TextAnalyzerAgent来做出关于备忘录存储和检索的决定。

MemoStore

class MemoStore()

为可教学代理提供内存存储和检索功能,使用向量数据库。 每个数据库条目(称为备忘录)是一对字符串:输入文本和输出文本。 输入文本可能是一个问题,或者是一个要执行的任务。 输出文本可能是问题的答案,或者是关于如何执行任务的建议。 向量嵌入目前由Chroma的默认句子转换器提供。

__init__

def __init__(verbosity: Optional[int] = 0,
reset: Optional[bool] = False,
path_to_db_dir: Optional[str] = "./tmp/teachable_agent_db")

参数:

  • verbosity (可选, int): 1表示打印内存操作,0表示省略。3及以上表示打印备忘录列表。
  • reset (可选, bool): 如果为True,则在开始前清除数据库。默认为False。
  • path_to_db_dir (可选, str): 存储数据库的目录路径。

列出备忘录

def list_memos()

打印MemoStore的内容。

reset_db

def reset_db()

强制立即删除数据库的内容,无论是在内存中还是在磁盘上。

add_input_output_pair

def add_input_output_pair(input_text: str, output_text: str)

将一个输入输出对添加到向量数据库中。

get_nearest_memo

def get_nearest_memo(query_text: str)

检索与给定查询文本最接近的备忘录。

def get_related_memos(query_text: str, n_results: int,
threshold: Union[int, float])

检索与给定查询文本在指定距离阈值内相关的备忘录。

预填充

def prepopulate()

向向量数据库添加一些任意示例,以使检索不那么简单。