使用LangChain构建紧急求助热线语音代理
了解如何使用LangChain、AssemblyAI和OpenAI构建一个实时AI语音紧急求助热线代理。该代理能够倾听呼叫者的语音求助,实时评估情况,派遣合适的紧急服务,并安抚呼叫者——无需任何打字或菜单操作。文章详细介绍了三阶段流水线(语音转文字、智能体推理、文字转语音)以及关键代码实现。
在紧急情况下,每一秒都至关重要。当人们惊慌失措时,传统的按键菜单式求助热线往往加剧混乱。本教程将介绍如何利用LangChain、AssemblyAI和OpenAI构建一个全语音的AI紧急求助热线代理,它能够倾听呼叫者的语音求助,实时评估情况,并自动派遣警察、救护车或消防服务,同时安抚呼叫者情绪。
为什么选择紧急求助热线? 与常见的点餐或音乐播放语音助手不同,紧急求助热线对延迟、语气和可靠性有极高要求。语音助手的每一个设计决策都可能影响实际救援,因此它是检验AI语音系统能力的理想场景。
流水线架构:三明治模型 系统由三个独立组件构成,并行工作:语音转文字(STT)、智能体推理和文字转语音(TTS)。当呼叫者还在讲话时,STT已经开始转写;智能体在前一回复的基础上进行推理;TTS则边推理边合成语音。正确实现时,整个流程可在10秒内完成,且音频连续无中断。
第一阶段:语音转文字(AssemblyAI) 使用AssemblyAI的WebSocket API,遵循生产者-消费者模型。音频块实时流入,转录文本实时流出。关键事件类型包括STT Chunk(部分转录,用于实时监控)和STT Output(完整转录,用于触发智能体动作)。建议启用内容安全检测标志,以便在文本处理前识别求救信号。
第二阶段:紧急分类智能体(ARIA) 智能体ARIA基于LangChain和LangGraph构建,具备四个工具:位置查询(get_caller_location)、紧急派遣(dispatch_emergency,支持救护车、警察、消防)、升级至人工(escalate_to_human)和安抚协议(calming_protocol)。系统提示要求ARIA始终保持冷静,每次只问一个问题,避免使用表情符号或Markdown。通过InMemorySaver检查点,ARIA能记住整个通话历史,包括呼叫者之前提供的信息。
第三阶段:文字转语音(OpenAI TTS) 选择OpenAI TTS(tts-1模型)与智能体共用API密钥,简化集成。tts-1针对实时流式合成优化,音色“shimmer”冷静清晰。使用response_format='pcm'可直接将原始PCM音频流送入WebSocket,延迟极低。注意,tts-1-hd虽然质量更高,但会增加约200ms延迟,因此紧急热线推荐tts-1。
测试与结论 通过将上述模块串联,并利用asyncio实现并发,一个全功能的语音紧急求助代理便构建完成。该代理能在通话中实时转录、推理并回应,显著缩短求助响应时间。文章鼓励读者进一步优化,如添加更精细的语义分析或多语言支持。