Cokuygun–AI驱动的旅行计划
建于Wingie/Enuygun Wegathon 2025年
一个智能旅行计划系统,使用由LangChain、LangGraph和Enuygun MCP(模型上下文协议)支持的多代理编排生成个性化的每日行程。
______________________________________________________________________
概述
Cokuygun是一个人工智能驱动的旅行规划师,可以创建优化的、偏好感知的多日行程。该系统结合了:
- LangChain/LangGraph代理 用于智能编排和推理
- 恩努贡MCP 实时旅行数据(航班、酒店、活动、天气)
- 基于规则的求解器 用于约束满足和优化
- React前端 采用现代、响应式UI,实现无缝用户体验
该平台是在 Wingie/Enuygun韦加通2025 hackathon,这个存储库包含了项目的最终形式。
主要特点
- 多日行程生成:制定详细的每日计划,包括活动、时间安排和物流
- 智能编排:LangChain支持的代理协调航班搜索、酒店选择、活动推荐和天气预报
- 通过MCP实时数据:通过标准化的MCP工具获取实时航班价格、可用性、天气预报和兴趣点
- 偏好感知规划:预算水平(低/中/高/豪华)、旅行方式(放松/平衡/打包)、兴趣、饮食限制、出行需求
- 修订和日终反馈:即时修改计划;根据旅行者的反馈调整第二天的强度(疲劳/正常/精力充沛)
- 双语支持:使用i18n的土耳其语和英语用户界面
- 时间线意识:自动处理航班登记、登机、机场接送和中转缓冲区
______________________________________________________________________
建筑
┌─────────────────────────────────────────────────────────────────────┐
│ User Interface │
│ ┌───────────────────────────────────────────────────────────────┐ │
│ │ Frontend (React + TypeScript + Tailwind + shadcn-ui) │ │
│ │ • Trip form (city, dates, preferences) │ │
│ │ • Generated plan display (markdown + interactive UI) │ │
│ │ • Revision interface │ │
│ │ • Day-end survey (feedback collection) │ │
│ └───────────────────────────────────────────────────────────────┘ │
└──────────────────────────┬───────────────────────────────────────────┘
│ HTTP/REST
▼
┌─────────────────────────────────────────────────────────────────────┐
│ API Layer (Node + Fastify) │
│ ┌───────────────────────────────────────────────────────────────┐ │
│ │ Routes: │ │
│ │ • POST /api/plan/generate → orchestrate new plan │ │
│ │ • POST /api/plan/revise → modify existing plan │ │
│ │ • POST /api/survey/dayEnd → process feedback │ │
│ │ • GET /api/profile → user preferences │ │
│ └───────────────────────────────────────────────────────────────┘ │
│ ┌───────────────────────────────────────────────────────────────┐ │
│ │ Services: │ │
│ │ • planner.ts → rule-based plan builder │ │
│ │ • mcpBridge.ts → MCP client wrapper │ │
│ │ • mcpClient.remote.ts → remote MCP connection │ │
│ └───────────────────────────────────────────────────────────────┘ │
└──────────────────────────┬───────────────────────────────────────────┘
│ spawn Python subprocess / HTTP
▼
┌─────────────────────────────────────────────────────────────────────┐
│ Python Agents (LangChain + LangGraph) │
│ ┌───────────────────────────────────────────────────────────────┐ │
│ │ travel_agent.py (Master Orchestrator) │ │
│ │ • Coordinates all satellite agents │ │
│ │ • Generates/revises/day-end plans │ │
│ │ • OpenAI GPT-4o-mini for reasoning │ │
│ │ • Context squeezing (≤4k tokens input, ≤1.2k output) │ │
│ │ • PII masking for logs │ │
│ └───────────────────────────────────────────────────────────────┘ │
│ ┌───────────────────────────────────────────────────────────────┐ │
│ │ Satellite Agents: │ │
│ │ • flight_agent.py → flight search + MCP integration │ │
│ │ • hotel_agent.py → hotel/stays recommendations │ │
│ │ • activities_agent.py → POI and activity suggestions │ │
│ │ • bus_agent.py → ground transportation │ │
│ │ • master_agent.py → user profile integration │ │
│ └───────────────────────────────────────────────────────────────┘ │
└──────────────────────────┬───────────────────────────────────────────┘
│ HTTP (MCP JSON-RPC)
▼
┌─────────────────────────────────────────────────────────────────────┐
│ MCP Server (Node + Express + stdio bridge) │
│ ┌───────────────────────────────────────────────────────────────┐ │
│ │ HTTP Server (http-server.ts) │ │
│ │ • POST /tools/search_flights │ │
│ │ • POST /tools/search_stays │ │
│ │ • POST /tools/search_activities │ │
│ │ • POST /tools/weather │ │
│ │ • POST /tools/search_ground_transport │ │
│ │ • POST /tools/maps_search, /tools/get_route │ │
│ └───────────────────────────────────────────────────────────────┘ │
│ ┌───────────────────────────────────────────────────────────────┐ │
│ │ MCP Server (server.ts – stdio mode) │ │
│ │ • Tool definitions and JSON-RPC handlers │ │
│ │ • Integrates with real Enuygun APIs or mock data │ │
│ └───────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘数据流
- 用户输入:用户在React前端填写行程表单(城市、日期、偏好)
- API请求:前端呼叫
POST /api/plan/generate带行程参数 - Python编排器:API派生
travel_agent.py(或通过子进程/HTTP调用它) - 代理商协调:
travel_agent.py协调卫星代理:
- flight_agent.py → 呼叫MCP /tools/search_flights - activities_agent.py → 呼叫MCP /tools/search_activities - 天气、酒店、地面交通同样通过MCP获取
- 法学硕士推理:主编排器使用OpenAI GPT-4将数据合成为连贯的、偏好感知的计划
- 计划生成:输出为markdown+JSON(天数、插槽、时间、成本)
- 返回前端:API返回结构化计划;前端渲染markdown和交互式UI
______________________________________________________________________
技术栈
前端
- 反应18 + TypeScript
- 维特 (构建工具)
- 顺风 CSS + shadcn ui (组件库)
- React路由器 (导航)
- Recharts (可选图表/图形)
- 国际化 (土耳其语/英语支持)
后端(API)
- Node.js 18+ + TypeScript
- 快车 (web框架)
- 黄道 (模式验证)
- pnpm 工作空间(单仓库结构)
- 共享包:
@trip/shared(模式/枚举),@trip/solver(约束求解器)
MCP服务器
- Node.js+TypeScript
- 快速 (HTTP包装器)
- @模型上下文协议/sdk (MCP协议)
- stdio传输 (MCP服务器以stdio模式运行,由HTTP网桥封装)
代理(Python)
- Python 3.10+
- LangChain + LangGraph (代理编排)
- 兰开夏 (OpenAI GPT-4集成)
- httpx (MCP调用的异步HTTP客户端)
- python dotenv (环境管理)
______________________________________________________________________
代理和编排者
主协调人: travel_agent.py
主要编排者:
- 协调所有卫星代理(航班、酒店、活动、天气、巴士)
- 将多源数据综合成统一的每日计划
- 用途 LangChain聊天OpenAI LLM电话
- 实现 上下文压缩 (≤4k提示令牌,≤1.2k输出令牌)
- 支持三种模式:
- 生成:从头开始创建新计划 - 修订:修改现有计划(例如航班延误或偏好更改) - day_end:根据反馈(疲劳、正常或精力充沛)调整第二天的节奏
- 输出降价计划和机器可读JSON(`` 块)
卫星代理
| 代理 | 目的 | 使用的MCP工具 |
|---|---|---|
flight_agent.py | 航班搜索和选择 | search_flights |
hotel_agent.py | 酒店/住宿推荐 | search_stays |
activities_agent.py | 景点、旅游、博物馆 | search_activities |
bus_agent.py | 地面交通(公共汽车、火车、接送) | search_ground_transport |
master_agent.py | 用户配置文件集成,首选项 | (API调用,而不是MCP) |
LangChain和LangGraph用法
- LangChain:用于LLM抽象(
ChatOpenAI)、消息格式和提示工程 - LangGraph:最初用于工作流/状态机编排(例如,
workflow.py) - 代理模式:工具调用、上下文管理、重试逻辑、结构化输出解析
______________________________________________________________________
MCP集成
模型上下文协议(MCP) 用于向代理提供实时旅行数据。
MCP服务器(backend/apps/mcp)
- HTTP网桥:
http-server.ts将MCP工具暴露为REST端点(例如,POST /tools/search_flights) - MCP服务器:
server.ts在stdio模式下运行,处理JSON-RPC请求 - 工具:定义见
tools/目录:
- flights.ts –航班搜索 - stays.ts –酒店搜索 - activities.ts –活动搜索 - weather.ts –天气预报 - ground.ts –公共汽车/火车/换乘搜索 - maps.ts –地图搜索、路线计算
______________________________________________________________________
致谢
该项目是在 Wingie/Enuygun韦加通2025,一场专注于创新旅游技术解决方案的黑客马拉松。
关键技术
- LangChain和LangGraph:用于构建智能、协调的人工智能代理
- 模型上下文协议(MCP):用于标准化、基于工具的数据访问
- 恩努贡MCP:用于真实旅行数据API(航班、酒店、活动)
贡献者(团队轨道)
- Tuğrap Efe Dikpınar
- 艾哈迈德·默特·特兹坎
- 阿尔佩伦·萨里。
- 特别感谢Wingie/Enuygun主办黑客马拉松
联系
tugrapefedikpinar@gmail.com
______________________________________________________________________
我们很兴奋
