统一披萨与MCP助手

一个基于终端的统一助手,提供个人助理功能和披萨订购自动化服务。

  • by segunoluwole30
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 segunoluwole30/Personal-AI-Assistant

使用说明

HW3统一披萨+MCP助理

本自述文件仅关注:

  1. HW3_for_编程_LLMs.pdf(分配规范/上下文)
  2. HW3_final_submission/unified_agent.py(多代理可执行)

1.概述

unified_agent.py 实现了一个基于终端的统一助手,具有两个角色:

  • 使用托管MCP工具(Zapier、Firecrawl)的个人助理(默认)。
  • PizzaOrderingAgent(当用户意图与pizza/order关键字匹配时切换;生成可运行的Python代码,通过Playwright助手自动订购 pizza_order_browser.order_pizzas).

2.密钥文件:unified_agent.py

主要部件:

  • 环境负载(dotenv):预期 ZAPIER_MCP_TOKEN, FIRECRAWL_API_KEY.
  • 托管MCP工具:Zapier+Firecrawl HostedMCPTool.
  • Pizza代理:本地聊天完成模型(LM Studio端点)被指示在收集到所有Pizza参数时仅发出原始Python。
  • 对话循环:
    • 正则表达式意图检测: pizza|pepperoni|order|delivery|domino|hungry.
    • 披萨代理商代表;如果代码包括 order_pizzas( 它是写给 generated_pizza_order.py 然后执行。
    • 否则,使用MCP工具访问运行PersonalAssistant。
  • 执行前的代码卫生(剥离回溯、规范化引号)。
  • UTF-8标准输出包装器。

安全/假设:

  • 剧作家& pizza_order_browser.py 必须存在并且功能正常(如果站点更改,选择器可能会中断)。
  • 生成的脚本与同步运行 subprocess.run.
  • pizza代理没有持久会话(在代码发出之前,每个回合都是独立的)。

3.环境设置

python -m venv .venv
.venv\Scripts\activate
pip install -r HW3_final_submission/requirements.txt
python -m playwright install chromium

在Zapier中配置MCP服务器并检索授权令牌
使用Firecrawl注册并检索授权令牌

创建 .env (不要泄露真正的秘密):

ZAPIER_MCP_TOKEN=YOUR_TOKEN
FIRECRAWL_API_KEY=YOUR_TOKEN
OPENAI_API_KEY=DUMMY_OR_REQUIRED_FOR_OTHER TOOLS

(可选)在以下位置启动LM Studio模型:http://127.0.0.1:1234/v1(api_key占位符“lmstudio”)。

4.跑步

python HW3_final_submission/unified_agent.py

示例交互:

  • 键入常规查询→ 由个人助理处理(可能会呼叫Zapier/Firecrawl)。
  • 键入“我想订两份去主街123号的意大利辣肠披萨”→ 切换到PizzaOrderingAgent,请求缺少的字段,输出原始Python,执行。

5.延伸

最小扩展点:

  • 在正则表达式中添加新的意图关键字。
  • 通过更改来交换本地模型 OpenAIChatCompletionsModel base_url。
  • 添加更多MCP工具 assistant_agent.tools.

6.故障排除

问题 修复
失踪 agents 模块 确保其软件包在PYTHONPATH中已安装/可用。
剧作家超时 重新安装浏览器;验证网络;更新选择器。
披萨代理反复输出问题 提供所有必填字段(地址、城市、州、邮政编码、披萨列表)。
Unicode引号错误 Sanitizer已经正常化;检查所有粘贴的智能报价。
托管MCP 401 重新生成Zapier/Firecrawl令牌;确认 .env 加载。

9.最小代码执行路径(Pizza)

生成的代码片段(例如,代理在信息完成后可能会生成):

from pizza_order_browser import order_pizzas
order_pizzas('161 Wellborn Road', 'College Station', 'TX', '77840', [('Ultimate Pepperoni', 2)])

控制器将此写入 generated_pizza_order.py 并运行它。

10.注意事项

  • 交互时保持响应简洁(代理指令强制执行)。
  • 如果出现误报,请调整正则表达式。
  • 目标是演示MCP工具的使用和披萨订购功能