Patter SDK构建餐厅预订电话代理指南:动态变量、护栏、延迟仪表盘和评估检查
本教程详细介绍了如何使用Patter SDK构建一个用于餐厅预订的语音代理工作流。内容涵盖动态调用变量的定义、可调用工具的注册(如查询空位、预订、营业时间和转接人工)、输出护栏的叠加、语音转文字和文字转语音的模拟、脚本化通话流程的运行、延迟和成本仪表盘的追踪,以及通过确定性评估套件验证代理。最后,展示了如何将相同的逻辑映射到使用Twilio和OpenAI Realtime的实际部署中。
在本教程中,我们通过构建一个完整的语音代理工作流来深入探索Patter SDK,该工作流模拟了AI电话助手在真实对话中的表现。我们以餐厅预订为用例,从定义动态调用变量开始,逐步注册可调用工具、应用输出护栏、模拟语音转文字(STT)和文字转语音(TTS)行为,并在无需实时电话凭证的情况下运行完整的脚本化通话流程。此外,我们还检查已安装的Patter API(如果可用),创建确定性的代理大脑,追踪模拟的延迟和成本指标,并通过回归式评估验证系统。最终,我们理解Patter SDK如何将代理逻辑、工具使用、安全检查、通话模拟和实际部署模式整合到一个结构化的语音代理管道中。
首先,我们设置Patter SDK、工具和餐厅后端。导入所需库后,可选安装Patter SDK,并在可用时检查已安装的API。定义动态调用变量(如客户姓名、忠诚度等级、餐厅名称),创建小型工具注册表,并准备内存中的餐厅后端,用于模拟空位查询、预订、营业时间和转接人工。注册的核心工具包括:check_availability(检查空位)、book_table(预订)、get_hours(获取营业时间)、lookup_reservation(查找预订)和transfer_to_human(转接人工)。这些工具使模拟电话代理能够执行基本的餐厅预订任务。
接下来,我们构建输出护栏层和模拟语音层。输出护栏确保电话助手安全、简洁且适合预订场景:它剔除敏感信息(如邮箱、电话号码)、隐藏内部客户ID、清理不当语言、阻止离题请求,并保持回复简短以提供更好的电话体验。我们定义了五个护栏函数:gr_scope(限制话题)、gr_hide_internal_ids(隐藏内部ID)、gr_redact_pii(编辑PII)、gr_profanity(过滤脏话)和gr_concise(保持简洁)。然后,模拟STT和TTS行为,定义系统提示(包含动态变量),并添加轻量级解析函数(parse_party、parse_date、parse_slot、parse_name、parse_code),用于从用户输入中提取关键信息。
构建代理大脑——agent_brain函数是该工作流的核心。它处理历史记录、用户文本和上下文,根据用户输入决定调用哪个工具或直接回复。例如,如果用户要求转接人工,则调用transfer_to_human;如果需要查询空位,则调用check_availability。预订流程逐步收集信息:人数、日期、时间段、姓名,然后检查可用性并最终完成预订。我们还实现了fold_tool_result函数,将工具返回的原始结果转换为自然的语音回复。
最后,通过确定性评估套件验证代理。我们编写多个测试用例,涵盖预订、查询空位、营业时间、查找预订和转接人工等场景,确保代理在不同输入下行为一致且正确。评估套件使用重置后的后端状态,保证每次运行结果可重复。然后,讨论如何将相同的代理逻辑映射到使用Twilio和OpenAI Realtime的实际部署中,实现真实的语音通信。整个教程展示了Patter SDK如何简化AI电话代理的开发流程,从模拟到生产,提供了一套完整的工具链。