使用说明
代理语音助手
使用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)
地方发展
-
克隆仓库:
git clone git@github.com:sohammandal/agentic-voice-assistant.git cd agentic-voice-assistant -
设置环境变量:
cp .env.example .env将API密钥添加到
.env(Groq、Serper、HF)。看.env.example对于所需变量。 -
安装 紫外线:
curl -LsSf https://astral.sh/uv/install.sh | sh -
安装依赖项并设置虚拟环境:
uv sync source .venv/bin/activate -
设置预提交(运行一次):
pre-commit install # if pre-commit is missing then run this first uv tool install pre-commit这会安装Git钩子,这样每次提交时都会自动运行检查——你只需要做一次。
-
(可选)对所有文件运行预提交:
pre-commit run --all-files -
运行应用程序:
从项目根目录运行此命令以启动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_server3号航站楼-Streamlit应用程序:
uv run streamlit run app.py -
试试助手:
问一个这样的问题:
- 推荐价格低于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 |