用于产品发现的代理语音到语音人工智能助手
🎤🧠🔍 *用于产品搜索和发现的代理、多模式、端到端语音助手。*
🌟 概述
该项目构建了一个语音优先的多代理助手,帮助用户使用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依赖关系。
🚀 入门指南
- 创建虚拟环境并安装依赖项:
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- 复制
.env.example到.env并填充特定于提供商的秘密。 - 在启动MCP服务器或UI之前运行预处理和索引构建:
python -m src.scripts.build_index --rebuild- 启动Streamlit用户界面:
streamlit run src/ui/app.py▶️ 在本地运行RAG索引和Web搜索工具
安装
- 克隆存储库并进入项目目录。
- 安装依赖项(最好在虚拟环境中):
pip install -r requirements.txt所需的环境变量
OPENAI_API_KEY--嵌入生成和RAG索引所需。WEB_SEARCH_API_KEY-Tavilly API密钥web.searchMCP工具。
复制模板并填写密钥(可选但推荐):
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管道的具体实现。
