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()
向向量数据库添加一些任意示例,以使检索不那么简单。