Token导航 LogoToken导航TokenDH.com
Agentic Travel Planner logo
地图位置stdio官方级别未说明来源级核验

Agentic Travel Planner

MCP Server

一个生产就绪的对话式旅行代理,利用LLM规划行程并通过集成的MCP服务器预订航班、酒店、汽车等实时库存。

工具数

0

提示词数

0

GitHub Stars

2

资源数

0
PythonVS Code位置天气VS Code

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Fieldy76

提供方

Fieldy76

最后核验

2026/5/17 20:19

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python -m venv venv

详细介绍

代理旅行工作流程

使用Python和.NET构建的用于旅行规划的生产就绪、无框架的代理工作流 模型上下文协议(MCP).

🚀 特性

核心能力

  • 无框架:使用标准Python库从头开始构建,展示了对代理架构的深刻理解。
  • MCP集成:实现用于标准化工具通信的自定义、轻量级MCP客户端/服务器架构。
  • 多LLM支持:在OpenAI、Anthropic和Google Gemini模型之间无缝切换。

- 鲁棒稳定性:包括自动重试、安全过滤器处理和连接错误恢复。 - 谷歌双子座2.0:原生支持多模式输入(文本+文件)和优化的指令遵循。 - 灵活的配置不区分大小写 LLM_PROVIDER (例如。, GOOGLEgoogle 两者都工作)。

  • 集成工具:

- ✈️ 航班搜索和预订:实时航班搜索(Amadeus API),提供往返支持。 - 智能往返工作流程:选择出境后自动搜索回程航班。 - 🔍 主动日期灵活性:当没有找到航班时,会自动搜索±1-2天并显示所有选项。 - 🧠 智能日期推断:根据“今天”智能推断“1月30日”等日期的年份,处理拼写错误和相对日期,而不会唠叨。 - ✅ 航班选择验证:防止产生幻觉的航班代码-仅使用实际搜索结果中的航班。 - 👥 多乘客定价:自动计算总价×乘客人数。 - 📋 乘客详细信息确认:预订前确认姓名护照配对,以避免混淆。 - 模拟模式:当缺少API键时,回退到模拟数据。 - 智能预订:处理“预订第一个”或航班代码。 - 🚗 汽车租赁:为您的旅行预订车辆。 - ☀️ 天气预报:通过航班搜索自动获取。 - 💳 支付:生产就绪的Stripe集成,自动回退到模拟。 - 自动支付:预订后自动处理付款。 - 📧 邮件确认:通过Stripe将预订确认回执发送到客户的电子邮件。 - 📅 相对日期处理:自然语言日期支持(“明天”、“两天后”、“下周”)。

  • 交互式CLI和Web UI:通过简单的终端界面或现代、精致的Web UI与代理交互。
  • 🌍 多语言支持:代理人用你写的语言(意大利语、西班牙语、法语、德语等)回复。
  • 📜 搜索历史记录:具有localStorage持久性的完整对话历史记录,删除单个对话,并快速访问以前的查询。

生产就绪功能

  • 📊 结构化日志记录:JSON格式的日志 request_id, timestamp,以及用于可观察性的上下文元数据。
  • 🔭 廊坊可观察性:可选的LLM跟踪和分析-监控延迟、令牌使用和成本。
  • ✅ Pydantic 验证:对使用Pydantic模型的所有工具进行严格的类型验证。
  • ⚡ 异步架构:使用高性能异步执行 asyncioFastAPI.
  • 🔄 错误处理和检索:用于弹性工具执行的指数回退重试逻辑。
  • 💾 状态管理:抽象内存接口,具有用于会话持久化的内存中实现。
  • 🧪 综合测试:涵盖协议验证、编排器逻辑和完整工作流程的集成测试。
  • 🐳 Docker支持:具有安全最佳实践的多阶段Dockerfile(非root用户)。

🛠️ 安装

  1. 克隆仓库:
   git clone https://github.com/yourusername/agentic-travel-workflow.git
   cd agentic-travel-workflow
  1. 创建并激活虚拟环境:
   python -m venv venv
   source venv/bin/activate  # On Windows: venv\Scripts\activate
  1. 安装依赖项:
   pip install -r requirements.txt
\[!提示\] 如果使用VS Code,则包括 .vscode/settings.json 将自动隐藏 __pycache__ 文件夹,以获得更干净的工作空间。

⚙️ 配置

  1. 复制示例环境文件:
   cp .env.example .env
  1. 打开 .env 并添加您的API密钥:
   # LLM API Keys (At least one is required)
   OPENAI_API_KEY=sk-...
   ANTHROPIC_API_KEY=sk-ant-...
   GOOGLE_API_KEY=AIza...

   # Optional Service Keys (Mocks used if missing)
   FLIGHT_API_KEY=...
   FLIGHT_API_SECRET=...

   # Payment Processing (Stripe - Optional, uses mock if missing)
   STRIPE_SECRET_KEY=sk_test_...
   STRIPE_PUBLISHABLE_KEY=pk_test_...

> \[!提示\] > 条纹设置(可选): > > 1. 在以下网址创建免费帐户 stripe.com > 1. 从获取测试API密钥 仪表盘→ 开发者→ API密钥 > 1. 将它们添加到您的 .env 文件 > 1. 使用测试卡 4242 4242 4242 4242 任何未来到期和CVC > 1. 如果未配置Stripe密钥,应用程序将退回模拟支付 > > 测试您的Stripe配置: > > ``bash > python tests/test_stripe_config.py > `` > > 这将验证您的API密钥是否正常工作。

> \[!提示\] > Langfuse可观察性(可选): > > 1. 在以下网址创建免费帐户 langfuse.com > 1. 从项目设置中获取API密钥 > 1. 将它们添加到您的 .env 文件: > ``ini > LANGFUSE_SECRET_KEY=sk-lf-... > LANGFUSE_PUBLIC_KEY=pk-lf-... > LANGFUSE_HOST=https://cloud.langfuse.com > ` > 1. 所有LLM呼叫和代理轮换都将被自动跟踪 > 1. 如果未配置Langfuse密钥,则应用程序正常工作(优雅降级) > > **故障排除:** > 如果您遇到痕迹未出现的问题,请确保您正在使用 start_spanstart_generation` (v3neneneba API),如果自定义跟踪逻辑,因为decorator与异步代理循环不兼容。

> \[!重要\] > 应用程序将自动从以下位置加载这些密钥 .env 文件。在运行应用程序之前,请确保此文件存在于根目录中。

🏃 用法

Web界面(推荐)

使用Uvicorn启动FastAPI web服务器:

uvicorn web_server:app --port 5000 --reload

打开浏览器并导航到 http://localhost:5000.

命令行接口

启动异步CLI代理:

python travel_agent/cli.py

键入您的旅行请求,然后按Enter键。类型 quit 退出。 你:我想计划下个月去东京旅行。 代理人:我很乐意帮你计划你的东京之旅!你到底打算什么时候去? 你:从12月10日到12月20日。 代理人:太好了!让我帮你查一下航班和天气。..

Web UI功能

web界面包括:

  • 💬 聊天界面:具有消息历史记录的现代响应式聊天用户界面
  • 🎨 双子座灵感设计:

- 带有谷歌蓝色调的干净灯光主题 - 材料设计3(MD3)造型指南 - 平滑的立方贝塞尔动画 - 药丸形状的按钮和输入 - 多色渐变英雄文本 - 微妙的阴影和悬停效果

  • 🔗 可点击链接:航班预订链接呈现为可点击元素
  • 🫧 实时思维指标:带有弹跳点的动画“思考…”文本
  • 📱 自适应聊天布局:从欢迎屏幕平滑过渡到干净、基于药丸的对话视图
  • 📎 多格式文件上传:直接上传文档(PDF、DOCX、TXT、图像)进行分析。文本文档在服务器端解析以实现最大兼容性。
  • 📜 可折叠搜索历史侧栏:

- 开始折叠以获得更清晰的初始视图 - 动画V形图标在切换时旋转 - 上下文菜单(3点):共享、固定、重命名和删除对话 - 固定对话 将它们放在列表的首位 - 智能时间戳(例如,“500万年前”、“2小时前”和“3天前”) - 确认后清除所有历史记录 - 使用localStorage的持久存储(最多50个对话)

  • ✨ 自定义样式模式:

- 破坏性行为的优雅确认对话框 - 输入重命名模式(替换浏览器提示) - Toast通知以获取反馈(取代浏览器警报)

  • ✈️ 灵活的航班预订:

- 接受多种选择格式(航班代码、数字或自然语言) - 清晰的确认信息,包括预订参考和详细信息

  • 📊 实时状态:代理通过服务器发送的事件处理工具时实时更新

🧪 测试

运行综合测试套件:

# Activate virtual environment first
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Run all tests
python -m unittest discover tests -v

测试覆盖率:

  • 方案验证(Pydantic模型)
  • 编排器逻辑(错误处理、重试、内存)
  • 完整集成工作流程

📂 项目结构

├── web_server.py           # FastAPI Web Server (Entry Point)
├── static/                 # Frontend Assets
│   ├── index.html
│   ├── css/
│   └── js/
├── travel_agent/
│   ├── cli.py              # CLI Entry point
│   ├── config.py           # Configuration management
│   ├── agent/
│   │   ├── llm.py          # Async LLM Provider wrappers
│   │   ├── orchestrator.py # Core Async Agent logic
│   │   ├── memory.py       # Conversation memory
│   │   └── cache.py        # Performance caching
│   ├── mcp/
│   │   ├── protocol.py     # MCP JSON-RPC definitions
│   │   └── mcp_server.py   # Async MCP Server implementation
│   └── tools/              # Async Tool implementations
│       ├── flights.py
│       ├── cars.py
│       ├── weather.py
│       └── payment.py

🐳 部署

使用Docker构建和运行:

# Build the image
docker build -t travel-agent .

# Run the container
docker run -p 5000:5000 --env-file .env travel-agent

Docker镜像使用多阶段构建,并作为非root用户运行以确保安全。

📚 教育资源

对于那些学习代理工作流程的人,我已经包括了一个完整的 代码库的注释版本annotated/ 目录。每个文件都有注释,以解释其目的和功能。

关键注释文件:

📖 查看所有带注释的文件→

📜 API归因

此应用程序使用以下第三方API:

有关详细的许可证信息和归属要求,请参阅 许可.md.

🤝 贡献

欢迎投稿!请随时提交拉取请求。

许可证

麻省理工学院

目录标签

目录标签

PythonVS Code位置天气智能旅行规划本地部署多语言支持航班预订天气查询支付集成

支持客户端

VS Code

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP