Live API - WebSockets API reference

Live API는 WebSockets를 사용하는 스테이트풀 API입니다. 이 섹션에서는 WebSockets API에 관한 추가 세부정보를 확인할 수 있습니다.

세션

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

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

WebSocket 연결

세션을 시작하려면 다음 WebSocket 엔드포인트에 연결하세요.

wss://generativelanguage.googleapis.com/ws/google.ai.generativelanguage.v1beta.GenerativeService.BidiGenerateContent

세션 구성

연결 후 첫 번째 메시지는 모델, 생성 매개변수, 시스템 안내, 도구가 포함된 세션 구성을 설정합니다.

세션 중에 모델을 제외한 구성 매개변수를 변경할 수 있습니다.

다음 구성 예시를 참고하세요. SDK의 이름 대소문자는 다를 수 있습니다. 여기에서 Python SDK 구성 옵션을 확인할 수 있습니다.


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

API 필드에 관한 자세한 내용은 generationConfig를 참고하세요.

메시지 보내기

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


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

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

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

메시지 설명
BidiGenerateContentSetup 첫 번째 메시지로 전송할 세션 구성
BidiGenerateContentClientContent 클라이언트에서 전송된 현재 대화의 점진적 콘텐츠 업데이트
BidiGenerateContentRealtimeInput 실시간 오디오, 동영상 또는 텍스트 입력
BidiGenerateContentToolResponse 서버에서 수신한 ToolCallMessage에 대한 응답

메시지 수신

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

다음을 참조하세요.

async with client.aio.live.connect(model='...', config=config) as session:
    await session.send(input='Hello world!', end_of_turn=True)
    async for message in session.receive():
        print(message)

서버 메시지에는 usageMetadata 필드가 있을 수 있지만, 그 외에는 BidiGenerateContentServerMessage 메시지의 다른 필드 중 하나만 포함됩니다. messageType 연합은 JSON으로 표현되지 않으므로 필드는 메시지의 최상위 수준에 표시됩니다.

메시지 및 이벤트

ActivityEnd

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

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

ActivityHandling

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

열거형
ACTIVITY_HANDLING_UNSPECIFIED 지정하지 않으면 기본 동작은 START_OF_ACTIVITY_INTERRUPTS입니다.
START_OF_ACTIVITY_INTERRUPTS 이 속성이 true이면 활동 시작 시 모델의 응답이 중단됩니다('방해'라고도 함). 중단되는 순간 모델의 현재 응답이 끊깁니다. 이것이 기본 동작입니다.
NO_INTERRUPTION 모델의 응답이 중단되지 않습니다.

ActivityStart

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

사용자 활동의 시작을 표시합니다.

AudioTranscriptionConfig

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

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

AutomaticActivityDetection

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

필드
disabled

bool

선택사항입니다. 사용 설정하면 (기본값) 감지된 음성 및 텍스트 입력이 활동으로 집계됩니다. 사용 중지된 경우 클라이언트는 활동 신호를 전송해야 합니다.

startOfSpeechSensitivity

StartSensitivity

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

prefixPaddingMs

int32

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

endOfSpeechSensitivity

EndSensitivity

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

silenceDurationMs

int32

선택사항입니다. 말의 끝이 커밋되기 전에 감지된 비언어 (예: 정적)의 필수 길이입니다. 이 값이 클수록 사용자 활동을 중단하지 않고 더 긴 음성 갭을 사용할 수 있지만 모델의 지연 시간이 늘어납니다.

BidiGenerateContentClientContent

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

여기에 메시지가 표시되면 현재 모델 생성이 중단됩니다.

필드
turns[]

Content

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

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

turnComplete

bool

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

BidiGenerateContentRealtimeInput

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

다양한 형식 (오디오, 동영상, 텍스트)은 동시 스트림으로 처리됩니다. 이러한 스트림의 순서는 보장되지 않습니다.

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

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

Blob

선택사항입니다. 미디어 입력을 위한 인라인 바이트 데이터입니다. 여러 개의 mediaChunks는 지원되지 않으며 첫 번째 항목을 제외한 모든 항목은 무시됩니다.

지원 중단됨: 대신 audio, video 또는 text 중 하나를 사용하세요.

audio

Blob

선택사항입니다. 이러한 데이터가 실시간 오디오 입력 스트림을 형성합니다.

video

Blob

선택사항입니다. 이러한 프레임이 실시간 동영상 입력 스트림을 형성합니다.

activityStart

ActivityStart

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

activityEnd

ActivityEnd

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

audioStreamEnd

bool

선택사항입니다. 마이크가 꺼져서 오디오 스트림이 종료되었음을 나타냅니다.

자동 활동 감지가 사용 설정된 경우에만 전송해야 합니다 (기본값).

클라이언트는 오디오 메시지를 전송하여 스트림을 다시 열 수 있습니다.

text

string

선택사항입니다. 이러한 텍스트가 실시간 텍스트 입력 스트림을 형성합니다.

BidiGenerateContentServerContent

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

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

필드
generationComplete

bool

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

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

모델이 실시간 재생을 가정하면 재생이 완료될 때까지 모델이 대기함에 따라 generation_complete와 turn_complete 사이에 지연이 발생합니다.

turnComplete

bool

출력 전용입니다. true인 경우 모델이 턴을 완료했음을 나타냅니다. 생성은 추가 클라이언트 메시지에 대한 응답으로만 시작됩니다.

interrupted

bool

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

groundingMetadata

GroundingMetadata

출력 전용입니다. 생성된 콘텐츠의 그라운딩 메타데이터입니다.

outputTranscription

BidiGenerateContentTranscription

출력 전용입니다. 오디오 스크립트 작성 출력 스크립트는 다른 서버 메시지와 별개로 전송되며, 특히 serverContent와 이 outputTranscription 간에 순서가 보장되지 않습니다.

modelTurn

Content

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

BidiGenerateContentServerMessage

BidiGenerateContent 호출에 대한 응답 메시지입니다.

필드
usageMetadata

UsageMetadata

출력 전용입니다. 응답에 관한 사용 메타데이터입니다.

통합 필드 messageType. 메시지의 유형입니다. messageType은 다음 중 하나여야 합니다.
setupComplete

BidiGenerateContentSetupComplete

출력 전용입니다. 설정이 완료될 때 클라이언트의 BidiGenerateContentSetup 메시지에 대한 응답으로 전송됩니다.

serverContent

BidiGenerateContentServerContent

출력 전용입니다. 클라이언트 메시지에 대한 응답으로 모델에서 생성된 콘텐츠입니다.

toolCall

BidiGenerateContentToolCall

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

toolCallCancellation

BidiGenerateContentToolCallCancellation

출력 전용입니다. 지정된 id가 포함된 이전에 발급된 ToolCallMessage를 취소해야 한다는 클라이언트 알림

goAway

GoAway

출력 전용입니다. 서버의 연결이 곧 끊어질 것이라는 알림입니다.

sessionResumptionUpdate

SessionResumptionUpdate

출력 전용입니다. 세션 재개 상태 업데이트

BidiGenerateContentSetup

첫 번째 BidiGenerateContentClientMessage에서만 전송되는 메시지입니다. 스트리밍 RPC 기간 동안 적용할 구성을 포함합니다.

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

필드
model

string

필수 항목입니다. 모델의 리소스 이름입니다. 이는 모델에서 사용할 ID로 사용됩니다.

형식: models/{model}

generationConfig

GenerationConfig

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

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

  • responseLogprobs
  • responseMimeType
  • logprobs
  • responseSchema
  • stopSequence
  • routingConfig
  • audioTimestamp
systemInstruction

Content

선택사항입니다. 사용자가 모델의 시스템 지침을 제공했습니다.

참고: 부분에는 텍스트만 사용해야 하며 각 부분의 콘텐츠는 별도의 단락에 위치합니다.

tools[]

Tool

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

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

realtimeInputConfig

RealtimeInputConfig

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

sessionResumption

SessionResumptionConfig

선택사항입니다. 세션 재개 메커니즘을 구성합니다.

포함된 경우 서버는 SessionResumptionUpdate 메시지를 전송합니다.

contextWindowCompression

ContextWindowCompressionConfig

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

포함된 경우 서버는 구성된 길이를 초과하면 컨텍스트 크기를 자동으로 줄입니다.

outputAudioTranscription

AudioTranscriptionConfig

선택사항입니다. 이 옵션을 설정하면 모델의 오디오 출력 스크립트 작성이 사용 설정됩니다. 스크립트는 구성된 경우 출력 오디오에 지정된 언어 코드와 일치합니다.

BidiGenerateContentSetupComplete

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

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

BidiGenerateContentToolCall

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

필드
functionCalls[]

FunctionCall

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

BidiGenerateContentToolCallCancellation

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

필드
ids[]

string

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

BidiGenerateContentToolResponse

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

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

필드
functionResponses[]

FunctionResponse

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

BidiGenerateContentTranscription

오디오 스크립트 (입력 또는 출력)

필드
text

string

스크립트 텍스트

ContextWindowCompressionConfig

모델의 컨텍스트 창이 지정된 길이를 초과하지 않도록 관리하는 메커니즘인 컨텍스트 창 압축을 사용 설정합니다.

필드
통합 필드 compressionMechanism. 사용된 컨텍스트 창 압축 메커니즘입니다. compressionMechanism은 다음 중 하나여야 합니다.
slidingWindow

SlidingWindow

슬라이딩 창 메커니즘

triggerTokens

int64

컨텍스트 창 압축을 트리거하는 데 필요한 토큰 수 (회전 실행 전)입니다.

맥락 창이 짧을수록 모델 응답이 더 빨라질 수 있으므로 품질과 지연 시간 간의 균형을 맞추는 데 사용할 수 있습니다. 그러나 압축 작업을 하면 일시적으로 지연 시간이 증가하므로 자주 트리거해서는 안 됩니다.

설정하지 않으면 기본값은 모델의 컨텍스트 창 한도의 80% 입니다. 그러면 다음 사용자 요청/모델 응답에 20% 가 남게 됩니다.

EndSensitivity

음성의 끝이 감지되는 방식을 결정합니다.

열거형
END_SENSITIVITY_UNSPECIFIED 기본값은 END_SENSITIVITY_HIGH입니다.
END_SENSITIVITY_HIGH 자동 감지는 음성을 더 자주 종료합니다.
END_SENSITIVITY_LOW 자동 감지는 음성의 끝을 더 적게 감지합니다.

GoAway

서버의 연결이 곧 끊어질 것이라는 알림입니다.

필드
timeLeft

Duration

연결이 ABORTED로 종료되기까지 남은 시간입니다.

이 기간은 모델의 비율 제한과 함께 지정되는 모델별 최솟값보다 작을 수 없습니다.

RealtimeInputConfig

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

필드
automaticActivityDetection

AutomaticActivityDetection

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

activityHandling

ActivityHandling

선택사항입니다. 활동의 효과를 정의합니다.

turnCoverage

TurnCoverage

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

SessionResumptionConfig

세션 재개 구성

이 메시지는 세션 구성에 BidiGenerateContentSetup.sessionResumption로 포함됩니다. 구성된 경우 서버는 SessionResumptionUpdate 메시지를 전송합니다.

필드
handle

string

이전 세션의 핸들입니다. 세션이 없으면 새 세션이 생성됩니다.

세션 핸들은 이전 연결의 SessionResumptionUpdate.token 값에서 가져옵니다.

SessionResumptionUpdate

세션 재개 상태 업데이트

BidiGenerateContentSetup.sessionResumption가 설정된 경우에만 전송됩니다.

필드
newHandle

string

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

resumable

bool

이 시점에서 현재 세션을 재개할 수 있는 경우 true입니다.

세션의 일부 지점에서는 재개할 수 없습니다. 예를 들어 모델이 함수 호출을 실행하거나 생성하는 경우입니다. 이러한 상태에서 이전 세션 토큰을 사용하여 세션을 재개하면 일부 데이터가 손실됩니다. 이 경우 newHandle는 비어 있고 resumable는 false입니다.

SlidingWindow

SlidingWindow 메서드는 컨텍스트 창의 시작 부분에서 콘텐츠를 삭제하여 작동합니다. 결과 컨텍스트는 항상 사용자 역할 차례의 시작 부분에서 시작됩니다. 시스템 안내와 모든 BidiGenerateContentSetup.prefixTurns는 항상 결과의 시작 부분에 유지됩니다.

필드
targetTokens

int64

유지할 대상 토큰 수입니다. 기본값은 trigger_tokens/2입니다.

컨텍스트 창의 일부를 삭제하면 일시적인 지연 시간이 증가하므로 빈번한 압축 작업을 방지하기 위해 이 값을 보정해야 합니다.

StartSensitivity

음성 시작이 감지되는 방식을 결정합니다.

열거형
START_SENSITIVITY_UNSPECIFIED 기본값은 START_SENSITIVITY_HIGH입니다.
START_SENSITIVITY_HIGH 자동 감지를 사용하면 음성 시작이 더 자주 감지됩니다.
START_SENSITIVITY_LOW 자동 감지는 음성 시작을 더 적게 감지합니다.

TurnCoverage

사용자의 차례에 포함되는 입력에 관한 옵션입니다.

열거형
TURN_COVERAGE_UNSPECIFIED 지정하지 않으면 기본 동작은 TURN_INCLUDES_ONLY_ACTIVITY입니다.
TURN_INCLUDES_ONLY_ACTIVITY 사용자 차례에는 비활성 상태 (예: 오디오 스트림의 침묵)를 제외하고 마지막 차례 이후의 활동만 포함됩니다. 이것이 기본 동작입니다.
TURN_INCLUDES_ALL_INPUT 사용자 차례에는 비활성 상태 (예: 오디오 스트림의 침묵)를 포함하여 마지막 차례 이후의 모든 실시간 입력이 포함됩니다.

UsageMetadata

응답에 관한 사용 메타데이터입니다.

필드
promptTokenCount

int32

출력 전용입니다. 프롬프트의 토큰 수입니다. cachedContent가 설정된 경우에도 여전히 총 유효 프롬프트 크기이므로 캐시된 콘텐츠의 토큰 수가 포함됩니다.

cachedContentTokenCount

int32

프롬프트의 캐시된 부분 (캐시된 콘텐츠)에 있는 토큰 수

responseTokenCount

int32

출력 전용입니다. 생성된 모든 응답 후보의 총 토큰 수입니다.

toolUsePromptTokenCount

int32

출력 전용입니다. 도구 사용 프롬프트에 있는 토큰 수입니다.

thoughtsTokenCount

int32

출력 전용입니다. 사고 모델의 생각 토큰 수입니다.

totalTokenCount

int32

출력 전용입니다. 생성 요청의 총 토큰 수 (프롬프트 + 응답 후보)입니다.

promptTokensDetails[]

ModalityTokenCount

출력 전용입니다. 요청 입력에서 처리된 모달리티 목록입니다.

cacheTokensDetails[]

ModalityTokenCount

출력 전용입니다. 요청 입력에서 캐시된 콘텐츠의 모달 목록입니다.

responseTokensDetails[]

ModalityTokenCount

출력 전용입니다. 응답에 반환된 모달 목록입니다.

toolUsePromptTokensDetails[]

ModalityTokenCount

출력 전용입니다. 도구 사용 요청 입력에 대해 처리된 모달 목록입니다.

일반적인 유형에 대한 자세한 정보

널리 사용되는 API 리소스 유형인 Blob, Content, FunctionCall, FunctionResponse, GenerationConfig, GroundingMetadata, ModalityTokenCount, Tool에 관한 자세한 내용은 콘텐츠 생성을 참고하세요.