Live API 참조

Live API는 지연 시간이 짧은 Gemini와의 양방향 음성 및 동영상 상호작용을 지원합니다. Live API를 사용하면 최종 사용자에게 사람처럼 자연스러운 음성 대화 경험과 음성 명령을 사용하여 모델의 응답을 중단할 수 있는 기능을 제공할 수 있습니다. Live API는 텍스트, 오디오, 동영상 입력을 처리할 수 있으며 텍스트 및 오디오 출력을 제공할 수 있습니다.

Live API에 대한 자세한 내용은 Live API를 참조하세요.

기능

Live API에는 다음과 같은 주요 기능이 포함되어 있습니다.

  • 멀티모달 기능: 모델은 보고, 듣고, 말할 수 있습니다.
  • 지연 시간이 짧은 실시간 상호작용: 모델은 빠른 응답을 제공할 수 있습니다.
  • 세션 메모리: 모델은 단일 세션에서의 모든 상호작용을 기억하여 이전에 들었거나 본 정보를 기억합니다.
  • 함수 호출, 코드 실행, 검색을 도구로 지원: 모델을 외부 서비스 및 데이터 소스와 통합할 수 있습니다.

Live API는 서버 간 통신을 위해 설계되었습니다.

웹 및 모바일 앱의 경우 Daily의 파트너 통합을 사용하는 것이 좋습니다.

지원되는 모델

시작하기

Live API를 사용해 보려면 Vertex AI Studio로 이동한 다음 세션 시작을 클릭합니다.

Live API는 WebSockets를 사용하는 스테이트풀(Stateful) API입니다.

이 섹션에서는 Python 3.9 이상을 사용하여 텍스트 간 생성에 Live API를 사용하는 방법의 예를 보여줍니다.

Python

설치

pip install --upgrade google-genai

자세한 내용은 SDK 참고 문서를 참조하세요.

Vertex AI에서 Gen AI SDK를 사용하도록 환경 변수를 설정합니다.

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

from google import genai
from google.genai.types import (Content, HttpOptions, LiveConnectConfig,
                                Modality, Part)

client = genai.Client(http_options=HttpOptions(api_version="v1beta1"))
model_id = "gemini-2.0-flash-live-preview-04-09"

async with client.aio.live.connect(
    model=model_id,
    config=LiveConnectConfig(response_modalities=[Modality.TEXT]),
) as session:
    text_input = "Hello? Gemini, are you there?"
    print("> ", text_input, "\n")
    await session.send_client_content(
        turns=Content(role="user", parts=[Part(text=text_input)])
    )

    response = []

    async for message in session.receive():
        if message.text:
            response.append(message.text)

    print("".join(response))
# Example output:
# >  Hello? Gemini, are you there?
# Yes, I'm here. What would you like to talk about?

통합 가이드

이 섹션에서는 통합이 Live API와 어떻게 작동하는지 설명합니다.

세션

WebSocket 연결은 클라이언트와 Gemini 서버 간에 세션을 설정합니다.

클라이언트가 새 연결을 시작한 후 세션에서 서버와 메시지를 교환하여 다음 작업을 실행할 수 있습니다.

  • 텍스트, 오디오 또는 동영상을 Gemini 서버로 전송합니다.
  • Gemini 서버에서 오디오, 텍스트 또는 함수 호출 요청을 수신합니다.

세션 구성은 연결 후 첫 번째 메시지에서 전송됩니다. 세션 구성에는 모델, 생성 매개변수, 시스템 안내, 도구가 포함됩니다.

다음 구성 예시를 참조하세요.


{
  "model": string,
  "generationConfig": {
    "candidateCount": integer,
    "maxOutputTokens": integer,
    "temperature": number,
    "topP": number,
    "topK": integer,
    "presencePenalty": number,
    "frequencyPenalty": number,
    "responseModalities": [string],
    "speechConfig": object
  },

  "systemInstruction": string,
  "tools": [object]
}

자세한 내용은 BidiGenerateContentSetup을 참조하세요.

메시지 보내기

메시지는 WebSocket 연결을 통해 교환되는 JSON 형식 객체입니다.

메시지를 전송하려면 클라이언트가 열린 WebSocket 연결을 통해 JSON 객체를 전송해야 합니다. JSON 객체는 다음 객체 세트의 필드 중 정확히 하나를 포함해야 합니다.


{
  "setup": BidiGenerateContentSetup,
  "clientContent": BidiGenerateContentClientContent,
  "realtimeInput": BidiGenerateContentRealtimeInput,
  "toolResponse": BidiGenerateContentToolResponse
}

지원되는 클라이언트 메시지

지원되는 클라이언트 메시지는 다음 표를 참조하세요.

메시지 설명
BidiGenerateContentSetup 첫 번째 메시지에서 전송될 세션 구성
BidiGenerateContentClientContent 클라이언트에서 제공하는 현재 대화의 증분 콘텐츠 업데이트
BidiGenerateContentRealtimeInput 실시간 오디오 또는 동영상 입력
BidiGenerateContentToolResponse 서버에서 수신한 ToolCallMessage에 대한 응답

메시지 수신

Gemini로부터 메시지를 수신하려면 WebSocket 'message' 이벤트를 수신한 다음 지원되는 서버 메시지의 정의에 따라 결과를 파싱합니다.

다음을 참조하세요.

ws.addEventListener("message", async (evt) => {
  if (evt.data instanceof Blob) {
    // Process the received data (audio, video, etc.)
  } else {
    // Process JSON response
  }
});

서버 메시지에는 다음 객체 세트의 필드 중 정확히 하나가 포함됩니다.


{
  "setupComplete": BidiGenerateContentSetupComplete,
  "serverContent": BidiGenerateContentServerContent,
  "toolCall": BidiGenerateContentToolCall,
  "toolCallCancellation": BidiGenerateContentToolCallCancellation
  "usageMetadata": UsageMetadata
  "goAway": GoAway
  "sessionResumptionUpdate": SessionResumptionUpdate
  "inputTranscription": BidiGenerateContentTranscription
  "outputTranscription": BidiGenerateContentTranscription
}

지원되는 서버 메시지

다음 표에서 지원되는 서버 메시지를 참조하세요.

메시지 설명
BidiGenerateContentSetupComplete 설정 완료 시 전송되는 클라이언트의 BidiGenerateContentSetup 메시지
BidiGenerateContentServerContent 클라이언트 메시지에 대한 응답으로 모델에서 생성된 콘텐츠
BidiGenerateContentToolCall 클라이언트가 함수 호출을 실행하고 일치하는 ID를 가진 응답을 반환하도록 요청
BidiGenerateContentToolCallCancellation 사용자가 모델 출력을 중단하여 함수 호출이 취소되는 경우에 전송
UsageMetadata 지금까지 세션에서 사용한 토큰 수에 관한 보고서
GoAway 현재 연결이 곧 종료된다는 신호
SessionResumptionUpdate 재개할 수 있는 세션 체크포인트
BidiGenerateContentTranscription 사용자 또는 모델의 음성 스크립트 작성

증분 콘텐츠 업데이트

증분 업데이트를 사용하여 텍스트 입력을 전송하거나, 세션 컨텍스트를 설정하거나, 세션 컨텍스트를 복원합니다. 짧은 컨텍스트의 경우 정확한 이벤트 순서를 나타내기 위해 차례대로 상호작용을 보낼 수 있습니다. 컨텍스트가 긴 경우 후속 상호작용을 위해 컨텍스트 윈도우를 확보할 수 있도록 단일 메시지 요약을 제공하는 것이 좋습니다.

다음 예시 컨텍스트 메시지를 참조하세요.

{
  "clientContent": {
    "turns": [
      {
          "parts":[
          {
            "text": ""
          }
        ],
        "role":"user"
      },
      {
          "parts":[
          {
            "text": ""
          }
        ],
        "role":"model"
      }
    ],
    "turnComplete": true
  }
}

콘텐츠 부분은 functionResponse 유형일 수 있지만 함수 호출에 대한 응답을 제공하는 데 BidiGenerateContentClientContent를 사용해서는 안 됩니다. 대신 BidiGenerateContentToolResponse를 사용해야 합니다. BidiGenerateContentClientContent는 이전 컨텍스트를 설정하거나 대화에 텍스트 입력을 제공하는 데만 사용해야 합니다.

오디오 및 동영상 스트리밍

코드 실행

코드 실행에 관해 자세히 알아보려면 코드 실행을 참조하세요.

함수 호출

모든 함수는 BidiGenerateContentSetup 메시지의 일부로 도구 정의를 전송하여 세션 시작 시 선언되어야 합니다.

JSON을 사용하여 함수를 정의할 때, 특히 OpenAPI 스키마 형식선택된 하위 집합을 사용합니다. 단일 함수 선언에는 다음 매개변수가 포함될 수 있습니다.

  • 이름(문자열): API 호출 내 함수의 고유 식별자입니다.

  • 설명(문자열): 함수의 목적과 기능에 관한 포괄적인 설명입니다.

  • 매개변수(객체): 함수에 필요한 입력 데이터를 정의합니다.

    • 유형 문자열): 객체와 같은 전체 데이터 유형을 지정합니다.

    • 속성(객체): 개별 매개변수를 각각 나열합니다.

      • 유형(문자열): 문자열, 정수, 불리언과 같은 매개변수의 데이터 유형입니다.
      • 설명(문자열): 매개변수의 목적과 예상 형식을 명확하게 설명합니다.
    • 필수(배열): 함수가 작동하는 데 필수인 매개변수 이름을 나열하는 문자열 배열입니다.

curl 명령어를 사용하는 함수 선언의 코드 예시는 Gemini API를 사용한 함수 호출를 참조하세요. Gemini API SDK를 사용하여 함수 선언을 만드는 방법의 예시는 함수 호출 튜토리얼을 참조하세요.

모델은 단일 프롬프트에서 여러 함수 호출과 출력을 연결하는 데 필요한 코드를 생성할 수 있습니다. 이 코드는 샌드박스 환경에서 실행되어 후속 BidiGenerateContentToolCall 메시지를 생성합니다. 각 함수 호출의 결과가 나올 때까지 실행이 일시중지되므로 순차 처리가 보장됩니다.

클라이언트는 BidiGenerateContentToolResponse로 응답해야 합니다.

자세한 내용은 함수 호출 소개를 참조하세요.

오디오 형식

지원되는 오디오 형식 목록을 참조하세요.

시스템 안내

시스템 안내를 제공하여 모델의 출력을 더 효과적으로 제어하고 오디오 응답의 어조와 감정을 지정할 수 있습니다.

시스템 안내는 상호작용이 시작되기 전에 프롬프트에 추가되며 전체 세션에 적용됩니다.

시스템 안내는 세션이 시작될 때, 초기 연결 직후에만 설정할 수 있습니다. 세션 중에 모델에 추가 입력을 제공하려면 점진적 콘텐츠 업데이트를 사용하세요.

중단

사용자는 언제든지 모델의 출력을 중단할 수 있습니다. 음성 활동 감지(VAD)가 중단을 감지하면 진행 중인 생성이 취소되고 삭제됩니다. 이미 클라이언트로 전송된 정보만 세션 기록에 보관됩니다. 그런 다음 서버는 BidiGenerateContentServerContent 메시지를 전송하여 중단을 보고합니다.

또한 Gemini 서버는 대기 중인 함수 호출을 삭제하고 취소된 호출의 ID가 포함된 BidiGenerateContentServerContent 메시지를 전송합니다.

음성

음성을 지정하려면 세션 구성의 일부로 speechConfig 객체 내에서 voiceName을 설정합니다.

speechConfig 객체의 다음 JSON 표현을 참조하세요.

{
  "voiceConfig": {
    "prebuiltVoiceConfig": {
      "voiceName": "VOICE_NAME"
    }
  }
}

지원되는 음성 목록을 보려면 음성 및 언어 설정 변경하기를 참조하세요.

제한사항

프로젝트를 계획할 때는 Live API 및 Gemini 2.0의 다음 제한사항을 고려하세요.

클라이언트 인증

Live API는 서버 간 인증만 제공하며 직접 클라이언트용으로 사용하지 않는 것이 좋습니다. 클라이언트 입력은 Live API를 통한 보안 인증을 위해 중간 애플리케이션 서버를 통해 라우팅되어야 합니다.

최대 세션 시간

대화 세션의 최대 길이 기본값은 10분입니다. 자세한 내용은 세션 길이를 참조하세요.

음성 활동 감지(VAD)

기본적으로 모델은 연속 오디오 입력 스트림에서 음성 활동 감지(VAD)를 자동으로 실행합니다. VAD는 설정 메시지RealtimeInputConfig.AutomaticActivityDetection 필드로 구성할 수 있습니다.

오디오 스트림이 1초 이상 일시중지되면(예: 사용자가 마이크를 끈 경우) 캐시된 오디오를 플러시하기 위해 AudioStreamEnd 이벤트가 전송됩니다. 클라이언트는 언제든지 오디오 데이터 전송을 재개할 수 있습니다.

또는 설정 메시지에서 RealtimeInputConfig.AutomaticActivityDetection.disabledtrue로 설정하여 자동 VAD를 사용 중지할 수 있습니다. 이 구성에서 클라이언트는 사용자 음성을 감지하고 적절한 시간에 ActivityStartActivityEnd 메시지를 전송해야 합니다. 이 구성에서는 AudioStreamEnd가 전송되지 않습니다. 대신 스트림의 모든 중단은 ActivityEnd 메시지로 표시됩니다.

추가 제한사항

수동 엔드포인트는 지원되지 않습니다.

오디오 입력과 오디오 출력은 모델의 함수 호출 사용 능력에 부정적인 영향을 미칩니다.

토큰 수

토큰 수는 지원되지 않습니다.

비율 제한

다음 비율 한도가 적용됩니다.

  • API 키당 동시 세션 5,000개
  • 분당 토큰 4백만 개

메시지 및 이벤트

BidiGenerateContentClientContent

클라이언트에서 전송된 현재 대화의 증분 업데이트입니다. 여기에 있는 모든 콘텐츠는 무조건 대화 기록에 추가되며 콘텐츠를 생성하기 위한 모델의 프롬프트 일부로 사용됩니다.

여기에 메시지를 입력하면 현재 모델 생성이 중단됩니다.

필드
turns[]

Content

선택사항입니다. 모델과의 현재 대화에 추가된 콘텐츠입니다.

싱글턴 쿼리의 경우 이는 단일 인스턴스입니다. 멀티턴 쿼리의 경우 이는 대화 기록과 최근 요청이 포함된 반복 필드입니다.

turn_complete

bool

선택사항입니다. true인 경우 서버 콘텐츠 생성이 현재 누적된 프롬프트로 시작해야 함을 나타냅니다. 그렇지 않으면 서버는 생성을 시작하기 전에 추가 메시지를 기다립니다.

BidiGenerateContentRealtimeInput

실시간으로 전송되는 사용자 입력입니다.

이는 몇 가지 점에서 ClientContentUpdate와 다릅니다.

  • 모델 생성에 중단 없이 연속으로 전송할 수 있습니다.
  • ClientContentUpdateRealtimeUpdate에서 인터리브 처리된 데이터를 혼합해야 하는 경우 서버는 최적의 응답을 위해 최적화하려고 시도하지만 보장되지는 않습니다.
  • 차례 종료는 명시적으로 지정되지 않으며 대신 사용자 활동(예: 음성 종료)에서 파생됩니다.
  • 차례가 끝나기 전에도 모델의 응답을 빠르게 시작할 수 있도록 데이터가 점진적으로 처리됩니다.
  • 항상 사용자의 입력으로 간주됩니다(대화 기록을 채우는 데 사용할 수 없음).
필드
media_chunks[]

Blob

선택사항입니다. 미디어 입력을 위한 인라인 바이트 데이터입니다.

activity_start

ActivityStart

선택사항입니다. 사용자 활동의 시작을 표시합니다. 자동(즉, 서버 측) 활동 감지가 사용 중지된 경우에만 전송할 수 있습니다.

activity_end

ActivityEnd

선택사항입니다. 사용자 활동의 종료를 표시합니다. 자동(즉, 서버 측) 활동 감지가 사용 중지된 경우에만 전송할 수 있습니다.

ActivityEnd

이 유형에는 필드가 없습니다.

사용자 활동의 종료를 표시합니다.

ActivityStart

이 유형에는 필드가 없습니다.

이 메시지의 필드 중 하나만 한 번에 설정해야 합니다. 사용자 활동의 시작을 표시합니다.

BidiGenerateContentServerContent

클라이언트 메시지에 대한 응답으로 모델에서 생성된 증분 서버 업데이트입니다.

콘텐츠는 실시간이 아닌 최대한 빨리 생성됩니다. 클라이언트는 버퍼링 및 실시간 재생을 선택할 수 있습니다.

필드
turn_complete

bool

출력 전용입니다. true인 경우 모델이 생성을 완료했음을 나타냅니다. 생성은 추가 클라이언트 메시지에 대한 응답으로만 시작됩니다. content와 함께 설정하여 content가 차례의 마지막임을 나타낼 수 있습니다.

interrupted

bool

출력 전용입니다. true인 경우 클라이언트 메시지가 현재 모델 생성을 중단했음을 나타냅니다. 클라이언트가 콘텐츠를 실시간으로 재생하는 경우 이 신호에 따라 현재 큐를 중지하고 비우는 것이 좋습니다. 클라이언트가 콘텐츠를 실시간으로 재생하는 경우 이 신호에 따라 현재 재생 큐를 중지하고 비우는 것이 좋습니다.

generation_complete

bool

출력 전용입니다. true인 경우 모델이 생성을 완료했음을 나타냅니다.

생성 중에 모델이 중단되면 중단된 턴에 'generation_complete' 메시지가 표시되지 않으며 'interrupted > turn_complete' 과정을 거칩니다.

모델이 실시간 재생을 가정하는 경우 모델이 재생이 완료되기를 기다리기 때문에 generation_complete와 turn_complete 사이에 지연이 발생합니다.

grounding_metadata

GroundingMetadata

출력 전용입니다. 메타데이터는 생성된 콘텐츠를 그라운딩하는 데 사용된 소스를 지정합니다.

input_transcription

Transcription

선택사항입니다. 스크립트 작성을 입력합니다. 스크립트 작성은 모델 턴과 독립적이므로 스크립트 작성과 모델 턴 사이의 순서를 의미하지 않습니다.

output_transcription

Transcription

선택사항입니다. 스크립트 작성을 출력합니다. 스크립트 작성은 모델 턴과 독립적이므로 스크립트 작성과 모델 턴 사이의 순서를 의미하지 않습니다.

model_turn

Content

출력 전용입니다. 모델이 사용자와의 현재 대화 중에 생성한 콘텐츠입니다.

스크립트 작성

오디오 스크립트 작성 메시지입니다.

필드
text

string

선택사항입니다. 스크립트 작성 텍스트입니다.

finished

bool

선택사항입니다. 불리언은 스크립트 작성의 끝을 나타냅니다.

BidiGenerateContentSetup

첫 번째이자 유일한 첫 번째 클라이언트 메시지로 전송할 메시지입니다. 스트리밍 세션 기간 동안 적용할 구성을 포함합니다.

클라이언트는 추가 메시지를 보내기 전에 BidiGenerateContentSetupComplete 메시지를 기다려야 합니다.

필드
model

string

필수 항목입니다. 게시자 모델의 정규화된 이름입니다.

게시자 모델 형식: projects/{project}/locations/{location}/publishers/\*/models/\*

generation_config

GenerationConfig

선택사항입니다. 생성 구성

다음 필드는 지원되지 않습니다.

  • response_logprobs
  • response_mime_type
  • logprobs
  • response_schema
  • stop_sequence
  • routing_config
  • audio_timestamp
system_instruction

Content

선택사항입니다. 사용자가 모델의 시스템 지침을 제공했습니다. 참고: 부분에는 텍스트만 사용해야 하며 각 부분의 콘텐츠는 별도의 단락에 위치합니다.

tools[]

Tool

선택사항입니다. 모델이 다음 응답을 생성하는 데 사용할 수 있는 Tools 목록입니다.

Tool은 시스템이 모델의 지식과 범위를 벗어나 외부 시스템과 상호작용하여 작업 또는 작업 집합을 수행할 수 있도록 하는 코드 조각입니다.

session_resumption

SessionResumptionConfig

선택사항입니다. 세션 재개 메커니즘을 구성합니다. 포함된 경우 서버는 클라이언트에 주기적인 SessionResumptionUpdate 메시지를 전송합니다.

context_window_compression

ContextWindowCompressionConfig

선택사항입니다. 컨텍스트 윈도우 압축 메커니즘을 구성합니다.

포함된 경우 서버는 지정된 길이에 맞게 컨텍스트 윈도우를 압축합니다.

realtime_input_config

RealtimeInputConfig

선택사항입니다. 실시간 입력 처리를 구성합니다.

input_audio_transcription

AudioTranscriptionConfig

선택사항입니다. 입력 스크립트 작성은 입력 오디오 언어와 일치합니다.

output_audio_transcription

AudioTranscriptionConfig

선택사항입니다. 출력 스크립트 작성은 출력 오디오에 지정된 언어 코드와 일치합니다.

AudioTranscriptionConfig

이 유형에는 필드가 없습니다.

오디오 스크립트 작성 구성입니다.

BidiGenerateContentSetupComplete

이 유형에는 필드가 없습니다.

클라이언트의 BidiGenerateContentSetup 메시지에 대한 응답으로 전송됩니다.

BidiGenerateContentToolCall

클라이언트가 function_calls를 실행하고 일치하는 id를 가진 응답을 반환하도록 요청합니다.

필드
function_calls[]

FunctionCall

출력 전용입니다. 실행할 함수 호출입니다.

BidiGenerateContentToolCallCancellation

지정된 id가 포함된 이전에 발급된 ToolCallMessage가 실행되지 않았으며 취소되어야 한다는 클라이언트 알림입니다. 이러한 도구 호출에 부작용이 있는 경우 클라이언트는 도구 호출을 실행취소하려고 시도할 수 있습니다. 이 메시지는 클라이언트가 서버 전환을 중단하는 경우에만 발생합니다.

필드
ids[]

string

출력 전용입니다. 취소할 도구 호출의 ID입니다.

BidiGenerateContentToolResponse

클라이언트가 서버에서 수신한 ToolCall에 대한 응답을 생성했습니다. 개별 FunctionResponse 객체는 id 필드를 통해 각각의 FunctionCall 객체와 일치합니다.

단항 및 서버 스트리밍 GenerateContent API 함수 호출이 Content 부분을 교환하여 발생하는 반면, bidi GenerateContent API 함수 호출은 이러한 전용 메시지 세트를 통해 발생합니다.

필드
function_responses[]

FunctionResponse

선택사항입니다. 함수 호출에 대한 응답입니다.

RealtimeInputConfig

BidiGenerateContent에서 실시간 입력 동작을 구성합니다.

필드
automatic_activity_detection

AutomaticActivityDetection

선택사항입니다. 설정하지 않으면 기본적으로 자동 활동 감지가 사용 설정됩니다. 자동 음성 감지가 사용 중지된 경우 클라이언트는 활동 신호를 전송해야 합니다.

activity_handling

ActivityHandling

선택사항입니다. 활동이 미치는 영향을 정의합니다.

turn_coverage

TurnCoverage

선택사항입니다. 사용자 턴에 포함되는 입력을 정의합니다.

ActivityHandling

사용자 활동을 처리하는 다양한 방법입니다.

열거형
ACTIVITY_HANDLING_UNSPECIFIED 지정되지 않은 경우 기본 동작은 START_OF_ACTIVITY_INTERRUPTS입니다.
START_OF_ACTIVITY_INTERRUPTS true인 경우 활동 시작이 모델의 응답을 중단시킵니다('끼어들기'라고도 함). 중단되는 순간 모델의 현재 응답이 잘립니다. 기본적으로 설정되어 있습니다.
NO_INTERRUPTION 모델의 응답이 중단되지 않습니다.

AutomaticActivityDetection

활동 자동 감지를 구성합니다.

필드
start_of_speech_sensitivity

StartSensitivity

선택사항입니다. 음성이 감지될 가능성을 결정합니다.

end_of_speech_sensitivity

EndSensitivity

선택사항입니다. 감지된 음성이 종료되었을 가능성을 결정합니다.

prefix_padding_ms

int32

선택사항입니다. 음성 시작이 커밋되기 전 감지된 음성의 필수 지속 시간입니다. 이 값이 낮을수록 음성 시작 감도가 높아지고 더 짧은 음성을 인식할 수 있습니다. 하지만 이렇게 하면 거짓양성이 발생할 가능성도 높아집니다.

silence_duration_ms

int32

선택사항입니다. 음성 종료가 커밋되기 전 감지된 무음(또는 비음성)의 필수 지속 시간입니다. 이 값이 클수록 사용자의 활동을 방해하지 않고 음성 간격을 더 길게 유지할 수 있지만 모델의 지연 시간이 늘어납니다.

disabled

bool

선택사항입니다. 사용 설정된 경우 감지된 음성 및 텍스트 입력이 활동으로 간주됩니다. 사용 중지된 경우 클라이언트는 활동 신호를 전송해야 합니다.

EndSensitivity

음성 종료 민감도입니다.

열거형
END_SENSITIVITY_UNSPECIFIED 기본값은 END_SENSITIVITY_LOW입니다.
END_SENSITIVITY_HIGH 자동 감지 기능은 음성을 더 많은 빈도로 종료합니다.
END_SENSITIVITY_LOW 자동 감지 기능은 음성을 더 적은 빈도로 종료합니다.

StartSensitivity

음성 시작 민감도입니다.

열거형
START_SENSITIVITY_UNSPECIFIED 기본값은 START_SENSITIVITY_LOW입니다.
START_SENSITIVITY_HIGH 자동 감지 기능은 음성 시작을 더 많은 빈도로 감지합니다.
START_SENSITIVITY_LOW 자동 감지 기능은 음성 시작을 더 적은 빈도로 감지합니다.

TurnCoverage

사용자 턴에 포함된 입력에 관한 옵션입니다.

열거형
TURN_COVERAGE_UNSPECIFIED 지정되지 않은 경우 기본 동작은 TURN_INCLUDES_ALL_INPUT입니다.
TURN_INCLUDES_ONLY_ACTIVITY 사용자 턴에는 마지막 턴 이후의 활동만 포함되며 비활성 상태(예: 무음의 오디오 스트림)는 제외됩니다.
TURN_INCLUDES_ALL_INPUT 사용자 턴에는 비활성 상태(예: 무음의 오디오 스트림)를 포함하여 마지막 턴 이후의 모든 실시간 입력이 포함됩니다. 기본적으로 설정되어 있습니다.

UsageMetadata

캐시된 콘텐츠 사용에 관한 메타데이터입니다.

필드
total_token_count

int32

캐시된 콘텐츠가 사용하는 총 토큰 수입니다.

text_count

int32

텍스트 문자 수입니다.

image_count

int32

이미지 수입니다.

video_duration_seconds

int32

동영상 길이(초)입니다.

audio_duration_seconds

int32

오디오 길이(초)입니다.

GoAway

서버가 곧 클라이언트에 서비스를 제공할 수 없게 됩니다.

필드
time_left

Duration

연결이 ABORTED로 종료되기까지 남은 시간입니다. 여기에서 반환되는 최소 시간은 특정 모델의 비율 제한과 함께 다르게 지정됩니다.

SessionResumptionUpdate

세션 재개 상태의 업데이트입니다.

BidiGenerateContentSetup.session_resumption이 설정된 경우에만 전송됩니다.

필드
new_handle

string

재개할 수 있는 상태를 나타내는 새 핸들입니다. resumable=false인 경우 비어 있습니다.

resumable

bool

이 시점에서 세션을 재개할 수 있으면 true입니다.

일부 시점에서는 세션을 재개할 수 없을 수도 있습니다. 이 경우 빈 new_handle과 resumable=false를 업데이트합니다. 이러한 사례의 예로는 모델이 함수 호출을 실행하거나 생성만 하는 경우를 들 수 있습니다. 이러한 상태에서 세션을 재개하면(이전 세션 토큰 사용) 일부 데이터 손실이 발생합니다.

last_consumed_client_message_index

int64

이 SessionResumptionToken으로 표현되는 상태에 포함된 클라이언트가 전송한 마지막 메시지의 색인입니다. SessionResumptionConfig.transparent가 설정된 경우에만 전송됩니다.

이 색인이 있으면 사용자가 투명하게 다시 연결하고 실시간 오디오 입력/동영상의 일부 손실 문제를 방지할 수 있습니다. 클라이언트가 일시적으로 연결을 해제하려는 경우(예: GoAway 수신 결과) 마지막 SessionResmumptionTokenUpdate 이후 전송된 메시지를 버퍼링하여 상태를 손실하지 않고 연결을 해제할 수 있습니다. 이 필드를 사용하면 버퍼링을 제한할 수 있습니다(모든 요청을 RAM에 보관하지 않음).

나중에 '상태를 복원하기 위한 재개'에는 사용되지 않습니다. 이러한 경우 부분 오디오 및 동영상 프레임이 필요하지 않을 수 있습니다.

다음 단계