llama-agents:构建生产级多智能体AI系统的强大框架

云的事情不好说 2024-07-24 03:11:12

LlamaIndex 宣布 llama-agents 的 alpha 版本发布,这是一个新的开源框架,旨在简化构建、迭代和部署多智能体 AI 系统的流程,并将智能体转化为生产级微服务。无论是在开发复杂的问答系统、协作 AI 助手还是分布式 AI 工作流,llama-agents 提供了需要的工具和结构,帮助我们将想法变为现实。

一、llama-agents 的关键特性

下面是llama-agents 的关键特性:

分布式服务导向架构:LlamaIndex 中的每个智能体都可以是独立运行的微服务,由一个完全可定制的大语言模型驱动的控制平面(Control Plane)进行协调和任务分发。通过标准化 API 接口通信:智能体之间通过中央控制平面协调器(Orchestrator)进行接口通信。使用消息队列(Message Queue)在智能体之间传递消息。定义智能体和显式协调流程:开发者可以灵活地直接定义智能体之间的交互顺序,或者让一个“智能体协调器(Agentic Orchestrator)”决定哪些智能体与任务相关。易于部署:独立启动、扩展和监控每个智能体和控制平面。可扩展性和资源管理:使用内置的可观测工具来监控系统和每个单独智能体服务的质量和性能。

下面深入了解如何使用 llama-agents 构建示例的智能体系统。

二、开始使用 llama-agents

首先,使用 pip 安装框架:

pip install llama-agents llama-index-agent-openai

引入依赖项并设置控制平面,其中包含了大语言模型驱动的协调器:

# 导入dotenv模块,用于加载环境变量文件import dotenvdotenv.load_dotenv() # our .env file defines OPENAI_API_KEY# 导入llama_agents包中的类,用于构建代理服务和控制面from llama_agents import ( AgentService, ControlPlaneServer, SimpleMessageQueue, AgentOrchestrator,)# 导入具体执行任务的工作者类from llama_index.core.agent import FunctionCallingAgentWorker# 导入工具类,用于封装工具函数from llama_index.core.tools import FunctionTool# 导入OpenAI接口类,用于与OpenAI API交互from llama_index.llms.openai import OpenAI# 导入日志模块,用于记录系统运行信息import logging# 设置日志级别为INFO,以便查看系统运行细节logging.getLogger("llama_agents").setLevel(logging.INFO)# 初始化消息队列,用于代理间通信message_queue = SimpleMessageQueue()# 初始化控制面服务器,用于管理代理和任务control_plane = ControlPlaneServer( message_queue=message_queue, orchestrator=AgentOrchestrator(llm=OpenAI()),)

接下来创建工具,使用 LlamaIndex 的现有抽象,将这些工具提供给一个智能体,并将该智能体转化为一个独立的微服务:

# 定义一个工具函数,用于返回秘密事实 secret factdef get_the_secret_fact() -> str: """Returns the secret fact.""" return "The secret fact is: A baby llama is called a 'Cria'."# 从工具函数创建一个工具实例tool = FunctionTool.from_defaults(fn=get_the_secret_fact)# 使用工具和OpenAI模型初始化任务执行者worker = FunctionCallingAgentWorker.from_tools([tool], llm=OpenAI("gpt-4"))# 将执行者包装为代理agent = worker.as_agent()# 初始化代理服务,用于对外提供代理功能agent_service = AgentService( agent=agent, message_queue=message_queue, description="General purpose assistant", service_name="assistant",)

最后启动服务和控制平面。注意,这里使用一个辅助函数来运行一个单一查询,然后打印结果。

# 导入LocalLauncher,用于在本地环境中启动代理服务from llama_agents import LocalLauncher# 初始化LocalLauncher,用于启动代理服务和控制面launcher = LocalLauncher( [agent_service], control_plane, message_queue,)# 启动一个单次查询任务,并打印结果result = launcher.launch_single("What's the secret fact?")print(result)

如下是上述应用运行输出信息:



0 阅读:0

云的事情不好说

简介:感谢大家的关注