Skip to content

LiMelson/-

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

旅游推荐AI智能体(纯中文终端版)

一、功能介绍

这是一个纯中文、无网页界面、基于终端交互的旅游推荐AI智能体,核心能力:

  1. 自动查询指定城市的实时天气(基于高德天气API,国内稳定);
  2. 结合天气和用户偏好推荐景点(基于Tavily搜索API);
  3. 支持多轮反馈调整:用户反馈“不满意+理由”后,自动重新推荐适配需求的景点;
  4. 防误判逻辑:精准区分“满意/不满意”反馈,避免误触发结束流程;
  5. 全链路中文:所有提示、输出、错误信息均为纯中文,无英文混杂。

二、环境准备

1. 依赖安装

# 安装核心依赖
pip install requests python-dotenv tavily-python volcenginesdkarkruntime

2. 配置环境变量

在项目根目录创建 .env 文件,填入以下内容:

# 大模型配置(火山方舟/其他兼容OpenAI格式的大模型)
ARK_API_KEY=你的大模型API密钥
ARK_BASE_URL=你的大模型接口地址(如https://ark.cn-beijing.volces.com/api/v3)
ARK_MODEL=你使用的模型名称(如qwen-turbo)

# 高德天气API(免费申请)
AMAP_WEATHER_KEY=你的高德Web服务API Key

# Tavily搜索API(免费申请)
TAVILY_API_KEY=你的Tavily API Key

3. API申请指南

API名称 申请地址 免费额度
高德天气API https://lbs.amap.com/ 个人每日30万次
Tavily搜索API https://tavily.com/ 每月1000次
火山方舟大模型 https://www.volcengine.com/product/ark 新用户有免费额度

三、文件结构

├── .env                # 环境变量配置(必填)
├── config.py           # 智能体配置(系统提示词、参数)
├── tools.py            # 工具函数(天气查询、景点推荐、翻译)
├── llm_client.py       # 大模型客户端(需适配你的大模型)
└── main.py             # 主程序(终端交互逻辑)

四、运行方式

  1. 确保所有配置文件(.env/config.py/tools.py)已正确填写;
  2. 在终端执行:
    python main.py
  3. 按照终端提示操作:
    • 输入要查询的城市(如“北京”);
    • 等待智能体查询天气→推荐景点;
    • 反馈对推荐结果的评价(格式:满意+理由 / 不满意+理由);
    • 智能体根据反馈自动调整推荐(最多3次不满意后结束)。

五、使用示例

==================================================
🏖️ 旅游推荐AI智能体(纯中文终端版)
==================================================
✨ 功能:结合天气+偏好,多轮调整景点推荐
💡 提示:输入城市后,按指引反馈即可调整推荐
==================================================

📌 请输入你想去的城市:北京

✅ 你输入的城市:北京

==================== 第1轮推荐 ====================

🤖 智能体正在思考...

💡 模型思考:
Thought: 用户首次请求北京的旅游推荐,根据规则需要先查询北京的天气,以便后续结合天气推荐景点。
Action: get_weather(city="北京")

🔧 正在调用 get_weather 工具...

📊 工具执行结果:
北京当前天气:多云,气温6℃,东南风3级

==================== 第2轮推荐 ====================

🤖 智能体正在思考...

💡 模型思考:
Thought: 已获取北京天气为多云,需要推荐适配多云天气的景点,无用户偏好。
Action: get_attraction(city="北京", weather="多云", adjust_keyword="", preference="")

🔧 正在调用 get_attraction 工具...

📊 工具执行结果:
根据搜索,为您推荐以下景点:
- 故宫博物院:多云天气适合逛故宫,光线柔和,拍照效果好,避开了晴天的暴晒和雨天的不便...
- 颐和园:昆明湖周边视野开阔,多云不晒,适合散步、划船,体验皇家园林的美感...

💬 你对推荐结果满意吗?(满意/不满意+理由):不满意,太远

⚠️ 已连续不满意1次,最多可不满意3次

==================== 第3轮推荐 ====================
...(自动重新推荐市区景点)

六、核心特性

1. 精准的反馈判断

  • 只有输入以“满意”开头(如“满意,推荐很实用”),才判定为满意并结束流程;
  • 输入以“不满意”开头(如“不满意,太远”),自动计数并重新推荐;
  • 非规范输入(如“一般”),提示用户按格式输入,避免流程混乱。

2. 全链路中文保障

  • 天气查询结果纯中文(无英文映射);
  • 景点搜索强制中文关键词,即使返回英文结果也自动翻译为中文;
  • 所有终端提示、错误信息、思考过程均为纯中文。

3. 容错机制

  • 工具调用失败自动重试(最多2次);
  • 空输入、格式错误自动提示,避免程序崩溃;
  • 连续3次不满意后自动结束,避免无限循环。

七、常见问题解决

1. 景点推荐结果仍为英文?

  • 检查 tools.pytavily.searchlanguage="zh" 是否配置;
  • 确保搜索关键词包含“必须用中文回答”;
  • 确认大模型API密钥有效(翻译功能依赖大模型)。

2. “不满意”被误判为“满意”?

  • 程序已通过 startswith("满意") 精准判断,避免字符串包含导致的误判;
  • 确保反馈严格以“满意”/“不满意”开头。

3. 工具调用超时/失败?

  • 检查 .env 中的API密钥是否正确;
  • 确保网络可访问外网(Tavily为国外API);
  • 禁用VPN代理:tools.py 中已添加 os.environ['NO_PROXY'] = 'tavily.com'

八、自定义调整

1. 修改最大不满意次数

config.py 中调整:

MAX_DISSATISFACTION = 3  # 改为你想要的次数(如5)

2. 调整推荐轮次上限

config.py 中调整:

MAX_LOOP = 5  # 最大推荐轮次

3. 修改系统提示词

config.pyAGENT_SYSTEM_PROMPT 中调整智能体的思考规则、工具调用格式等。

九、注意事项

  1. 仅支持国内城市的天气查询(高德API限制);
  2. Tavily API需要稳定的外网访问,若无法访问可替换为百度POI API;
  3. 大模型客户端(llm_client.py)需适配你的大模型接口格式(兼容OpenAI格式即可);
  4. 建议反馈时明确说明理由(如“不满意,想要免费景点”),智能体推荐更精准。

About

纯中文终端版旅游推荐AI智能体,结合天气+多轮反馈推荐景点

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages