语音产品发现助手

一个基于多代理工作流的端到端语音助手,用于产品搜索和发现,支持混合检索(RAG + 网络搜索)和Streamlit UI。

  • by EllieLiLiLi
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 EllieLiLiLi/Agentic-Voice-to-Voice-AI-Assistant-for-Product-Discovery

使用说明

用于产品发现的代理语音到语音人工智能助手

🎤🧠🔍 用于产品搜索和发现的代理、多模式、端到端语音助手。

🌟 概述

该项目构建了一个语音优先的多代理助手,帮助用户使用2020年亚马逊产品数据集的私有切片发现产品。该堆栈结合了用于编排的LangGraph、用于工具展示的MCP服务器、矢量索引上的本地RAG、可选的实时网络搜索、用于语音I/O的ASR/TTS和Streamlit UI。

内置:

  • 用于ASR和TTS的OpenAI实时API
  • 用于多代理编排的LangGraph
  • 亚马逊产品数据集上的RAG管道
  • 用于矢量搜索和网络搜索的MCP工具
  • 用于麦克风捕获、日志和产品表的流线型UI

✨ 主要特点

  • 🎙 语音输入→ 语音输出
  • 🧠 多代理工作流
  • 🔎 混合检索(RAG+Web搜索)
  • 📚 2020年亚马逊产品数据集支持
  • 📈 带有成绩单、日志和引文的流线型用户界面
  • 🧪 包括测试脚手架

📂 仓库的规划

  • src/
    • config.py:LLM、音频和数据路径的环境驱动配置包。
    • pipelines/:亚马逊数据集的预处理和索引构建工作流程。
    • models/:RAG和MCP工具使用的数据模式和向量存储抽象。
    • mcp/:MCP服务器和工具定义 rag.search 和 web.search.
    • graph/:代理工作流的LangGraph节点和程序集。
    • asr_tts/:ASR和TTS客户端包装器。
    • ui/:Streamlit应用程序显示麦克风捕获、转录、代理日志和产品表。
    • utils/:用于日志记录和音频处理的共享助手。
  • prompts/:路由器、计划器和回答者/评论家角色的占位符提示文件。
  • data/:原始数据集和派生数据集的预期位置(未进行版本控制)。
  • tests/:在添加实际覆盖率之前,尽量减少占位符测试。
  • .env.example:所需环境变量的模板。
  • requirements.txt:项目的Python依赖关系。

🚀 入门指南

  1. 创建虚拟环境并安装依赖项:
    git clone https://github.com/EllieLiLiLi/Agentic-Voice-to-Voice-AI-Assistant-for-Product-Discovery.git
    cd Agentic-Voice-to-Voice-AI-Assistant-for-Product-Discovery
    python -m venv .venv
    source .venv/bin/activate
    pip install -r requirements.txt
    
  2. 复制 .env.example 到 .env 并填充特定于提供商的秘密。
  3. 在启动MCP服务器或UI之前运行预处理和索引构建:
    python -m src.scripts.build_index --rebuild
    
  4. 启动Streamlit用户界面:
    streamlit run src/ui/app.py
    

▶️ 在本地运行RAG索引和Web搜索工具

安装

  1. 克隆存储库并进入项目目录。
  2. 安装依赖项(最好在虚拟环境中):
    pip install -r requirements.txt
    

所需的环境变量

  • OPENAI_API_KEY --嵌入生成和RAG索引所需。
  • WEB_SEARCH_API_KEY -Tavilly API密钥 web.search MCP工具。

复制模板并填写密钥(可选但推荐):

cp .env.example .env

在运行工具之前导出shell中的变量:

export OPENAI_API_KEY="your_openai_key"
export WEB_SEARCH_API_KEY="your_tavily_key"

重建RAG指数

从原始CSV重建已清理的数据集和Chroma索引:

python -m src.scripts.build_index --rebuild

此命令:

  • 负载 data/raw/amazon2020.csv.
  • 清理和书写 data/processed/products_cleaned.parquet.
  • 重建色度指数 data/processed/chroma_index/ (覆盖任何现有索引)。

运行手动测试(RAG+Web搜索)

RAG搜索烟雾测试:

python tests/manual/manual_rag_test.py

预期:打印样本查询的前k个相似产品。

网络搜索烟雾测试:

python tests/manual/manual_web_search_test.py

预期:打印样本查询的标准化Tavily搜索结果。

故障排除

  • RAG返回0个结果→ 确保你跑了 python -m src.scripts.build_index --rebuild 该指数存在于 data/processed/chroma_index/.
  • web.search 返回空结果→ 确认 WEB_SEARCH_API_KEY 已设置且有效。
  • 导入错误或找不到模块→ 从项目根目录运行命令,以便Python解析 src/ 正确地。

📖 备注

  • 真实的API密钥必须通过环境变量或本地 .env 文件。做 不 硬编码秘密。
  • 代码库中的TODO注释指示了在哪里插入数据集处理、向量搜索、LangGraph逻辑、ASR/TTS提供程序和MCP管道的具体实现。