内容
# 🍔 OfferRadar — AI 驱动的 Swiggy 优惠券查找工具
> 与 AI 代理聊天,查找最佳 Swiggy 食品优惠券,按实际节省金额排名,并自动应用最优惠的优惠券。可与任何 MCP 兼容的 LLM 合作 — Claude、GPT-4o、Gemini、Llama 或通过 Ollama 使用本地模型。
---
## 功能介绍
大多数人会错过 Swiggy 的优惠券,因为查找和比较不同餐厅的优惠券很麻烦。OfferRadar 自动完成整个过程:
1. 你说出你想吃什么(例如 *"我想吃比尔亚尼"*)
2. 代理搜索附近的餐厅
3. 并行获取所有结果中可用的优惠券
4. 按订单的实际节省金额对优惠券进行排名
5. 建立购物车并自动应用最佳优惠券
6. 显示你实际节省了多少钱
---
## 支持的 LLM
OfferRadar 使用 **LiteLLM** 作为通用 LLM 网关。只需更改一个环境变量即可切换模型,无需更改代码:
| 提供商 | 示例模型 | 需要 API 密钥 |
|---|---|---|
| Anthropic | `claude-opus-4-5` | 是 |
| OpenAI | `gpt-4o` | 是 |
| Google | `gemini/gemini-1.5-pro` | 是 |
| Mistral | `mistral/mistral-large` | 是 |
| Groq | `groq/llama-3-70b` | 是(免费层) |
| Ollama(本地) | `ollama/llama3` | 否 |
| 任何 OpenAI 兼容的 API | 自定义基准 URL | 可选 |
---
## 演示
```
你:我想订购比尔亚尼,给我找最好的优惠
代理:搜索您附近的餐厅...
找到 8 家提供比尔亚尼的餐厅。获取优惠中...
🏆 最佳优惠:Behrouz Biryani
优惠券:FLAT60 → 在 ₹299+ 订单上节省 ₹120
亚军:Paradise Biryani
优惠券:SAVE30 → 在 ₹349+ 订单上节省 ₹90
是否将 Behrouz 添加到购物车并应用 FLAT60?(是/否):是
✅ 已应用优惠券。最终总计:₹179 + 配送
```
---
## 架构
```
用户(CLI)
│
▼
LLM 代理(agent.py)
│
├── LiteLLM 网关(llm_client.py)
│ ├── Anthropic Claude
│ ├── OpenAI GPT-4o
│ ├── Google Gemini
│ ├── Groq / Llama 3
│ └── Ollama(本地)
│
└── Swiggy MCP 工具(swiggy_mcp.py)
├── search_restaurants()
├── fetch_food_coupons() ← 使用 asyncio.gather 并行处理
├── update_food_cart()
├── apply_food_coupon()
└── place_food_order()
│
▼
mcp.swiggy.com/food
```
工具定义在 `tools.py` 中使用 OpenAI 风格的 JSON 模式编写。LiteLLM 自动将它们翻译为每个提供商的原生格式。
---
## 设置
### 安装
```bash
git clone https://github.com/yourusername/offerradar
cd offerradar
pip install -r requirements.txt
```
### 配置
```bash
cp .env.example .env
```
```env
# Swiggy(必需)
SWIGGY_MCP_TOKEN=你的 Swiggy MCP 令牌
SWIGGY_ADDRESS_ID=你的地址 ID
# 选择你的 LLM
LLM_MODEL=claude-opus-4-5 # Anthropic
# LLM_MODEL=gpt-4o # OpenAI
# LLM_MODEL=gemini/gemini-1.5-pro # Google
# LLM_MODEL=groq/llama-3-70b # Groq
# LLM_MODEL=ollama/llama3 # 本地 — 不需要 API 密钥
# 你的提供商的 API 密钥(Ollama 跳过)
ANTHROPIC_API_KEY=sk-ant-...
# OPENAI_API_KEY=sk-...
# GROQ_API_KEY=...
```
### 运行
```bash
python main.py
```
### 完全本地运行(免费)
```bash
# 安装 Ollama:https://ollama.com
ollama pull llama3
LLM_MODEL=ollama/llama3 python main.py
```
---
## 项目结构
```
offerradar/
├── main.py # CLI 入口
├── agent.py # LLM 代理 + 工具编排
├── llm_client.py # LiteLLM 包装器(可交换的 LLM 层)
├── swiggy_mcp.py # Swiggy MCP 客户端
├── tools.py # 工具定义(LLM 的 JSON 模式)
├── coupon_ranker.py # 节省排名逻辑
├── config.py # 环境配置
├── requirements.txt
├── .env.example
├── CLAUDE.md
└── README.md
```
---
## 路线图
- [ ] Instamart 超市优惠券查找器
- [ ] Dineout 餐桌预订
- [ ] Streamlit 网页界面
- [ ] WhatsApp 机器人接口
- [ ] 流式响应
---
## 许可证
MIT