Luna 是一个基于 Langgraph 构建的语音驱动的 AI 助手,通过自然对话帮助用户管理他们的费用。这个项目展示了如何为任何 Langgraph 代理创建语音接口,结合了语音转文本和文本转语音的功能与强大的代理框架。
git clone https://github.com/rosiefaulkner/langgraph-voice-agent.git
cd langgraph-voice-agent
(推荐)使用 uv 进行依赖管理
在项目目录中设置 venv 并使用一条命令安装所有依赖。
uv sync
在根目录下创建一个 .env 文件,并添加以下变量:
OPENAI_API_KEY=your_openai_api_key
SUPABASE_URI=postgresql://postgres:password@db.example.supabase.co:5432/postgres
python main.py
langgraph-voice-agent/
├── main.py # 主应用入口点
├── assistant_graph.py # Langgraph 代理定义
├── state.py # 代理的状态管理
├── voice_utils.py # 音频录制和播放工具
├── mcps/ # 模型调用协议服务器
│ ├── mcp_config.json # MCP 服务器配置
│ └── local_servers/
│ └── db.py # 数据库工具实现
├── .env # 环境变量(不在仓库中)
├── .env.example # 示例环境变量
└── pyproject.toml # 项目依赖
要更改 Luna 的个性或能力,请编辑 assistant_graph.py 中的 system_prompt:
system_prompt = """您是 Luna,公司的费用管理员...
mcps/local_servers/ 中创建新的 MCP 服务器或向现有服务器添加工具mcps/mcp_config.json 中注册服务器修改 voice_utils.py 中的 TTS 设置:
async def play_audio(message: str):
# ...
async with openai_async.audio.speech.with_streaming_response.create(
model="gpt-4o-mini-tts",
voice="fable", # 在此处更改语音
input=cleaned_message,
instructions="以愉快、乐于助人的语气快速说话。", # 修改指令
response_format="pcm",
speed=1.2, # 调整速度
) as response:
# ...
欢迎贡献!请随时提交拉取请求。