OpenAI GPT-Live-1과 GPT-6 Astra 출시 후, 개발자는 어떻게 쓰는가?실시간 음성, AI Agent, API 실전

 ·  약 10분 읽기  ·  AI 개발

OpenAI GPT-Live-1과 GPT-6 Astra 출시 후, 개발자는 어떻게 쓰는가? 실시간 음성, AI Agent, API 실전

한 줄로 말하면: 같은 주에 이름 두 개가 내려왔고, 많은 사람은 「또 하나의 더 센 ChatGPT」로 본다——개발자를 실제로 막는 것은 모델 이름이 아니라, 음성 층·추론 층·본기기 실행 면을 한데 묶어도 되는지다. 아래에서는 실시간 음성, Agent 백엔드, API 세 줄로 나눠, 먼저 붙이는 법을 보고 청구와 격리를 본다.

먼저 둘을 나눈다: 말하는 모델과 일하는 모델

2026년 9월, OpenAI는 블록을 잇달아 내놓았다. 3일부터 GPT-6 Astra 배포가 시작됐고, 10일에는 GPT-Live-1이 API에 들어갔다. 이전 글은 「언제 오는가」를 다루고, Astra 보안 우려는 「켠 뒤 폭발 반경이 얼마나 커지는가」를 다룬다. 이 글은 세 번째 질문이다. 이미 왔다. 개발자는 어떻게 붙이는가.

공식은 역할을 깨끗이 자른다. GPT-Live-1은 전이중 음성 프론트엔드다. 듣고, 말하고, 끼어들기를 처리하며, 언제 일을 백엔드에 넘길지 정한다. Astra(또는 Terra / Luna)가 추론, 자료 조회, 도구 호출의 층이다. Realtime API는 음성·추론·도구를 한 모델에 실었다. GPT-Live는 대화와 작업을 나누고, 백엔드가 일하는 동안에도 세션은 이어진다.

모델 / 인터페이스 맡는 일 맡지 않는 일
음성 프론트엔드 gpt-live-1 · POST /v1/live/sessions 듣기, 말하기, 끼어들기, 받아쓰기, 언제 위임할지 업무 규칙, 권한, 도구 실행
추론 백엔드 gpt-6-astra 또는 Terra / Luna · Responses 계획, 검색, 도구 선택, 말할 수 있는 결과 반환 실시간 발음, 끼어들기 타이밍
당신 앱 서버 + 함수 + 로그 키, 확인, 저장, 백그라운드 작업의 취소 또는 계속 프로젝트 키를 브라우저에 넣는 일

역할을 한 줄로

Live-1에는 짧은 지시: 말투와, 언제 백엔드에 부탁할지. 세칙, 도구 워크플로, 승인 규칙은 Astra에 둔다. 음성 끼어들기는 백그라운드 작업을 자동으로 멈추지 않는다——멈출지 끝낼지는 앱이 정한다.

GPT-Live-1: 실시간 음성 층을 어떻게 붙일 것인가

GPT-Live-1은 먼저 ChatGPT에 나타났고, 9월 10일에 API로 들어갔다. 동시에 듣고 말할 수 있다. 공식 평가 Full Duplex Bench에서는 GPT-Realtime-2.1보다 약 30포인트 높다. Astra(중간 추론)와 짝을 이룰 때, 종단 음성 Agent를 재는 Tau3에서 1위였다. Speak의 초기 평가에서는 학습자가 끼어들림을 당하는 횟수가 옛 턴제보다 거의 80% 줄었다고 한다.

개발자가 실제로 고르는 것은 연결 방식이지, 「더 잘 말하는 Chat Completions」를 찾는 일이 아니다.

  • WebRTC: 브라우저 음성. 마이크와 스피커는 미디어 트랙, JSON 이벤트는 데이터 채널. 브라우저는 SDP만 내고, 프로젝트 키는 서버에 둔다.
  • WebSocket: 서버 쪽 오디오 통합. 한 연결에 오디오와 제어 이벤트를 같이 실는다.
  • 전화 / SIP: 기존 통화를 붙인다. LiveKit, Twilio, Telnyx, Daily/Pipecat가 있으면 공식 파트너 경로로.

한도는 동시 세션이지 토큰이 아니다. Free는 쓸 수 없다. Tier 1은 25개, Tier 5는 500개. 음성 층은 분당 0.05달러, 초 단위이며 분으로 올림하지 않는다. 지식 컷오프는 2025년 7월 31일. 지금은 이미지를 받지 않고, Structured Outputs와 미세조정도 없다.

세션을 만든 뒤 session.started로 채널이 준비됐는지 확인하고 입을 연다. 우회 감시나 지시 핫 업데이트가 필요하면 서버 쪽 sideband WebSocket을 더한다. 오디오는 주 연결에 남긴다. 받아쓰기, 키워드 편향, 턴 감지는 내장이므로 STT를 한 겹 더 쌓을 필요는 없다.

GPT-6 Astra: Agent 백엔드를 어떻게 붙일 것인가

Astra는 텍스트 추론 플래그십이고 모델 ID는 gpt-6-astra다. Responses / Chat Completions / Bedrock을 쓰며, Live 세션 자체에는 타지 않는다. 기업 ChatGPT 워크스페이스는 기본 꺼짐이며 관리자가 켠다. API는 입력 100만 토큰당 약 10달러, 출력 100만당 약 50달러. 자격 있는 고객은 Zero Data Retention을 켤 수 있다.

음성 제품에 붙일 때 Astra는 위임 설정에만 나와야 한다. 같은 대화를 빼앗는 병렬 채팅 완성을 새로 열지 않는다. 공식은 위임을 두 가지로 준다.

Responses 위임 Client 위임
누가 맥락을 준비하는가 GPT-Live가 세션 맥락을 고른 Responses 모델에 넘긴다 앱이 이력, 기억, 업무 상태를 직접 짠다
누가 도구 루프를 도는가 OpenAI가 세션의 delegation.responses에 따라 돈다 직접 모델, 폴백, 예산, 체크포인트를 라우팅한다
결과가 음성으로 돌아가기 전 그대로 Live-1에 넘겨 말하게 할 수 있다 먼저 검증, 마스킹, 합치기, 폐기를 할 수 있다
맞는 경우 일단 통하게 한다. 도구 면이 단순하다 Agent 프레임워크가 이미 있거나, 입 밖으로 내기 전에 반드시 심사해야 한다

세션을 만들 때 모드를 고른다. 중간에 바꾸면 immutable_field_update가 나고 새로 열 수밖에 없다. Responses 위임은 functionweb_search, 그리고 백엔드 모델 쪽 reasoning / text / max_output_tokens를 쓴다. 사용자 정의 함수는 당신 서버가 실행하고 권한과 확인도 거기서 한다. 지연을 더 낮추려면 프로젝트에 Fast가 열려 있을 때 delegation.responses.service_tierpriority로 둔다.

Astra의 보안 경계는 「음성에 붙였다」고 해서 자동으로 느슨해지지 않는다. 공개판은 고급 공격 작업을 거부한다. 기업 워크스페이스는 기본 꺼짐. 고권한 Agent를 일상 컴퓨터에 거는 대가는 Astra 보안 우려권한을 넘기는 판단을 보면 된다.

세 가지 구현 조합: 장면을 고른 뒤 모델을 고른다

공식도 적어 두었다. 일정·조회는 싼 백엔드, 복잡한 민원은 Astra로 올린다. 「음성 제품 = 전 구간 Astra」를 기본값으로 두지 말 것.

조합 음성 층 백엔드 먼저 쓸 곳 쓰지 말 곳
A. 대화만 GPT-Live-1 위임 없음, 또는 web_search 연습 상대, 안내, 구두 FAQ 주문 변경, 창고 조작, 결제
B. 대량 조회 GPT-Live-1 Terra / Luna + 읽기 전용 도구 물류 상태, 예약 변경, 재고 조회 긴 계획과 쓰기 작업
C. 음성 Agent GPT-Live-1 GPT-6 Astra + 심사된 쓰기 도구 복잡한 민원, 다단계 처리, 추론이 필요한 장애 분리 프로덕션 키와 일상 데스크톱을 한데 묶는 일

조합 C가 되어서야 AI Agent 인프라 계층에 맞춰 신원, 디스크, 로그를 나눈다. 24시간 상주 코딩 Agent도 음성 세션과 .env를 같이 쓰지 않는다. 24시간 AI Coding Agent 배포를 보라.

이전 순서

Realtime 파이프라인이 있으면: 끼어들기와 첫 음 지연을 대조한 뒤 세션 생성을 옮긴다. 텍스트 Agent가 있으면: 먼저 Client 위임으로 기존 harness를 Live-1 뒤에 붙인다. 도구 층은 다시 쓰지 않는다. 새 제품: Responses 위임 + 조합 B에서 시작해, 장면이 필요를 증명한 뒤에 Astra로 올린다.

API 실전: WebRTC + Responses 위임

최소로 돌아가는 경로는 이렇다. 브라우저가 마이크를 잡고 → HTTPS 서버가 프로젝트 키로 Live 세션을 만들어 SDP를 교환하고 → 미디어 트랙이 소리를 내고 → 데이터 채널이 받아쓰기와 위임 이벤트를 받는다. 아래는 공식 Session 설정의 Astra 판이다. 문서 예시는 기본으로 gpt-5.6-terra를 쓰고, 플래그십 음성 Agent라면 Astra로 바꾼다.

/** @type {import("openai/resources/live/live").SessionConfig} */
export const session = {
  model: "gpt-live-1",
  instructions: "당신은 고객 지원 음성 도우미입니다. 인사, 확인, 진행 상황은 직접 말하세요. 주문 조회, 예약 변경, 환불은 반드시 백엔드에 위임하세요.",
  delegation: {
    type: "responses",
    responses: {
      model: "gpt-6-astra",
      instructions: "인가된 주문 조회와 일정 변경만 처리합니다. 쓰기 작업은 먼저 함수를 거치고, 앱 확인 후에 이어갑니다.",
      tools: [
        { type: "web_search" },
        {
          type: "function",
          name: "lookup_order",
          description: "주문 번호로 읽기 전용 상태를 조회한다",
          parameters: {
            type: "object",
            properties: { order_id: { type: "string" } },
            required: ["order_id"]
          }
        }
      ],
      tool_choice: "auto",
      parallel_tool_calls: true
    }
  }
};

서버는 프로젝트 키로 POST /v1/live/sessions를 호출해 브라우저 SDP offer를 answer로 바꾸고 RTCPeerConnection에 돌려준다. 키와 Session 설정은 이 서버를 떠나지 않게 한다. 함수를 실제로 실행할 때는 중첩된 response.output_item.done에서 call_id / name / arguments를 읽고, 인가한 작업을 돌린 뒤 결과를 Responses item으로 다시 붙인다. 터미널 스냅샷의 response.output: []는 대기 중인 함수 호출이 없다는 뜻이 아니다.

# 의사코드: 신뢰할 수 있는 서버에서 SDP를 교환한다. OPENAI_API_KEY를 브라우저로 내리지 말 것
import os, requests

def create_live_session(sdp_offer: str, session_config: dict) -> str:
    r = requests.post(
        "https://api.openai.com/v1/live/sessions",
        headers={
            "Authorization": f"Bearer {os.environ['OPENAI_API_KEY']}",
            "Content-Type": "application/sdp",
        },
        params={"model": "gpt-live-1"},
        data=sdp_offer,
        timeout=20,
    )
    r.raise_for_status()
    return r.text  # SDP answer → 브라우저 setRemoteDescription으로 반환

세션 중에는 session.update로 백엔드 모델, 지시, 도구를 핫 업데이트할 수 있고 재연결은 필요 없다. delegationnull로 두면 Client 모드로 바뀌며, 이미 도는 Responses 세션은 되돌릴 수 없다. 우회 감시는 session.instructions.append(delegation_id: null)로 대화를 끌어올 수 있다. 이는 Live 모델에만 영향을 주고, Astra 지시는 바꾸지 않으며, 이미 도는 위임도 취소하지 않는다.

오판하기 쉬운 두 가지

백엔드 response.completed는 사용자가 답을 들었다는 뜻이 아니다. Live의 출력 받아쓰기와 오디오를 기준으로 삼는다. 사용자가 도우미를 끊어도 뒤의 조회가 멈춘 것은 아니다. 작업 상태는 앱이 장부를 가져야 한다.

청구, 한도, 격리

음성과 추론은 청구가 두 장이다. 토큰 단가 비교는 토큰 요금 대조를 보면 된다. 여기서는 Live와 Astra를 묶을 때 빠지기 쉬운 부분만 적는다.

항목 어떻게 세는가 개발자가 놓치기 쉬운 점
GPT-Live-1 음성 0.05달러 / 분, 초 단위 사용자 침묵, 도우미 발화, 끼어들기 뒤 공백도 세션 시간에 들어간다
Astra / Terra / Luna Responses 입력 / 출력 토큰 위임마다 독립 추론. 병렬 도구는 쌓인다
web_search와 함수 도구 단가 + 당신 인프라 함수 실패 재시도는 Astra를 한 번 더 친다
동시 세션 Tier 한도. 토큰 한도가 아니다 데모 페이지를 열어 두면 잔액보다 먼저 25개가 찬다

격리 목록은 보안 글과 같고, 음성 제품에는 「세션이 상주한다」가 한 줄 더 붙는다.

  1. 키는 서버에만. 브라우저는 SDP를 보내고 오디오를 재생한다.
  2. 쓰기 도구는 기본으로 사람 확인. 조회는 자동이어도 된다. 환불, 재고 변경, 코드 푸시는 당신 확인을 거친다.
  3. Agent 신원과 일상 데스크톱을 나눈다. 고권한 함수, Git 토큰, 프로덕션 .env는 독립 Cloud Mac 노드에 둔다. 주력 컴퓨터는 기록 검토와 머지만.
  4. 로그는 세 문장에 답해야 한다. 어느 Live 세션인가, 어느 위임인가, 무엇이 바뀌었나. 답하지 못하면 감사가 없다.
  5. 기업 워크스페이스는 기본 꺼짐을 유지한다. 필요할 때 관리자가 켠다. 개인 구독도 Astra를 프로덕션 저장소에 한 번에 붙이지 않는다.

올바른 읽기: GPT-Live-1이 낮추는 것은 말하는 비용이지 폭발 반경이 아니다. 흔한 오판은 「음성 층이 비싸니 전 구간 Astra, 한 번 위임으로 끝낸다」이다. 더 안정적인 수는 조합 B로 양을 받고 조합 C로 어려운 일을 받으며, 노트북에서 쓰기 작업을 돌리지 않는 것이다.

자주 묻는 질문

GPT-Live-1과 GPT-6 Astra는 같은 모델인가?
아니다. Live-1은 전이중 음성 프론트엔드. Astra는 텍스트 추론과 도구 백엔드. 공식은 둘을 짝 짓기를 권하며, 한 모델에 두 일을 동시에 시키지 않는다.

Realtime API에서 바로 GPT-Live-1로 옮겨야 하나?
브라우저와 새 음성 제품은 먼저 옮긴다. 이미 안정된 Realtime 파이프라인은 지연과 끼어들기를 대조한 뒤에 옮겨도 된다. 위임 모드를 바꾸려면 새 세션이 필요하고, 핫스왑은 안 된다.

음성 세션에 Astra 토큰 청구가 같이 들어가나?
한 청구에 섞이지 않는다. 음성 층은 초 단위이며 분당 약 0.05달러. Astra와 도구는 각각의 Responses 단가로 따로 계산한다.

API 키를 프론트 페이지에 바로 넣어도 되나?
안 된다. 프로젝트 키는 신뢰할 수 있는 서버에 둔다. 브라우저는 SDP만 보내고, 서버가 POST /v1/live/sessions로 답을 바꿔 준다.

ZavCloud Developer Infrastructure

음성 Agent 실행 면은 독립 Mac 노드에

브라우저는 말하기만. 키와 쓰기 도구는 서버에 둔다

전용 Mac mini를 일 단위로 빌려 Astra용 홈과 디스크를 나눈다

전용 Mac 노드 구성하기
New Arrival M4 플랜 보기