ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

【Agent】【tools】8.MCP Toolbox与LlamaIndex集成分析

【Agent】【tools】8.MCP Toolbox与LlamaIndex集成分析 1. 案例目标本案例展示了如何使用MCP Toolbox模型上下文协议工具箱将数据库与LlamaIndex代理集成实现企业级的数据库工具访问。MCP Toolbox是一个开源的MCP服务器专为数据库设计具有企业级和生产级质量通过处理连接池、身份验证等复杂性使工具开发更加容易、快速和安全。案例主要演示了如何通过ToolboxClient从MCP服务器加载工具集并使用这些工具构建一个能够处理酒店搜索、预订和取消等任务的智能代理。2. 技术栈与核心依赖核心库toolbox-llamaindex - LlamaIndex兼容的MCP Toolbox SDKllama-index - 核心框架提供代理和工作流功能llama-index-llms-google-genai - Google GenAI模型集成服务组件MCP Toolbox服务器 - 提供数据库工具集Google GenAI API - 提供Gemini模型服务AgentWorkflow - LlamaIndex代理工作流3. 环境配置注意使用本案例前需要先部署和配置MCP Toolbox服务器并确保其运行在可访问的地址如http://127.0.0.1:5000。安装步骤pip install toolbox-llamaindex环境变量设置os.getenv(GOOGLE_API_KEY) # 设置Google API密钥MCP Toolbox服务器配置参考官方文档进行服务器安装和配置安装服务器配置Toolbox4. 案例实现4.1 导入必要模块import asyncioimport osfrom llama_index.core.agent.workflow import AgentWorkflowfrom llama_index.core.workflow import Contextfrom llama_index.llms.google_genai import GoogleGenAIfrom toolbox_llamaindex import ToolboxClient4.2 设置代理提示和查询prompt Youre a helpful hotel assistant. You handle hotel searching, booking and cancellations.When the user searches for a hotel, mention its name, id, location and price tier.Always mention hotel ids while performing any searches. This is very important for any operations.For any bookings or cancellations, please provide the appropriate confirmation.Be sure to update checkin or checkout dates if mentioned by the user.Dont ask for confirmations from the user.queries [Find hotels in Basel with Basel in its name.,Can you book the Hilton Basel for me?,Oh wait, this is too expensive. Please cancel it and book the Hyatt Regency instead.,My check in dates would be from April 10, 2024 to April 19, 2024.,]4.3 初始化LLM和Toolbox客户端async def run_application():llm GoogleGenAI(api_keyos.getenv(GOOGLE_API_KEY),modelgemini-2.0-flash-001,)# Load the tools from the Toolbox serverasync with ToolboxClient(http://127.0.0.1:5000) as client:tools await client.aload_toolset()4.4 创建代理并执行查询agent AgentWorkflow.from_tools_or_functions(tools,llmllm,)for tool in tools:print(tool.metadata)ctx Context(agent)for query in queries:response await agent.run(user_msgquery, ctxctx)print()print(f---- {query} ----)print(str(response))4.5 可用工具集从Toolbox服务器加载的工具包括book-hotel- 通过ID预订酒店cancel-hotel- 通过ID取消酒店预订search-hotels-by-location- 根据位置搜索酒店search-hotels-by-name- 根据名称搜索酒店update-hotel- 更新酒店的入住和退房日期5. 案例效果案例运行后代理能够成功处理以下酒店相关任务搜索巴塞尔名称中包含Basel的酒店返回Holiday Inn Basel、Hilton Basel和Hyatt Regency Basel预订Hilton Basel酒店取消Hilton Basel预订并改为预订Hyatt Regency Basel更新Hyatt Regency Basel的入住日期为2024年4月10日退房日期为2024年4月19日代理能够准确理解用户意图正确调用相应的工具并保持对话上下文实现多轮交互的酒店管理任务。6. 案例实现思路6.1 架构设计本案例采用客户端-服务器架构其中MCP Toolbox服务器作为后端提供数据库工具集LlamaIndex代理作为前端通过ToolboxClient与服务器通信Google GenAI的Gemini模型作为推理引擎6.2 工作流程初始化Google GenAI LLM创建ToolboxClient连接到MCP Toolbox服务器从服务器异步加载工具集使用加载的工具创建AgentWorkflow设置代理上下文和提示依次处理用户查询调用相应工具6.3 关键技术点异步通信- 使用async/await模式处理与MCP服务器的通信上下文管理- 使用async with确保资源正确释放工具元数据- 打印工具元数据帮助理解可用功能状态保持- 通过Context对象在多轮对话中保持状态7. 高级功能与扩展建议7.1 MCP Toolbox高级功能MCP Toolbox提供了多种高级功能可用于增强数据库工具的安全性认证参数- 将工具输入自动绑定到OIDC令牌的值便于运行敏感查询而不泄露数据授权调用- 根据用户的Auth令牌限制工具的使用权限OpenTelemetry- 通过OpenTelemetry从Toolbox获取指标和跟踪信息7.2 扩展建议多数据库支持- 扩展支持多种数据库类型MySQL、PostgreSQL、MongoDB等缓存机制- 添加查询结果缓存提高响应速度错误处理- 增强错误处理和重试机制并发控制- 实现更精细的并发控制和资源管理自定义工具- 开发特定领域的自定义工具安全增强- 集成更多安全特性如查询审计和访问控制8. 总结本案例展示了如何使用MCP Toolbox将数据库工具与LlamaIndex代理无缝集成实现企业级的数据库访问和管理。通过MCP Toolbox开发者可以轻松创建安全、高效的数据库工具而无需处理连接池、身份验证等底层复杂性。案例中的酒店管理代理演示了如何利用预定义的数据库工具集搜索、预订、取消、更新来构建实用的应用程序。这种方法可以扩展到各种需要数据库访问的场景如客户关系管理、库存管理、财务分析等。MCP Toolbox与LlamaIndex的结合为构建企业级AI应用提供了强大的基础使开发者能够专注于业务逻辑而非基础设施细节。
返回列表