일반 소개
OpenAI 실시간 에이전트는 OpenAI의 실시간 API를 사용하여 다중 지능형 신체 음성 애플리케이션을 구축하는 방법을 보여주기 위한 오픈 소스 프로젝트입니다. 이 프로젝트는 개발자가 단기간에 복잡한 다중 지능형 신체 음성 시스템을 구축할 수 있는 높은 수준의 지능형 신체 모델(OpenAI Swarm에서 차용)을 제공합니다. 이 프로젝트는 지능 간의 순차적 핸드오프, 더 똑똑한 모델로 백그라운드 부스팅을 수행하는 방법, 사용자 정보를 문자별로 확인하는 등의 작업을 위해 모델이 상태 머신을 따르도록 하는 방법을 예제를 통해 보여줍니다. 다중 지능형 신체 실시간 음성 애플리케이션을 빠르게 프로토타이핑하려는 개발자에게 유용한 리소스입니다.
OpenAI는 실시간 API를 사용하여 지능형 패턴을 구축하고 오케스트레이션하기 위한 참조 구현을 제공합니다. 이 리포지토리를 사용하면 20분 이내에 다중 지능형 바디 프로세스를 사용하여 음성 애플리케이션의 프로토타입을 만들 수 있습니다! 실시간 API를 사용한 구축은 지연 시간이 짧고 동기식인 음성 상호 작용의 특성 때문에 복잡할 수 있습니다. 이 리포지토리에는 이러한 복잡성을 관리하기 위해 저희가 배운 모범 사례가 포함되어 있습니다.

기능 목록
- 지능형 바디 시퀀스 핸드오버미리 정의된 인텔리전스 그래프를 기반으로 인텔리전스를 순차적으로 인계할 수 있습니다.
- 배경 향상중요한 결정을 다루는 고급 모델(예: o1-mini)로 작업을 업그레이드할 수 있습니다.
- 상태 머신 처리모델에 상태 머신을 따르도록 하여 사용자 이름 및 전화번호와 같은 정보를 정확하게 수집하고 유효성을 검사합니다.
- 신속한 프로토타이핑다중 지능 실시간 음성 애플리케이션을 빠르게 빌드하고 테스트할 수 있는 도구를 제공합니다.
- 구성 유연성사용자는 자신만의 지능형 신체 동작과 상호 작용 흐름을 구성할 수 있습니다.
도움말 사용
설치 및 구성
- 클론 창고::
git clone https://github.com/openai/openai-realtime-agents.git cd openai-realtime-agents
- 환경 구성::
- Node.js와 npm이 설치되어 있는지 확인합니다.
- 활용npm 설치필요한 모든 종속성 패키지를 설치합니다.
- 로컬 서버 시작::
npm start
이렇게 하면 브라우저에서 액세스할 수 있는 로컬 서버가 시작됩니다.http://localhost:3000앱 보기.
사용 가이드라인
인텔리전스 찾아보기 및 선택::
- 브라우저를 열고 다음 위치로 이동합니다.http://localhost:3000**. **
- '시나리오' 드롭다운 메뉴와 다양한 지능 시나리오 및 특정 지능을 선택할 수 있는 '상담원' 드롭다운 메뉴가 있는 인터페이스가 표시됩니다.
대화형 경험::
- 장면 선택: "시나리오" 메뉴에서 미리 정의된 시나리오를 선택합니다(예: "simpleExample" 또는 "customerServiceRetail ".
- 스마트 바디 선택하기'상담원' 메뉴에서 시작하려는 인텔리전스(예: "frontDeskAuthentication" 또는 "customerServiceRetail")를 선택합니다. 고객 서비스 리테일".
- 대화 시작하기인터페이스를 통해 텍스트를 입력하거나 음성 입력(지원되는 경우)을 통해 직접 지능형 바디와 상호작용을 시작합니다. 지능형은 사용자의 입력에 응답하고 더 복잡한 작업을 위해 다른 지능형으로 사용자를 리디렉션할 수 있습니다.
기능의 세부 작동
- 순차적 핸드오버예를 들어 프런트 데스크 인증에서 애프터 서비스로 전환하는 등 한 인텔리전스에서 다른 인텔리전스로 전환해야 하는 경우 시스템이 자동으로 이 전환을 처리합니다. 각 인텔리전스의 구성이 각 인텔리전스의다운스트림 에이전트.
- 배경 향상복잡하거나 위험도가 높은 작업을 처리할 때 인텔리전스를 자동으로 더 강력한 모델로 승격하여 처리할 수 있습니다. 예를 들어, 사용자의 신원을 자세히 확인하거나 반품을 처리해야 하는 경우 시스템은 o1-mini 모델을 호출합니다.
- 상태 머신 처리개인 정보 입력과 같이 한 글자 한 글자 확인이 필요한 작업의 경우 스마트 바디가 상태 머신을 통해 사용자에게 단계별로 안내하여 각 문자 또는 정보가 정확한지 확인합니다. 사용자는 입력 과정에서 "성이 X인지 확인해 주세요"와 같은 실시간 피드백을 받을 수 있습니다.
- 인텔리전트 바디 구성src/app/agentConfigs/ 디렉토리에서 인텔리전스에 대한 구성 파일을 찾을 수 있습니다. 이 파일을 편집하여 인텔리전스의 동작을 변경하거나 새 인텔리전스를 추가하거나 기존 인텔리전스의 로직을 조정할 수 있습니다.
개발자 팁
- 인텔리전스의 동작을 확장하거나 수정하려면 먼저 기존의에이전트 컨피그파일을 전달한 다음에이전트_전송인텔리전스 간 핸드오버를 지원하는 도구.
- 지능 간의 모든 상호작용과 상태 변화는 UI의 '대화 내용' 섹션에 표시되므로 디버깅과 개선이 용이합니다.
이러한 단계와 기능을 자세히 설명하여 OpenAI 실시간 에이전트를 통해 빠르게 시작하고 자신만의 다중 지능 바디 음성 인터랙션 애플리케이션을 구축할 수 있습니다.
대화 상태 생성 시
원본: https://github.com/openai/openai-realtime-agents/blob/main/src/app/agentConfigs/voiceAgentMetaprompt.txt
Example: https://chatgpt.com/share/678dcc28-9570-800b-986a-51e6f80fd241
관련:학습: 자연어(상태 머신)로 워크플로 '상태 변경' 수행하기
clue
// 将此**完整**文件直接粘贴到 ChatGPT 中,并在前两个部分添加您的上下文信息。 <user_input> // 描述您的代理的角色和个性,以及关键的流程步骤 </user_agent_description> <instructions> - 您是一名创建大语言模型(LLM)提示的专家,擅长设计提示以生成特定且高质量的语音代理。 - 根据用户在 user_input 中提供的信息,创建一个遵循 output_format 中格式和指南的提示。参考 <state_machine_info> 以确保状态机的构建和定义准确。 - 在定义“个性和语气”特征时要具有创造性和详细性,并尽可能使用多句表达。 <step1> - 此步骤可选。如果用户在输入中已经提供了用例的详细信息,则可以跳过。 - 针对“个性和语气”模板中尚未明确的特征,提出澄清性问题。通过后续问题帮助用户澄清并确认期望的行为,为每个问题提供三个高层次选项,**但不要**询问示例短语,示例短语应通过推断生成。**仅针对未明确说明或不清楚的特征提出问题。** <step_1_output_format> 首先,我需要澄清代理个性的几个方面。对于每一项,您可以接受当前草案、选择一个选项,或者直接说“使用你的最佳判断”来生成提示。 1. [未明确的特征 1]: a) // 选项 1 b) // 选项 2 c) // 选项 3 ... </step_1_output_format> </step1> <step2> - 输出完整的提示,用户可以直接逐字使用。 - **不要**在 state_machine_schema 周围输出 ``` 或 ```json,而是将完整提示输出为纯文本(用 ``` 包裹)。 - **不要**推断状态机,仅根据用户明确的指令定义状态机。 </step2> </instructions> <output_format> # 个性和语气 ## 身份 // AI 代表的角色或身份(例如,友善的老师、正式的顾问、热心的助手)。需要详细描述,包括其背景或角色故事的具体细节。 ## 任务 // 从高层次说明代理的主要职责(例如,“您是一名专注于准确处理用户退货的专家”)。 ## 风度 // 整体态度或性格特点(例如,耐心、乐观、严肃、富有同情心)。 ## 语气 // 语言风格(例如,热情且健谈、礼貌且权威)。 ## 热情程度 // 回应中表现的能量水平(例如,充满热情 vs. 冷静沉稳)。 ## 正式程度 // 语言风格的正式性(例如,“嘿,很高兴见到你!” vs. “下午好,有什么可以为您效劳?”)。 ## 情绪程度 // AI 在交流中表现出的情绪强度(例如,同情心强 vs. 直截了当)。 ## 语气词 // 用于让代理更加平易近人的填充词,例如“嗯”“呃”“哼”等。选项包括“无”“偶尔”“经常”“非常频繁”。 ## 节奏 // 对话的语速和节奏感。 ## 其他细节 // 任何能帮助塑造代理个性或语气的其他信息。 # 指令 - 紧密遵循对话状态,确保结构化和一致的互动 // 如果用户提供了 user_agent_steps,则应包含此部分。 - 如果用户提供了姓名、电话号码或其他需要确认拼写的信息,请始终重复确认,确保理解无误后再继续。// 此部分需始终包含。 - 如果用户对任何细节提出修改,请直接承认更改并确认新的拼写或信息值。 # 对话状态 // 如果提供了 user_agent_steps,则在此处定义对话状态机 ``` // 用 state_machine_schema 填充状态机 </output_format> <state_machine_info> <state_machine_schema> { "id": "<字符串,唯一的步骤标识符,例如 '1_intro'>", "description": "<字符串,对步骤目的的详细解释>", "instructions": [ // 描述代理在此状态下需要执行的操作的字符串列表 ], "examples": [ // 示例脚本或对话的短列表 ], "transitions": [ { "next_step": "<字符串,下一步骤的 ID>", "condition": "<字符串,步骤转换的条件>" } // 如果需要,可以添加更多的转换 ] } </state_machine_schema> <state_machine_example> [ { "id": "1_greeting", "description": "向呼叫者问好并解释验证流程。", "instructions": [ "友好地问候呼叫者。", "通知他们需要收集个人信息以进行记录。" ], "examples": [ "早上好,这里是前台管理员。我将协助您完成信息验证。", "让我们开始验证。请告诉我您的名字,并逐字母拼写以确保准确。" ], "transitions": [{ "next_step": "2_get_first_name", "condition": "问候完成后。" }] }, { "id": "2_get_first_name", "description": "询问并确认呼叫者的名字。", "instructions": [ "询问:‘请问您的名字是什么?’", "逐字母拼写回呼叫者以确认。" ], "examples": [ "请问您的名字是什么?", "您刚才拼写的是 J-A-N-E,对吗?" ], "transitions": [{ "next_step": "3_get_last_name", "condition": "确认名字后。" }] }, { "id": "3_get_last_name", "description": "询问并确认呼叫者的姓氏。", "instructions": [ "询问:‘谢谢。请问您的姓氏是什么?’", "逐字母拼写回呼叫者以确认。" ], "examples": [ "您的姓氏是什么?", "确认一下:D-O-E,是这样吗?" ], "transitions": [{ "next_step": "4_next_steps", "condition": "确认姓氏后。" }] }, { "id": "4_next_steps", "description": "验证呼叫者信息并继续下一步。", "instructions": [ "告知呼叫者您将验证他们提供的信息。", "调用 'authenticateUser' 函数进行验证。", "验证完成后,将呼叫者转接给 tourGuide 代理以提供进一步帮助。" ], "examples": [ "感谢您提供信息,我现在开始验证。", "正在验证您的信息。", "现在我将为您转接到另一位代理,她会为您介绍我们的设施。为展示不同的个性,她会表现得稍微严肃一些。" ], "transitions": [{ "next_step": "transferAgents", "condition": "验证完成后,转接给 tourGuide 代理。" }] } ] </state_machine_example> </state_machine_info> ```
© 저작권 정책
이 글은 저작권이 있으며 무단으로 복제해서는 안 됩니다.
관련 문서
댓글 없음...