目录
项目概述
1. 天气查询功能
2. 多轮对话与聊天
3. 语音输入与输出
4. 历史记录管理
5. 项目结构
6. 核心功能流程
7. 项目特色
️ 项目目录结构
chat_runnable.py
main.py
history_manager.py
weather_runnable.py
tools.py
llm.py
voice_utils.py(可选)
.env
requirements.txt
运行结果
这个项目是一个多功能的智能聊天和天气查询助手,结合了文本和语音输入/输出,旨在提供一个互动式的对话体验。项目包括以下几个主要功能模块:
通过 fetch_weather
函数,使用 GeoNames API 和 OpenWeatherMap API 获取天气数据。
支持中文城市名查询,返回包括天气描述、温度、湿度、风速等信息。
天气查询是通过 LangChain 的 agent
模型来处理的,使用工具集 (Tool) 结合 fetch_weather
功能。
使用 RunnableWithMessageHistory
结合 ChatMessageHistory
实现多轮对话,保存每次交互的聊天记录。
对话逻辑采用了基于 ChatPromptTemplate
的模板,确保对话内容格式化和连贯。
支持判断用户输入是否与天气相关,并相应地调用天气查询或聊天机器人响应。
通过 speech_recognition
库实现语音识别,用户可以通过语音输入查询天气或与机器人对话。
使用 pyttsx3
库实现语音输出,机器人可以通过语音回应用户。
聊天历史被保存在本地的 chat_history.json
文件中,通过 history_manager.py
加载、保存和附加聊天记录,保证多轮对话的上下文连贯性。
llm.py:配置 GPT-3.5 模型,用于生成聊天和天气相关的回答。
chat_runnable.py:封装聊天对话功能,管理对话历史并处理输入输出。
weather_runnable.py:封装天气查询功能,通过代理 (agent
) 处理天气相关的请求。
tools.py:定义 fetch_weather
函数,负责调用外部 API 获取天气数据。
voice_utils.py:提供语音输入和输出功能。
history_manager.py:管理对话历史记录的加载、保存和附加功能。
main.py:主程序,控制对话流,包括用户输入的选择(语音或文字),处理天气查询和闲聊对话,调用相关模块进行响应。
用户选择输入方式(语音或文字),并可以选择是否启用语音播报。
程序根据用户输入判断是天气查询还是闲聊,天气相关的查询通过调用天气代理处理,其他输入则交给聊天代理。
对话记录保存在本地文件中,每次交互后都会更新记录。
语音输入通过 speech_recognition
库处理,语音输出通过 pyttsx3
库朗读。
多语言支持:支持中文输入和输出,能够处理中文城市名称。
多轮对话:能够保持上下文,支持连贯的多轮对话。
语音交互:支持语音输入和输出,为用户提供更加自然的交互体验。
历史记录:能够保存聊天历史,方便用户查看和回溯之前的对话内容。
这个项目将不同的功能模块结合起来,提供了一个智能天气助手和多功能聊天机器人,支持语音和文本交互,具有良好的扩展性和灵活性。如果你有其他功能需求或改进建议,随时可以进一步扩展。异步多轮对话天气查询应用(支持中文城市) 的项目结构与每个模块的完整代码,基于 LangChain v0.3.25
、OpenAI
、GeoNames
和 OpenWeatherMap
。
weather_app/
├── chat_runnable.py # 通用聊天对话功能的核心模块
├── main.py # 主程序入口(支持语音/文本输入)├── history_manager.py # 历史对话处理
├── weather_runnable.py # 封装 Agent