使用说明
带有AI和MCP的剧作家自动化API
一个复杂的网络自动化项目,将Playwright浏览器自动化与FastAPI REST API和Google Gemini AI相结合,使用模型上下文协议(MCP)实现智能、自然语言驱动的网络抓取。
概述
该项目实现了产品搜索的自动化 要报废的书 有三种强大的方法:
- 核心自动化:使用Playwright进行传统的基于关键字的产品搜索
- REST API:具有同步和异步端点的FastAPI包装器
- AI驱动的MCP代理:Google Gemini AI使用模型上下文协议处理的自然语言查询
特性
核心自动化
- 智能关键字匹配(精确和部分)
- 全面的产品数据提取(名称、价格、评级、可用性、URL)
- 无头和有头浏览器模式
- 强大的错误处理和详细的日志记录
REST API
- 同步搜索:即时结果通过
/api/search - 异步搜索:通过后台任务处理
/api/search/async - MCP AI搜索:通过自然语言查询
/api/mcp/search - 交互式Swagger UI文档位于
/docs - 健康检查终点位于
/health - 异步操作的任务管理端点
AI和MCP集成
- 简单的英语目标解释(例如,“找到最便宜的书”)
- 使用Google Gemini AI生成动态执行计划
- 通过MCP进行实时页面可访问性树分析
- 全面的查询支持:
- 价格查询:最便宜,最贵,低于X英镑,介于X英镑和Y英镑之间
- 评级查询:1-5星书籍,最佳/最差评级
- 可用性查询:有货,缺货
- 统计:平均价格、总计数、排序
- 计数:总共有多少本书
项目结构
项目/
├── core/
│ ├── ai_agent.py#基于MCP的人工智能代理
│ ├── product_searcher.py#核心编剧自动化
├── api/
│ └── main.py#FastAPI REST API
├── requirements.txt#Python依赖项
├── .env#环境配置
需求
依赖项
剧作家==1.48.0
fastapi==0.115.0
标准值=0.32.0
媒染剂==2.9.2
python dotenv==1.0.1
谷歌生成人工智能==0.8.3
httpx==0.27.2
pytest==8.3.3
pytest剧作家==0.5.2
环境变量
创建一个 .env 文件:
环境=开发
调试=真
LOG_LEVEL=信息
DEFAULT_HEADLESS=真
默认超时=30000
GEMINI_API_KEY=您的_API_KEY_here
安装
1.克隆和设置
克隆 https://github.com/priyanka-bh2/playwright-mcp-agent
cd剧作家mcp经纪人
2.安装Python依赖项
pip安装-r要求.txt
3.安装Playwright浏览器
剧作家安装铬
4.配置环境
创建一个 .env 使用Google Gemini API密钥文件:
echo“GEMINI_API_KEY=your_KEY_here”>.env
用法
选项1:核心自动化脚本
python核心/产品seecher.py
测试搜索的交互模式:
输入搜索关键字:Light
✓ 产品:阁楼里的灯
💰 价格:51.77英镑
⭐ 评级:三星
选项2:REST API
python-api/main.py或uvicorn-api.main:app-reload 访问API:
- Swagger用户界面: http://localhost:8000/docs
- 健康检查: http://localhost:8000/health
同步搜索
卷曲-X POST”http://localhost:8000/api/search"
-H“内容类型:应用程序/json”
-d'{“product_name”:“Light”,“headless”:true}'
异步搜索
提交任务
卷曲-X POST”http://localhost:8000/api/search/async"
-H“内容类型:应用程序/json”
-d'{“product_name”:“Sharp”,“headless”:true}'
检查状态
卷曲”http://localhost:8000/api/task/{task_id}“
选项3:AI驱动的MCP代理
python核心/ai_agent.py
交互式人工智能代理:
你的目标:找到最便宜的书
🤖 AI:生成执行计划。..
✓ 生成4个步骤
🚀 正在启动浏览器。..
✓ 导航到https://books.toscrape.com/
✓ 已提取20项
✓ 应用过滤器:最便宜
通过REST API
卷曲-X POST”http://localhost:8000/api/mcp/search"
-H“内容类型:应用程序/json”
-d'{“user_goal”:“查找所有五星级书籍”}
API终点
| 端点 | 方法 | 描述 |
|---|---|---|
/ |
获取 | API信息和功能 |
/health |
GET | 健康检查和服务状态 |
/docs |
GET | 交互式Swagger用户界面 |
/api/search |
POST | 同步产品搜索 |
/api/search/async |
POST | 异步产品搜索 |
/api/task/{task_id} |
GET | 获取异步任务状态 |
/api/tasks |
GET | 列出所有任务 |
/api/tasks |
DELETE | 清除所有任务 |
/api/mcp/search |
POST | 人工智能驱动的自然语言搜索 |
AI查询示例
MCP AI代理能够理解自然语言:
“找到最便宜的书”
“给我看看所有五星级的书”
“哪些书的价格低于30英镑?”
“按评级列出书籍”
“有多少本书在库存?”
“最贵的书是什么?”
“给我看看20英镑到40英镑之间的书”
“获取所有书籍的平均价格”
建筑
核心产品搜索器
- 启动Playwright浏览器
- 导航到要报废的书籍
- 使用关键字匹配搜索产品
- 提取全面的产品详细信息
- 返回结构化数据
MCP AI代理
- 用户提供简单的英语目标
- Google Gemini生成执行计划
- MCP提供实时页面上下文
- 剧作家执行自动化步骤
- AI过滤并分析结果
- 返回自然语言答案
FastAPI REST API
- 接收HTTP请求
- 使用Pydantic验证请求数据
- 在流程池中执行自动化
- 返回结构化JSON响应
- 管理异步任务生命周期
测试
手动测试
测试核心自动化
python核心/产品seecher.py
测试API
python-api/main.py
访问http://localhost:8000/docs
测试AI代理
python核心/ai_agent.py
API卷曲试验
基本搜索
卷曲-X POST”http://localhost:8000/api/search"
-H“内容类型:应用程序/json”
-d'{“product_name”:“Light”,“headless”:true}'
AI搜索
卷曲-X POST”http://localhost:8000/api/mcp/search"
-H“内容类型:应用程序/json”
-d'{“user_goal”:“查找最便宜的书”}'
错误处理
该项目包括全面的错误处理:
- 具有可配置超时的网络超时处理
- 浏览器崩溃恢复
- 搜索查询验证无效
- 服务不可用时性能下降
- 详细的错误消息和日志记录
配置
通过环境变量自定义行为:
ENVIRONMENT:开发/生产DEBUG:启用调试日志记录LOG_LEVEL:信息/调试/警告/错误DEFAULT_HEADLESS:无头运行浏览器DEFAULT_TIMEOUT:浏览器操作超时(ms)GEMINI_API_KEY:人工智能功能的Google Gemini API密钥
局限性
- 目标网站:仅限图书报废演示网站
- AI功能需要有效的Google Gemini API密钥
- MCP代理需要互联网连接
- 某些系统的无头模式限制