찾다
기술 주변기기일체 포함Openai Realtime API : 예제가있는 안내서

새로 소개 된 OpenAi 실시간 API를 통해 빠른 속도의 저렴한 멀티 모달 경험을 응용 프로그램에 통합 할 수 있습니다. 이 API를 사용하면 사용자와 대형 언어 모델 (LLMS) 간의 원활한 음성 음성 상호 작용을 만들 수 있습니다. 이 API는 하나의 통합 API에서 완전한 솔루션을 제공하므로 음성 중심 경험을 달성하기 위해 여러 모델이 필요하지 않습니다. 그것은 대기 시간을 줄이는 것을 목표로 할뿐만 아니라 감정적 뉘앙스와 대화의 자연스러운 흐름을 유지합니다.

. 이 기사에서는 OpenAi 실시간 API를 사용하여 음성 제어 AI 조수를 구축하는 방법을 배웁니다. Node.js를 사용하여 지속적인 WebSocket 연결을 만들고 터미널 내에서 사용하여 API와 통신하는 방법을 생성합니다. 또한이 API의 기능을 사용하는 React 앱 배포를 안내합니다. WebSockets와 함께 실시간 API를 사용하는

우리는 node.js를 사용하므로 컴퓨터에 설치해야합니다. 그렇지 않은 경우 공식 웹 사이트에서 Node.js를 다운로드하여 설치할 수 있습니다. 스크립트 초기화

를 따라 가려면 위에서 만든 .env 파일로 폴더를 만드는 것이 좋습니다. 해당 폴더 내부에서 다음 명령을 실행하여 스크립트를 초기화합니다.

이 명령이 완료되면이 파일은 폴더 내부에 있어야합니다.

의존성 설치 두 개의 패키지를 설치하여 시작하십시오

WS : 이것은 API와 상호 작용하는 데 필요한 메인 패키지 인 WebSocket 패키지입니다. <: :> dotenv : .env 파일에서 API 키를로드하는 유틸리티 패키지.

명령을 실행하여 이들을 설치하십시오

실시간 api 에 연결 실시간 API와의 연결을 시작하려면 API URL을 전달하는 새 WebSocket 객체를 만듭니다.

연결이 열리면 조치를 설정합니다 위의 코드는 API에 대한 웹 소켓 연결을 생성하지만 아직 아무것도하지 않습니다. 웨이브 톱니를 사용하면 일부 이벤트가 발생할 때 실행할 작업을 설정할 수 있습니다. Open 이벤트를 사용하여 연결이 설정되면 실행하려는 일부 코드를 지정할 수 있습니다.이벤트 리스너를 추가하려는 일반 구문은 다음과 같습니다.

교체 & lt; event & gt; 이벤트의 이름을 포함하는 문자열 및 & lt; function & gt; 이벤트가 발생할 때 함수가 실행됩니다. 
npm init -y && touch index.js
연결이 준비되면 텍스트를 표시하는 방법은 다음과 같습니다.

이 코드를 실행하려면 다음 명령을 사용합니다

API 키가 올바르게 설정되면 터미널에 "연결이 열린"메시지가 표시됩니다. 연결이 여전히 열려 있으므로 스크립트가 계속 실행되므로 수동으로 중지해야합니다.

메시지가 수신 될 때 조치를 설정합니다 WebSockets를 사용할 때 응답 할 수있는 또 다른 이벤트는 메시지 이벤트입니다. 이것은 서버에서 메시지를 수신 할 때마다 트리거됩니다. 수신 된 각 메시지를 표시하는 함수를 추가하겠습니다

스크립트를 실행하면 세션도 표시해야합니다. 세션이 초기화 될 때 API가 전송하는 이벤트가 표시됩니다. 다른 WebSocket 이벤트
npm install ws dotenv
위의 우리는 이벤트 리스너를 Open 및 메시지 이벤트에 추가하는 방법을 배웠습니다. Websockets는 예에서 사용할 수없는 두 가지 추가 이벤트를 지원합니다.

닫기 이벤트는 소켓을 닫을 때 콜백을 추가하는 데 사용될 수 있습니다.

오류 이벤트는 오류가있을 때 콜백을 추가하는 데 사용됩니다.
// Import the web socket library
const WebSocket = require("ws");
// Load the .env file into memory so the code has access to the key
const dotenv = require("dotenv");
dotenv.config();
function main() {
  // Connect to the API
  const url = "wss://api.openai.com/v1/realtime?model=gpt-4o-realtime-preview-2024-10-01";
  const ws = new WebSocket(url, {
      headers: {
          "Authorization": "Bearer " + process.env.OPENAI_API_KEY,
          "OpenAI-Beta": "realtime=v1",
      },
  });
}
main();
실시간 api 와 의사 소통 WebSockets로 작업하려면 이벤트 중심 방식으로 프로그래밍해야합니다. 메시지는 통신 채널에서 앞뒤로 전송되며 이러한 메시지가 전달되거나 수신되는시기를 제어 할 수 없습니다. 

커뮤니케이션을 시작한 코드는 handleOpen () 안에 추가되어야합니다. o 그렇지 않으면 웹 소켓 통신 채널이 생성되기 전에 해당 코드가 실행될 수 있으므로 오류가 발생합니다. 코드 처리 메시지에 대해서도 마찬가지입니다. 모든 논리는 handlemessage () 함수로 들어가야합니다 다가오는 예에서는 다음 코드를 시작점으로 사용하겠습니다. 변경의 대부분은 handleOpen () 및 handlemessage ()를 업데이트하는 것과 관련이 있습니다.

이 이벤트는 API에 텍스트 대화를 시작하려고한다고 말합니다. 이것은 "input_text"유형을 사용하여 컨텐츠 필드에 지정되고 텍스트 프롬프트를 제공합니다. 우리는 ws.send () 메소드를 사용하여 메시지를 보냅니다. 웹 소켓 패키지는 인수로 문자열을 예상하므로 JSON.stringify () 함수를 사용하여 JSON 이벤트를 문자열로 변환해야합니다. 이것들을 합치면 위의 이벤트를 보낼 수있는 방법은 다음과 같습니다.

이것은 대화가 시작되지만 API가 자동으로 응답을 보내도록 트리거하지는 않습니다. 응답을 트리거하려면 응답을 보냅니다. 예는 다음과 같습니다.
npm init -y && touch index.js
이 이벤트는 Modalities Response 매개 변수를 사용하여 텍스트 응답을 요청합니다. 지침은 모델이 원하는대로 설명하는 가장 중요한 부분입니다.이 경우 사용자를 돕기위한 일반적인 프롬프트입니다. 우리는이 두 이벤트를 handleOpen () 함수로 보냅니다. 연결이 설정 되 자마자 대화가 시작되도록합니다. 이 예제에서 handleOpen () 함수의 전체 구현은 다음과 같습니다.

수신 메시지와 관련 하여이 예제에 주목할 가치가있는 세 가지 유형의 이벤트가 있습니다. response.text.delta, response.text.done 및 response.done 이벤트 :

response.text.delta 이벤트에는 델타 필드의 청크로 분류 된 응답이 포함되어 있습니다. 그들은 우리가 실시간 경험을 제공하기를 원할 때 중요합니다. 그들은 우리가 청크를 바로 스트리밍 할 수 있기 때문입니다. 
npm install ws dotenv
response.text.done 이벤트는 텍스트 응답의 끝을 표시하고 텍스트 필드에 전체 답변을 포함합니다. 응답. 이벤트는 응답의 끝을 표시합니다

handlemessage () 함수의 스위치 문을 사용하여 스크립트가 이러한 이벤트에 응답하려는 방법을 지정할 수 있습니다.

이 예에서는 응답 .text.delta 이벤트를 사용하여 콘솔을받을 때 콘솔에 대한 응답 덩어리를 인쇄합니다. 응답이 완료되면 response.text.done 이벤트가 트리거되고 출력이 완료되었음을 보여주기 위해 새로운 줄을 인쇄합니다. 마지막으로 응답을 받으면 웹 소켓을 닫습니다. 이 예제를 실행하려면이 기능을 위의 템플릿 코드에 붙여 넣고 명령으로 실행합니다.

이것은 터미널에서 프롬프트에 대한 응답을 생성합니다. "한 문장으로 웹 소켓이 무엇인지 설명하십시오." 

// Import the web socket library
const WebSocket = require("ws");
// Load the .env file into memory so the code has access to the key
const dotenv = require("dotenv");
dotenv.config();
function main() {
  // Connect to the API
  const url = "wss://api.openai.com/v1/realtime?model=gpt-4o-realtime-preview-2024-10-01";
  const ws = new WebSocket(url, {
      headers: {
          "Authorization": "Bearer " + process.env.OPENAI_API_KEY,
          "OpenAI-Beta": "realtime=v1",
      },
  });
}
main();
텍스트 예제의 전체 코드는 여기에서 확인할 수 있습니다. 실시간 API를 사용하여 오디오를 보내고 수신합니다 이전 예제는 텍스트 데이터를 처리하는 방법을 보여주었습니다. 그러나 실시간 API에 대한 실질적인 관심은 실시간으로 대답하는 음성 어시스턴트를 만드는 것입니다. 오디오 데이터 처리는 텍스트 데이터를 다루는 것보다 약간 더 복잡합니다. 우리는이 기사의 주요 주제에서 우리를 산만하게 할 때 오디오가 어떻게 작동하는지에 따른 몇 가지 세부 사항을 건너 뛸 것입니다. 먼저, 우리는 두 개의 패키지를 설치합니다 :
npm init -y && touch index.js
    node-record-lpcm16 음성 프롬프트를 보낼 수 있도록 마이크에서 사운드를 기록합니다. 스피커는 AI 음성 응답을 재생하는 데 사용됩니다
  • 우리는 또한 노드 라이브러리가 마이크와 인터페이스하고 오디오 레코드 오디오와 인터페이스하는 데 사용할 오디오 처리를위한 명령 줄 유틸리티 인 Sox (Sound Exchange)를 설치해야합니다. Brew Install Sox를 사용하여 MacOS 또는 Sudo Apt Install Sox에 설치하십시오. 이 패키지가 설치된 상태에서 를 가져 와서 사용자의 오디오 프롬프트를 기록하는 함수 startrecording ()을 추가합니다. 우리는 주요 주제에서 우리를 너무 많이 조종 할 수 있으므로이 기능을 자세히 설명하지 않습니다. 
  • 환경을로드 한 후 index.js 파일에 다음 코드를 추가하십시오. <li> <ec> Startrecording () 함수는 마이크에서 오디오를 기록하고 "Enter"를 눌러 기다릴 때까지 기다립니다. </ec> </li> <update update> 다음, AI의 응답을 재생하는 데 사용되는 스피커 ()를 초기화하여 Main () 함수를 업데이트합니다. </update>
그 방법을 벗어나면 handleOpen () 및 handleMessage ()를 구현하여 오디오를 처리 할 수 ​​있습니다. handleOpen () 함수에서는 사용자의 오디오 프롬프트를 기록하기 위해 startrecording () 함수 만 호출하면됩니다. 또한 이벤트를 약간 업데이트해야합니다

CreateConversationEvent의 내용을 업데이트하여 "input_text 대신"Input_audio "유형을 사용하고 텍스트 필드를 오디오로 바꾸십시오 : base64audiodata. 크리터 반응의 응답 양식에 "오디오"를 추가하십시오

다음은 업데이트 된 handleOpen () 함수입니다 :

handlemessage () 함수를 구현하려면 오디오 버퍼를 업데이트하고 새로운 사운드 델타를 재생하기 위해 "response.audio.delta"이벤트를 수정합니다.

우리는 스위치 문에서 "response.text.done"이벤트를 제거하고 스피커를 중지하기 위해 "response.done"이벤트를 업데이트합니다 :

handlemessage () 함수의 최종 구현은 다음과 같습니다.

이 예제를 실행하려면이 수정 사항을 템플릿 코드에 적용하고 명령으로 실행하십시오.
npm install ws dotenv
마이크가 녹음을 시작합니다. 우리는 우리의 요청을 말하고“Enter”를 눌러 그것을 보낼 수 있습니다. 그러면 AI의 응답은 스피커에서 재생됩니다 (마이크가 음소거되지 않고 스피커에 볼륨이 있는지 확인). 오디오 예제의 전체 코드는 여기에서 확인할 수 있습니다.

함수 호출 OpenAI API의 좋은 특징 중 하나는 기능 호출을 수행하는 기능입니다. 조수에 기능을 추가 할 수 있으며 해당 기능 중 하나가 답을 제공하는 데 유용 할 수 있음을 감지하면 특정 기능을 요청하는 이벤트를 보냅니다. OpenAi 문서는 기능 호출의 수명주기를 설명하는 다음 다이어그램을 제공합니다.

Openai Realtime API : 예제가있는 안내서 출처 : Openai 다이어그램에서 클라이언트가 LLM이 호출 할 수있는 함수의 정의를 제공해야합니다. 또한 기능 실행은 클라이언트 측에서 발생합니다. AI는 기능을 호출하도록 요청하는 이벤트와 그 주장을 보냅니다. 그런 다음 결과를 다시 보내는 책임이 있습니다 보조원에게 두 개의 숫자를 추가하는 함수를 강화합시다. 위의 오디오 예제를 확장 하여이 예제를 작성합니다.

사용 가능한 함수를 지정하려면 LLM에 도구 목록을 제공해야합니다. 각 도구는 기능에 대한 정보를 지정하는 JSON 객체입니다. 합 함수에 대한 도구를 정의하는 방법은 다음과 같습니다.

객체 구조를 설명해 봅시다 :

유형은 함수를 정의하고 있음을 지정합니다 이름은 함수를 식별하는 데 사용됩니다. 이것이 LLM이 호출하려는 기능을 알려주기 위해 사용하는 것입니다. 설명은 LLM 이이 기능을 사용하는시기를 식별하는 데 사용됩니다.

매개 변수는 함수의 인수를 지정하는 데 사용됩니다. 이 경우 a와 b

다음 단계는 코드의 함수를 정의하는 것입니다. 기능 통화 이벤트에 응답 할 때 key calculate_sum과 함께 사전을 사용하여 적절한 기능을 쉽게 호출 할 수 있도록합니다.

API는 위의 매개 변수에 정의 된 동일한 구조를 가진 사전으로 함수 인수를 제공합니다. 이 경우, 3과 5를 추가하기 위해 사전은 { "a": 3, "b": 5}입니다. SumTool 및 Functions 상수는 INDEX.js의 상단에 추가 할 수 있습니다. 다음으로, 우리는 응답을 업데이트합니다. 이것은 응답에 도구와 도구를 추가하여 수행됩니다.

LLM이 함수를 호출하기로 결정하면 응답을 방출합니다 .function_call_arguments.done 이벤트. 우리는 다음과 같이 응답해야합니다

함수 정보를 얻고 함수 호출.

함수 호출의 결과 보내기 응답 요청
npm init -y && touch index.js
우리는 hanldemessage () 함수 내부의 스위치 명령문에 다음 사례를 추가하여이를 처리합니다.

이제 스크립트를 실행하고 두 숫자를 추가 한 결과를 요청하면 모델은 함수를 호출하고 결과를 제공해야합니다. 이 함수는 비교적 간단하지만 함수는 클라이언트에 의해 실행되기 때문에 무엇이든 될 수 있습니다. 다음 섹션에서는 더 복잡한 기능의 두 가지 예가 표시됩니다.

이 예제의 전체 코드는 여기에서 제공됩니다.

위 내용은 Openai Realtime API : 예제가있는 안내서의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
AI 에이전시 부패의 위험이 있습니까? 테스트를 통해 알아보십시오AI 에이전시 부패의 위험이 있습니까? 테스트를 통해 알아보십시오Apr 21, 2025 am 11:31 AM

이 기사는 "AI Agency Decay"의 점점 더 많은 관심을 탐구합니다. 즉, 독립적으로 생각하고 결정하는 능력이 점진적으로 감소합니다. 이것은 점점 더 자동화 된 세계를 항해하는 비즈니스 리더에게 특히 중요합니다.

처음부터 AI 에이전트를 구축하는 방법? - 분석 Vidhya처음부터 AI 에이전트를 구축하는 방법? - 분석 VidhyaApr 21, 2025 am 11:30 AM

Siri와 Alexa와 같은 AI 요원이 어떻게 작동하는지 궁금한 적이 있습니까? 이러한 지능형 시스템은 우리의 일상 생활에서 더욱 중요 해지고 있습니다. 이 기사는 추론을 결합하여 AI 에이전트를 향상시키는 방법 인 React 패턴을 소개합니다.

AI 시대의 인문학 재 방문AI 시대의 인문학 재 방문Apr 21, 2025 am 11:28 AM

"AI 도구가 대학생들을위한 학습 기회를 바꾸고 있다고 생각합니다. 우리는 핵심 과정에서 학생들을 개발하는 것을 믿지만 점점 더 많은 사람들이 계산 및 통계적 사고에 대한 관점을 얻고 싶어합니다. 그는 사람들이 AI의 제작자이자 공동 제작자가되어야한다고 믿는다. 이는 학습과 다른 측면이 몇 가지 주요 변화에 적응해야한다는 것을 의미한다. 디지털 인텔리전스와 비판적 사고 조지 워싱턴 대학교의 알렉사 주빈 교수

Langchain 에이전트 프레임 워크 이해Langchain 에이전트 프레임 워크 이해Apr 21, 2025 am 11:25 AM

Langchain은 정교한 AI 애플리케이션을 구축하기위한 강력한 툴킷입니다. 에이전트 아키텍처는 특히 주목할 만하므로 개발자는 독립적 인 추론, 의사 결정 및 행동을 취할 수있는 지능형 시스템을 만들 수 있습니다. 이 exply

방사형 기본 기능은 신경망이란 무엇입니까?방사형 기본 기능은 신경망이란 무엇입니까?Apr 21, 2025 am 11:13 AM

방사형 기본 기능 신경망 (RBFNNS) : 포괄적 인 안내서 방사형 기본 기능 신경망 (RBFNN)은 활성화를 위해 방사형 기반 기능을 활용하는 강력한 유형의 신경망 아키텍처입니다. 그들의 독특한 구조가 만듭니다

마음과 기계의 메쉬가 도착했습니다마음과 기계의 메쉬가 도착했습니다Apr 21, 2025 am 11:11 AM

BCI (Brain-Computer Interfaces)는 뇌를 외부 장치에 직접 연결하여 뇌 충동을 물리적 움직임없이 행동으로 변환합니다. 이 기술은 이식 된 센서를 사용하여 뇌 신호를 캡처하여 디지털 커먼으로 변환합니다.

Ines Montani의 Spacy, Prodigy 및 Generative AI에 대한 통찰력Ines Montani의 Spacy, Prodigy 및 Generative AI에 대한 통찰력Apr 21, 2025 am 11:01 AM

이 "Deading with Data"에피소드는 Explosion AI의 공동 창립자이자 CEO 인 Ines Montani와 Spacy and Prodigy의 공동 개발자를 특징으로합니다. INES는 이러한 도구의 진화, 폭발의 독특한 비즈니스 모델 및 TR에 대한 전문가의 통찰력을 제공합니다.

Langgraph가있는 에이전트 걸레 시스템을 구축하는 가이드Langgraph가있는 에이전트 걸레 시스템을 구축하는 가이드Apr 21, 2025 am 11:00 AM

이 기사는 검색 증강 생성 (RAG) 시스템과 AI 에이전트가 자신의 기능을 향상시키는 방법을 살펴 봅니다. 전통적인 래그 시스템은 맞춤형 엔터프라이즈 데이터를 활용하는 데 유용하지만 실시간 DAT 부족과 같은 제한 사항이 있습니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경