【基于 LangChain 的异步天气查询5】多轮对话天气智能助手

目录

 项目概述

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

运行结果


【基于 LangChain 的异步天气查询5】多轮对话天气智能助手_第1张图片

 项目概述

这个项目是一个多功能的智能聊天和天气查询助手,结合了文本和语音输入/输出,旨在提供一个互动式的对话体验。项目包括以下几个主要功能模块:

1. 天气查询功能

  • 通过 fetch_weather 函数,使用 GeoNames API 和 OpenWeatherMap API 获取天气数据。

  • 支持中文城市名查询,返回包括天气描述、温度、湿度、风速等信息。

  • 天气查询是通过 LangChain 的 agent 模型来处理的,使用工具集 (Tool) 结合 fetch_weather 功能。

2. 多轮对话与聊天

  • 使用 RunnableWithMessageHistory 结合 ChatMessageHistory 实现多轮对话,保存每次交互的聊天记录。

  • 对话逻辑采用了基于 ChatPromptTemplate 的模板,确保对话内容格式化和连贯。

  • 支持判断用户输入是否与天气相关,并相应地调用天气查询或聊天机器人响应。

3. 语音输入与输出

  • 通过 speech_recognition 库实现语音识别,用户可以通过语音输入查询天气或与机器人对话。

  • 使用 pyttsx3 库实现语音输出,机器人可以通过语音回应用户。

4. 历史记录管理

  • 聊天历史被保存在本地的 chat_history.json 文件中,通过 history_manager.py 加载、保存和附加聊天记录,保证多轮对话的上下文连贯性。

5. 项目结构

  • 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:主程序,控制对话流,包括用户输入的选择(语音或文字),处理天气查询和闲聊对话,调用相关模块进行响应。

6. 核心功能流程

  • 用户选择输入方式(语音或文字),并可以选择是否启用语音播报。

  • 程序根据用户输入判断是天气查询还是闲聊,天气相关的查询通过调用天气代理处理,其他输入则交给聊天代理。

  • 对话记录保存在本地文件中,每次交互后都会更新记录。

  • 语音输入通过 speech_recognition 库处理,语音输出通过 pyttsx3 库朗读。

7. 项目特色

  • 多语言支持:支持中文输入和输出,能够处理中文城市名称。

  • 多轮对话:能够保持上下文,支持连贯的多轮对话。

  • 语音交互:支持语音输入和输出,为用户提供更加自然的交互体验。

  • 历史记录:能够保存聊天历史,方便用户查看和回溯之前的对话内容。

这个项目将不同的功能模块结合起来,提供了一个智能天气助手和多功能聊天机器人,支持语音和文本交互,具有良好的扩展性和灵活性。如果你有其他功能需求或改进建议,随时可以进一步扩展。异步多轮对话天气查询应用(支持中文城市) 的项目结构与每个模块的完整代码,基于 LangChain v0.3.25OpenAIGeoNamesOpenWeatherMap


️ 项目目录结构

weather_app/

├── chat_runnable.py             # 通用聊天对话功能的核心模块
├── main.py                            # 主程序入口(支持语音/文本输入)

├── history_manager.py         # 历史对话处理
├── weather_runnable.py       # 封装 Agent

你可能感兴趣的:(langchain,python,LCEL,Run,interfac,语音识别)