在线杂货代理

一个使用Google Gemini嵌入和MongoDB工具集实现的在线杂货代理,能够搜索产品、添加到购物车并计算总价。

  • by mongodb-developer
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 mongodb-developer/Google-Cloud-MCP-Toolbox-Demo

使用说明

Google Cloud MCP 工具箱演示

这个仓库包含一个小型演示代理,它使用了Google Gemini嵌入和一个 MCP 工具箱 使用MongoDB工具集实现一个“在线杂货代理”。该代理展示了如何使用向量搜索在库存中查找产品,将产品添加到购物车(MongoDB集合),以及获取购物车的总金额(对购物车集合进行聚合)。

  • mongodb-groceries-agent/包含演示代理实现(agent.py)并初始化包。
  • tools.yamlMongoDB工具的工具箱工具集定义。

先决条件

在运行演示之前,请确保您的机器上已安装并可用以下内容:

  • Python 3.10+(推荐使用3.11版本)
  • pip(或等效的Python包管理器)
  • MCP Toolbox 服务器(遵循 说明;指示;指令)
  • 一个可访问GenAI服务的Google API密钥(设置为 GOOGLE_API_KEY 环境变量)
  • 一个MongoDB部署(支持Atlas免费M0集群——以下为操作指南)

设置一个免费的MongoDB Atlas M0集群

您可以创建一个免费的(M0)MongoDB Atlas 集群。请按照以下步骤操作:

  1. 打开地图册 浏览器中的注册页面。

  2. 注册一个免费的MongoDB账户,或者如果您已有账户,请登录。

  3. 点击“创建集群”并选择免费套餐(M0 / 共享)。

  4. 选择一个云服务提供商和区域(演示中使用默认设置即可)。

  5. 创建数据库用户:进入“数据库访问”界面,并添加一个带有密码的用户。保存此用户名/密码——您将在连接字符串中需要它。

  6. 允许您的IP地址:进入“网络访问”设置,并添加您当前的IP地址或0.0.0.0/0用于测试(不建议在生产环境中使用)。

  7. 点击“连接”,选择“连接您的应用程序”,然后复制提供的连接字符串。

    在(代码/配置中)使用连接字符串 tools.yaml 作为 uri 或者更可取的是,通过环境变量来设置它。一个示例连接字符串如下:

    mongodb+srv://<username>:<password>@<your-cluster>.mongodb.net/<dbname>?retryWrites=true&w=majority
    

    注:更换 <username>, <password>, <your-cluster> 并且 <dbname> 使用来自Atlas的值。对于本地测试,您也可以使用本地MongoDB服务器。

  8. 将示例杂货产品数据导入一个名为(此处可填写具体名称,但原文未给出)的集合中 products 在一个名为……的数据库中 groceries你可以使用提供的 sample_data/groceries.json 文件以及 MongoDB Atlas 用户界面(UI)或 mongosh 来导入它。

mongoimport --uri="<your-connection-string>" --db="grocery_store" --collection="inventory" --file="grocery_store.inventory.json" --jsonArray

配置

在运行代理程序之前,请设置以下环境变量:

  • GOOGLE_API_KEY — 您的Google GenAI API密钥

示例(macOS / zsh):

export GOOGLE_API_KEY="your-google-api-key"

运行演示代理

  1. 安装依赖项(如果此仓库是更大项目的一部分,请相应调整)。从项目根目录执行:
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt  # if a requirements file exists; otherwise install needed packages manually
  1. 启动工具箱服务器:
./toolbox --tools-file "tools.yaml"
  1. 确保Toolbox服务器正在运行且可访问于 http://127.0.0.1:5000。

  2. 运行代理代码(此演示文件旨在由启动代理的编排脚本导入)。要快速尝试简单运行或导入模块:

adk web

根据需要调整调用方式,以将代理集成到管理代理生命周期的运行时环境中。

什么 agent.py does(助动词,用于构成疑问句、否定句等,无实际意义)

  • 阅读次数 GOOGLE_API_KEY 从环境中获取并设置它 os.environ 用于Google GenAI客户端。
  • 创建一个 genai.Client() 以及一个针对(某目标)的Toolbox客户端 http://127.0.0.1:5000.
  • 提供 generate_embeddings(query) 使用(某种方法或技术)来生成嵌入向量 gemini-embedding-001。
  • 提供 find_similar_products(query) 该工具通过工具箱工具运行向量搜索 find_similar_documents 针对一个名为……的指数 vector_index 以及该领域 gemini_embedding。
  • 构建一个 Agent 配置为使用这些工具以及一个 grocery-shopping-toolset 从工具箱中加载。

故障排除

  • 如果你从GenAI那里收到认证错误,请确认 GOOGLE_API_KEY 已设置且有效。
  • 如果Toolbox客户端无法连接,请确认ToolboxSync服务器正在运行,并且在配置的地址上可访问。
  • 如果出现MongoDB连接问题,请检查您的Atlas IP白名单和数据库用户凭据。

贡献者 ✨


Stanimira Vlaeva

免责声明

自行使用,风险自担;非MongoDB官方支持产品