AutoGen框架:构建智能对话机器人

在本文中,将探讨如何使用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是一个框架,通过使用基于代理的架构简化聊天机器人的开发,允许灵活和可扩展的对话交互。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485