语音助手产品发现

一个基于语音交互的AI助手,利用LangGraph多代理系统、MCP工具和RAG技术帮助用户发现和比较电商产品。

  • by sohammandal
  • Jupyter Notebook
  • 本地部署
  • 更新于
在 GitHub 查看 sohammandal/agentic-voice-assistant

使用说明

代理语音助手

使用LangGraph、MCP和RAG进行产品发现的语音到语音人工智能助手。


概述

该项目构建了一个 语音驱动的多智能体人工智能助手 这有助于用户自然地找到和比较电子商务产品。 它使用:

  • 自动语音识别 将语音转换为文本
  • LangGraph代理 用于计划和推理
  • RAG(检索增强生成) 从亚马逊2020数据集中获取产品信息
  • MCP工具 用于统一访问本地和实时资源
  • TTS(文本转语音) 用自然的声音回答

文档

完整的技术文档已移至 docs/ 文件夹:

  • docs/architecture.md –LangGraph多代理设计、规划规则、路由、安全
  • docs/eda.md –数据预处理和清理步骤
  • docs/rag-overview.md –私有数据集索引、嵌入、混合检索
  • docs/mcp-tools.md –MCP服务器、工具模式、发现、缓存、日志记录
  • docs/prompts.md –所有系统提示、工具提示、计划量规、安全提示
  • docs/slide-deck.pdf –课堂演示的最后一组演示视频

项目结构

agentic-voice-assistant/
├── app.py                      # Streamlit entrypoint
├── cli.py                      # CLI entrypoint
├── Makefile                    # Commands to spin up servers and launch app
├── src/
│   ├── asr/                    # Speech-to-text logic
│   ├── tts/                    # Text-to-speech synthesis
│   ├── orchestration/          # LangGraph agents (router, planner etc.)
│   ├── llm/                    # LLM API call utility
│   ├── rag/                    # Private dataset indexing and retrieval
│   └── mcp/                    # MCP server + tool schemas
├── data/                       # Amazon dataset slices (gitignored)
├── docs/                       # Detailed project documentation
├── notebooks/                  # Data prep & EDA
├── vector_store/               # Local ChromaDB (gitignored)
├── pyproject.toml              # Project and dev config
├── uv.lock                     # Locked dependencies
├── .pre-commit-config.yaml     # Pre-commit hooks for linting/formatting
└── .env.example                # Sample environment config (copy to .env)

地方发展

  1. 克隆仓库:

    git clone git@github.com:sohammandal/agentic-voice-assistant.git
    cd agentic-voice-assistant
    
  2. 设置环境变量:

    cp .env.example .env
    

    将API密钥添加到 .env (Groq、Serper、HF)。看 .env.example 对于所需变量。

  3. 安装 紫外线:

    curl -LsSf https://astral.sh/uv/install.sh | sh
    
  4. 安装依赖项并设置虚拟环境:

    uv sync
    source .venv/bin/activate
    
  5. 设置预提交(运行一次):

    pre-commit install
    
    # if pre-commit is missing then run this first
    uv tool install pre-commit
    

    这会安装Git钩子,这样每次提交时都会自动运行检查——你只需要做一次。

  6. (可选)对所有文件运行预提交:

    pre-commit run --all-files
    
  7. 运行应用程序:

    从项目根目录运行此命令以启动RAG服务器、MCP服务器和Streamlit应用程序:

    make run
    

    对于Windows (或如果 make 不可用),在单独的终端中启动这些:

    终端1-RAG服务器:

    uv run python -m src.rag.run_service start
    

    检查状态: uv run python -m src.rag.run_service status
    停止: uv run python -m src.rag.run_service stop

    终端2-MCP服务器:

    uv run python -m src.mcp.mcp_server
    

    3号航站楼-Streamlit应用程序:

    uv run streamlit run app.py
    
  8. 试试助手:

    问一个这样的问题:

    • 推荐价格低于15美元的窗户隐私膜
    • 建议25美元以下的不锈钢软管夹

如果钩子失败了会发生什么?

  • 如果钩子自动修复代码(例如格式化为 ruff),提交将被阻止。
  • 简单地 git add . 并再次承诺 -您的文件现在将被修复并通过。
  • 如果错误仍然存在(如lint违规),则必须在提交之前手动解决。

在初始设置之后,钩子会在更改的文件上自动运行 git commit - 无需奔跑 pre-commit 每次手动.


添加新包/依赖项

如果需要将包添加到项目中:

# 1. Add the package (updates pyproject.toml and uv.lock)
uv add <package-name>

# example:
# uv add scikit-learn

uv 将自动安装软件包,并确保所有依赖项保持兼容。

最后,提交更新的文件:

git add pyproject.toml uv.lock
git commit -m "Add <package-name>"

其他人应该拉取更改并运行:

uv sync

技术栈

图层 工具
语音输入 耳语/OpenAI ASR
推理 LangGraph(多智能体流)
检索 RAG(2020年亚马逊产品数据集)
工具访问 MCP协议(网络+私人搜索)
语音输出 OpenAI/ElevenLabs TTS
前端 流式传输
开发工具 uv, ruff, pre-commit