科学工具
科学工具让世界更美好
让世界更美好

旅行AI助手Voyant Travel Assistant

Voyant Travel Assistant是旅行AI工具,通过规划工具调用、执行操作、记录收据,在回复用户之前进行严格验证,提供一个可信赖和来源清晰的答案。Voyant Travel Assistant采用AI优先的规划方法(利用OpenAI风格的工具),结合Zod进行严格的JSON解析,实现非阻塞的异步I/O,通过集成大量工具,包括天气、国家/地区信息、景点、通用旅行搜索(如Tavily/Brave)、RAG(如Vectara)和Amadeus提供的城市/机场/航班数据,可以自动对回复进行核实,将所有操作收据和验证结果存储起来,用户可随时通过/why命令追溯答案的生成逻辑和来源。

如果想快速使用Voyant Travel Assistant,可按照以下步骤操作:

1、进入root目录,执行npm install安装依赖;

2、运行npm run build进行项目构建;

3、执行npm run start启动项目。

如果需要使用命令行界面(CLI),进入root目录后运行npm run cli即可。

基础需求为设置LLM_PROVIDER_BASEURLLLM_API_KEY(或OPENROUTER_API_KEY),当使用Amadeus、Vectara、Search等工具时,还需额外配置对应的密钥。

各层级测试说明

测试类型 测试对象 特点
单元测试 纯模块(如模式、解析器、辅助工具) 不涉及网络请求,专注于模块内部逻辑正确性
集成测试 工具适配器和API路由 使用HTTP模拟技术,验证模块间协同工作能力
黄金测试 真实元智能体对话 会保存对话记录,通过LLM传递调用验证器(参考verify.md),断言基于存储的验证工件,执行/why命令时无需重新验证

测试命令

• 执行单元测试:进入root目录,运行npm run test:unit

• 执行集成测试:进入root目录,运行npm run test:integration

• 执行黄金测试:进入root目录,运行VERIFY_LLM=1 AUTO_VERIFY_REPLIES=true npm run test:golden

测试前置条件

• 需提供LLM_PROVIDER_BASEURLLLM_API_KEY,或OPENROUTER_API_KEY

• 只有当VERIFY_LLM=1时,黄金测试才会执行,否则会被跳过。

智能体决策流程

Voyant Travel Assistant的智能体决策流程清晰,从接收用户消息到生成最终回复,涉及多个关键环节,各环节协同工作,确保用户需求得到准确响应。

1、用户发送消息后,请求会被发送至POST /chat接口(对应文件为root/src/api/routes.ts)。

2、接口将请求传递给handleChat()函数(对应文件为root/src/core/blend.ts)。

3、handleChat()函数调用runMetaAgentTurn()函数(对应文件为root/src/agent/meta_agent.ts),启动元智能体流程。

4、元智能体首先加载meta_agent.md文件,并记录提示哈希值/版本信息。

5、借助LLM进行分析与规划,生成CONTROL JSON路由、缺失信息及调用指令。

6、通过chatWithToolsLLM()函数执行工具调用规划。

7、再次利用LLM整合信息,生成有依据的回复。

8、调用setLastReceipts()函数(对应文件为slot_memory.ts)存储操作记录。

9、通过observeStageaddMeta* metrics(对应文件为util/metrics.ts)记录阶段信息与元数据指标。

10、检查是否开启AUTO_VERIFY_REPLIES=true

• 若是,调用verifyAnswer()函数(对应文件为core/verify.ts),结合上下文(getContext)、插槽(slots)和意图(intent)进行验证。

• 验证完成后,调用setLastVerification()函数(对应文件为slot_memory.ts)存储验证结果。

• 判断验证结果是否为“失败”且存在修正答案。

若是,使用修正后的答案,调用pushMessage(thread, revised)将其添加到对话线程。

若否,直接返回元智能体生成的回复。

• 存储验证结果后,返回最终回复。

• 若未开启AUTO_VERIFY_REPLIES=true,直接返回元智能体生成的回复。

11、生成ChatOutput并传递给调用方。

12、用户可通过/why命令查看操作记录和存储的验证结果。

工具注册表

工具注册表对应文件为root/src/agent/tools/index.ts,包含多种实用工具。

• 天气查询、国家查询、景点查询(weather / getCountry / getAttractions)/

• 旅行信息搜索(searchTravelInfo,支持Tavily/Brave)。

• 向量查询(vectaraQuery,用于RAG定位)。

• 政策提取与深度研究(extractPolicyWithCrawlee / deepResearch)。

• Amadeus相关工具(resolveCity / airports / flights,用于城市解析、机场查询、航班查询)。

提示流程

1、用户发送消息后,系统加载meta_agent.md中的系统提示。

2、基于系统提示,通过LLM生成规划请求,包含CONTROL JSON路由、缺失信息及调用指令。

3、调用chatWithToolsLLM()函数执行元智能体操作。

4、依据meta_agent.md中的整合指令,对信息进行整合。

5、调用slot_memory.setLastReceipts存储操作记录。

6、判断是否需要自动验证或执行/why命令:

• 若是,加载verify.md,生成严格的JSON格式验证结果。

• 若否,直接生成回复。

7、最终输出包含回复和操作记录的结果。