English | 简体中文
TripNexus 是一个面向旅行规划场景的 AI 应用,结合大语言模型、Function Calling、RAG 检索增强、LangGraph Agent 编排和地图可视化,提供从旅行灵感收集、意图识别、结构化行程生成、局部重排到路线展示的端到端体验。
- AI 行程生成与编辑:根据目的地、天数、预算、节奏、偏好和特殊约束生成结构化行程,并支持自然语言修改、单日重排和局部重排。
- 旅行灵感收纳箱:支持上传 PDF、Markdown、TXT,导入社交 URL,进行 URL 预处理、风险分级、失败降级和原位重试。
- RAG 检索增强:支持私有知识库和公网多源搜索,使用 Evidence Budget 控制摘要与正文证据,降低上下文溢出风险。
- Function Calling 工具调用:统一调用天气、地理编码、POI 等工具,并支持工具缓存、超时、熔断和错误规范化。
- Agent 编排与流式交互:基于 LangGraph 管理计划与执行状态,通过 SSE 增量输出主流程事件,支持状态查询、暂停、恢复和重试。
- 地图可视化:前端展示行程 POI、路线和地图图层,支持高德街道、高德卫星与 CartoDB 图层。
- 多租户模型配置:支持用户级 LLM 配置隔离,保存前进行连通性验证,并在配置变更后刷新用户模型实例。
| 层级 | 技术 |
|---|---|
| 前端 | React 19、Vite、Ant Design、MapLibre、Deck.gl、React Map GL |
| 后端 | Python 3.12、FastAPI、Pydantic、Uvicorn |
| LLM / Agent | LangChain、LangGraph、OpenAI 兼容接口、Ollama 兼容接口 |
| RAG / 知识库 | Chroma、Sentence Transformers、SearXNG、BeautifulSoup、Unstructured |
| 存储 | SQLite 测试存储、Redis 短期缓存、MySQL 生产存储 |
| 地图 | Folium、高德地图瓦片、CartoDB |
| 可观测性 | 结构化日志、流程指标、错误码、超时与熔断 |
React + Vite Web
|-- Chat / Trip / Knowledge / Map UI
|-- SSE consumer and local state rendering
v
FastAPI Backend
|-- routes: auth, flow, trip, knowledge, map
|-- logic: main flow, trip normalization, knowledge orchestration
|-- llm: prompt building, model routing, function calling, streaming adapter
|-- rag: intent recognition, search, crawl, validation, vector retrieval
|-- agent: LangGraph plan-and-execute loop
|-- observability: metrics, limits, cache, errors
v
Storage and External Services
|-- SQLite / Redis / MySQL
|-- Chroma vector store
|-- OpenAI-compatible or Ollama-compatible models
|-- SearXNG and web sources
主业务入口是 /api/flow/stream。前端提交用户消息、行程约束和可选知识库参数后,后端依次完成意图识别、上下文整理、RAG 检索、工具调用、行程生成、冲突检测和最终结果透传。
git clone <your-repository-url>
cd TripNexuspython3.12 -m venv venv
source venv/bin/activate
pip install -r requirements.txtcd web
pnpm install
cd ..后端会根据 ENVIRONMENT 加载 .env.development 或 .env.production,系统环境变量优先级更高。本地开发时请编辑 .env.development,或在启动命令前导出同名环境变量。
至少需要确认以下后端配置:
ENVIRONMENT=development
JWT_SECRET_KEY=replace-with-a-local-secret
ANALYSIS_PROVIDER=openai_compatible
ANALYSIS_BASE_URL=http://localhost:11434/v1
ANALYSIS_MODEL_NAME=your-analysis-model
ANALYSIS_API_KEY=your-api-key
GENERATION_PROVIDER=openai_compatible
GENERATION_BASE_URL=http://localhost:11434/v1
GENERATION_MODEL_NAME=your-generation-model
GENERATION_API_KEY=your-api-key
EMBEDDING_PROVIDER=openai_compatible
EMBEDDING_BASE_URL=http://localhost:11434/v1
EMBEDDING_MODEL_NAME=your-embedding-model
EMBEDDING_API_KEY=your-api-key
SEARXNG_URL=http://localhost:8080
TRIP_CONTEXT_STORAGE_TYPE=test
AUTH_DB_BACKEND=sqlite前端默认连接 http://127.0.0.1:8000。如需修改前端 API 地址,可创建 web/.env.local:
cd web
printf 'VITE_API_BASE=http://127.0.0.1:8000\n' > .env.localsource venv/bin/activate
PYTHONPATH=. uvicorn src.api.app:app --host 127.0.0.1 --port 8000 --reloadcd web
pnpm run dev打开 Vite 输出的本地地址,通常是 http://localhost:5173。
| 变量 | 说明 |
|---|---|
ENVIRONMENT |
运行环境,常用值为 development 或 production |
JWT_SECRET_KEY |
JWT 签名密钥 |
SUPER_ADMIN_EMAIL / SUPER_ADMIN_PASSWORD |
初始化超级管理员账号 |
ANALYSIS_* |
意图识别与参数抽取模型配置 |
GENERATION_* |
行程生成与修改模型配置 |
EMBEDDING_* |
向量化模型配置 |
SEARXNG_URL |
SearXNG 聚合搜索服务地址 |
CHROMA_DB_PATH |
Chroma 向量库目录 |
TRIP_CONTEXT_STORAGE_TYPE |
行程上下文存储类型,test 或 prod |
AUTH_DB_BACKEND |
鉴权数据库后端,sqlite 或 mysql |
REDIS_* |
Redis 短期缓存配置 |
MYSQL_* |
MySQL 生产存储配置 |
CORS_ORIGINS |
允许访问后端的前端源 |
| 方法 | 路径 | 用途 |
|---|---|---|
POST |
/api/flow/stream |
主流程 SSE 入口,生成或修改行程 |
GET |
/api/flow/status |
查询主流程状态 |
POST |
/api/flow/control |
暂停、恢复或重试主流程 |
GET |
/api/flow/metrics |
查询流程指标明细 |
GET |
/api/flow/metrics/summary |
查询流程指标汇总 |
GET |
/api/knowledge/bases |
获取知识库列表 |
POST |
/api/knowledge/bases |
创建知识库 |
POST |
/api/knowledge/bases/{knowledge_base_id}/upload |
上传文件到知识库 |
POST |
/api/knowledge/bases/{knowledge_base_id}/ingest/url |
导入 URL 来源 |
POST |
/api/knowledge/preprocess/url |
URL 预处理与解析预判 |
GET |
/api/knowledge/bases/{knowledge_base_id}/sources |
查询知识来源列表 |
PATCH |
/api/knowledge/bases/{knowledge_base_id}/sources/{source_id} |
修改来源正文并重建分块 |
DELETE |
/api/knowledge/bases/{knowledge_base_id}/sources/{source_id} |
删除知识来源 |
TripNexus/
├── src/
│ ├── api/ # FastAPI 入口、路由、请求模型与业务编排
│ ├── auth/ # 用户、JWT、管理员初始化与数据库访问
│ ├── llm/ # LLM 管理、提示词、工具调用、流式适配
│ ├── rag/ # 搜索、抓取、质量门禁、向量检索
│ ├── agent/ # LangGraph Agent 状态编排
│ ├── map/ # 地图 HTML 渲染
│ ├── frontend/context/ # 对话上下文与存储抽象
│ ├── models/ # 领域模型
│ └── observability/ # 指标、缓存、并发限制、错误规范
├── web/
│ ├── src/api/ # 前端 API 封装与 SSE 消费
│ ├── src/components/ # React 页面组件
│ ├── src/hooks/ # 会话、行程、知识库、自定义鉴权状态
│ └── src/utils/ # 行程数据归一化与调试工具
├── scripts/ # 回放、报告与辅助脚本
├── sql/ # 数据库初始化脚本
├── searxng/ # SearXNG 相关配置说明
├── requirements.txt # Python 依赖
└── pyproject.toml # Python 项目元数据
后端:
source venv/bin/activate
PYTHONPATH=. uvicorn src.api.app:app --host 127.0.0.1 --port 8000 --reload前端:
cd web
pnpm run dev
pnpm run build
pnpm run preview本项目使用 MIT License。