上篇Autogen基本用法见上篇博文:
【上】大模型Autogen多Agent系统详细保姆级实践介绍,亲身实践展示代理效果-CSDN博客
3 Agent进阶用法
3.1 工具调用
工具调用使代理能够更有效地与外部工具和api进行交互。该功能允许模型智能地选择输出包含参数的JSON对象,以便根据用户的输入调用特定的工具。要调用的工具使用描述其参数及其类型的JSON模式指定。编写这样的JSON模式是复杂且容易出错的,这就是为什么AutoGen框架提供了两个高级函数装饰器,用于在标准Python数据类型上使用类型提示自动生成这样的模式:
-
ConversableAgent.register_for_llm
用于在ConversableAgent
的llm_config中将函数注册为Tool。ConversableAgent
代理可以建议执行已注册的工具,但实际的执行将由UserProxy
代理执行。 -
ConversableAgent.register_for_execution
用于将函数注册到UserProxy
代理的function_map中。
3.1.1 Agent实例4——货币兑换计算
注册一个自定义函数用于货币兑换计算的过程,该函数使用类型提示和标准Python数据类型:
-
创建一个助理代理和用户代理。助手将负责建议调用哪些函数,并由用户代理实际执行所建议的函数:
chatbot = autogen.AssistantAgent(
name="chatbot",
system_message="For currency exchange tasks, only use the functions you have been provided with. Reply TERMINATE when the task is done.",
llm_config=llm_config,
)
# create a UserProxyAgent instance named "user_proxy"
user_proxy = autogen.UserProxyAgent(
name="user_proxy",
is_termination_msg=lambda x: x.get("content", "") and x.get("content", "").rstrip().endswith("TERMINATE"),
human_input_mode="NEVER",
max_consecutive_auto_reply=10,
)
-
定义函数currency_calculator如下所示,并用两个装饰器装饰它:
@user_proxy.register_for_execution
添加currency_calculator函数到user_proxy.function_map
@chatbot.register_for_llm
将生成的函数JSON模式添加到chatbot的llm_config
CurrencySymbol = Literal["USD", "EUR"]
def exchange_rate(base_currency: CurrencySymbol, quote_currency: CurrencySymbol) -> float:
if base_currency == quote_currency:
return 1.0
elif base_currency == "USD" an