539 字
3 分钟
项目概览与技术栈

项目概览与技术栈#

本篇是 项目索引 的开场笔记,先给出项目的输入输出边界、系统总览与关键设计决策。读完这篇后,再进入后续模块拆解会更容易建立全局视角。


1 项目目标#

这个项目的目标很明确:构建一个支持文字、图片、语音三种输入方式的聊天机器人,并让这三类输入最终都汇入同一条 LangChain 对话链路。

核心能力包括:

  • 文字消息直接进入对话上下文
  • 图片在本地预处理后转成模型可接受的 image_url
  • 语音在前端阶段先转文字,再进入 LangChain
  • 多轮会话历史通过 SQLite 持久化

2 系统总览#

这个图里最关键的一点是:三种输入并不是分别走三套系统,而是在预处理之后统一汇入 LangChain 消息流。


3 技术栈#

层次技术作用
前端GradioWeb 聊天界面
编排LangChain链式调用、历史管理
存储SQLite多轮对话历史持久化
语音qwen3-asr-flash / sensevoice-v1语音转文字
多模态阿里云百炼 multiModal_llm文字+图片理解
HTTPhttpx直接调用阿里云原生 API
图像Pillow图片格式转换与编码

⚡ 关键设计决策#

为什么音频在前端阶段就转文字?

语音文件体积大,base64 后更大,不适合直接写入 SQLite 历史。在 add_message 阶段转成文字,既节省存储,又让历史可搜索。

为什么不用 OpenAI 兼容接口发音频?

阿里云 compatible-mode 接口只支持公网 URL,不支持本地文件或 base64。必须改用 DashScope 原生多模态接口才能用 Data URI 传音频。

为什么用 RunnableWithMessageHistory?

自动处理「读历史 → 注入 Prompt → 写历史」三步,不需要手动管理 SQLite,代码量减少约 60%。


📦 依赖安装#

Terminal window
pip install gradio langchain langchain-community pillow httpx openai

相关笔记