用途:把任意文本智能体迁移为使用 Strands BidiAgent 与 Amazon Nova Sonic 的实时语音智能体,分前端与编排层两层。
主要能力:前端为浏览器 WebSocket 客户端,用 Web Audio API 采集麦克风音频、播放语音回复,并支持文本输入回退;编排层为 FastAPI WebSocket 服务,接收前端 config 事件,用语音优化后的系统提示词与工具创建 BidiAgent,运行双向音频流。迁移前需从原文本智能体提取系统提示词、工具(名称、描述、输入 schema)与模型配置,框架无关。工具可用 Strands @tool 装饰器直接传入 BidiAgent,工具较多或使用 MCP 时可通过 mcp_gateway_arn 传入。
使用方式:安装系统依赖(macOS 执行 brew install portaudio;Debian/Ubuntu 执行 apt-get install -y portaudio19-dev gcc g++ make),再执行 pip install uvicorn fastapi websockets strands-agents strands-agents-tools aws_sdk_bedrock_runtime pyaudio boto3。启动服务 python server.py(默认端口 8080,可用 --port 或 PORT 覆盖),客户端连接 ws://localhost:8080/ws;浏览器客户端由 python strands/client/client.py --ws-url ws://localhost:8080/ws 提供。
适用场景:将已有文本客服、查询类智能体改造为语音交互,示例含 LangChain、OpenAI function-calling、Bedrock Converse 三种迁移。
限制:Nova Sonic 要求 16kHz 采样率,不匹配会产生杂音且无报错;语音提示词建议控制在约 500 词内;工具结果应返回自然语言而非 JSON;大音频负载需用 split_large_event;pyaudio 依赖 portaudio 系统库。具体收费与价格资料未提供。