在本文中,将探讨如何使用AutoGen框架构建智能对话机器人。AutoGen通过利用AI代理简化了构建复杂对话系统的过程,这些代理能够自主处理对话和任务。将探索AutoGen的强大基于代理的框架,使创建适应性强、智能的对话机器人变得前所未有地简单。
了解AutoGen框架的基本概念及其功能。将看到如何创建能够相互讨论、响应人类查询、搜索网络甚至更多功能的聊天机器人。了解使用AutoGen构建代理聊天机器人所需的设置要求和先决条件。学习如何通过集成Tavily等工具来增强聊天机器人的功能。
在构建AutoGen代理之前,请确保拥有LLMs所需的API密钥。还将使用Tavily来搜索网络。通过API访问时,本文中使用OpenAI和Groq API密钥。Groq提供了许多开源LLMs的免费访问,直到达到某些速率限制。可以使用任何喜欢的LLM。首先为LLM生成API密钥和Tavily搜索工具。创建一个.env文件来安全地存储此密钥,使其在项目中易于访问,同时保持私密。
所需库包括:autogen-agentchat – 0.2.36、tavily-python – 0.5.0、groq – 0.7.0、openai – 1.46.0。
辩证是一种寻求探索和解决矛盾或对立观点的论证或推理方法。让两个LLMs使用AutoGen代理参与辩证。让创建第一个代理:
from autogen import ConversableAgent
agent_1 = ConversableAgent(
name="expert_1",
system_message="""正在参加关于生成性AI的担忧的辩证,与另一位专家讨论。
请简洁地提出对论点的看法。""",
llm_config={"config_list": [{"model": "gpt-4o-mini", "temperature": 0.5}]},
code_execution_config=False,
human_input_mode="NEVER",
)
ConversableAgent是构建可定制代理的基础类,这些代理可以与其他代理、人和工具交谈和互动,以完成任务。system_message参数定义了代理在对话中的角色和目的。在这种情况下,agent_1被指示参与关于生成性AI的辩证,对论点提出简洁的观点。llm_config配置指定要使用的语言模型,这里为“gpt-4o-mini”。其他参数如temperature=0.5用于控制模型响应的创造性和变化性。code_execution_config=False表示代理没有启用代码执行能力。human_input_mode=”NEVER”设置确保代理不依赖于人类输入,完全自主操作。
除了让两个代理相互聊天外,还可以与AI代理聊天。让尝试通过构建一个用于面试准备的代理来实现这一点。
interviewer = ConversableAgent(
"interviewer",
system_message="""正在为生成性AI实习生职位进行面试。
请提出合适的问题并评估候选人。""",
llm_config={"config_list": [{"api_type": "groq", "model": "llama-3.1-70b-versatile", "temperature": 0.0}]},
code_execution_config=False,
human_input_mode="NEVER",
# max_consecutive_auto_reply=2,
is_termination_msg=lambda msg: "goodbye" in msg["content"].lower()
)
使用system_message定义代理的角色。要终止对话,可以使用以下两个参数之一:max_consecutive_auto_reply:此参数限制代理可以连续发送的回复数量。一旦代理达到此限制,对话自动结束,防止其无限期地继续。is_termination_msg:此参数检查消息是否包含特定预定义的关键字。当检测到此关键字时,对话自动终止。
现在,让构建一个可以使用互联网搜索查询的聊天机器人。为此,首先定义一个使用Tavily搜索网络的函数。
from tavily import TavilyClient
from autogen import register_function
def web_search(query: str):
tavily_client = TavilyClient()
response = tavily_client.search(query, max_results=3)
return response['results']
assistant = ConversableAgent( name="Assistant", system_message="""是一个乐于助人的AI助手。可以搜索网络以获取结果。 任务完成后返回'TERMINATE'。""", llm_config={"config_list": [{"model": "gpt-4o-mini"}]}, silent=True, )
user_proxy = ConversableAgent( name="User", llm_config=False, is_termination_msg=lambda msg: msg.get("content") is not None and "TERMINATE" in msg["content"], human_input_mode="TERMINATE", )
当满足终止条件时,它将请求人类输入。可以继续查询或结束聊天。
register_function(
web_search,
caller=assistant, # The assistant agent can suggest calls to the calculator.
executor=user_proxy, # The user proxy agent can execute the calculator calls.
name="web_search", # By default, the function name is used as the tool name.
description="Searches internet to get the results a for given query", # A description of the tool.
)
现在可以查询:
chat_result = user_proxy.initiate_chat(assistant, message="2024年诺贝尔奖的得主是谁?")
# Depending on the length of the chat history we can access the necessary content
print(chat_result.chat_history[5]['content'])
通过这种方式,可以使用AutoGen构建不同类型的代理聊天机器人。
Q1. 什么是AutoGen? A. AutoGen是一个框架,通过使用基于代理的架构简化聊天机器人的开发,允许灵活和可扩展的对话交互。