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
통합 가이드
이 섹션에서는 통합이 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.disabled
를 true
로 설정하여 자동 VAD를 사용 중지할 수 있습니다. 이 구성에서 클라이언트는 사용자 음성을 감지하고 적절한 시간에 ActivityStart
및 ActivityEnd
메시지를 전송해야 합니다. 이 구성에서는 AudioStreamEnd
가 전송되지 않습니다. 대신 스트림의 모든 중단은 ActivityEnd
메시지로 표시됩니다.
추가 제한사항
수동 엔드포인트는 지원되지 않습니다.
오디오 입력과 오디오 출력은 모델의 함수 호출 사용 능력에 부정적인 영향을 미칩니다.
토큰 수
토큰 수는 지원되지 않습니다.
비율 제한
다음 비율 한도가 적용됩니다.
- API 키당 동시 세션 5,000개
- 분당 토큰 4백만 개
메시지 및 이벤트
BidiGenerateContentClientContent
클라이언트에서 전송된 현재 대화의 증분 업데이트입니다. 여기에 있는 모든 콘텐츠는 무조건 대화 기록에 추가되며 콘텐츠를 생성하기 위한 모델의 프롬프트 일부로 사용됩니다.
여기에 메시지를 입력하면 현재 모델 생성이 중단됩니다.
필드 | |
---|---|
turns[] |
선택사항입니다. 모델과의 현재 대화에 추가된 콘텐츠입니다. 싱글턴 쿼리의 경우 이는 단일 인스턴스입니다. 멀티턴 쿼리의 경우 이는 대화 기록과 최근 요청이 포함된 반복 필드입니다. |
turn_complete |
선택사항입니다. true인 경우 서버 콘텐츠 생성이 현재 누적된 프롬프트로 시작해야 함을 나타냅니다. 그렇지 않으면 서버는 생성을 시작하기 전에 추가 메시지를 기다립니다. |
BidiGenerateContentRealtimeInput
실시간으로 전송되는 사용자 입력입니다.
이는 몇 가지 점에서 ClientContentUpdate
와 다릅니다.
- 모델 생성에 중단 없이 연속으로 전송할 수 있습니다.
ClientContentUpdate
와RealtimeUpdate
에서 인터리브 처리된 데이터를 혼합해야 하는 경우 서버는 최적의 응답을 위해 최적화하려고 시도하지만 보장되지는 않습니다.- 차례 종료는 명시적으로 지정되지 않으며 대신 사용자 활동(예: 음성 종료)에서 파생됩니다.
- 차례가 끝나기 전에도 모델의 응답을 빠르게 시작할 수 있도록 데이터가 점진적으로 처리됩니다.
- 항상 사용자의 입력으로 간주됩니다(대화 기록을 채우는 데 사용할 수 없음).
필드 | |
---|---|
media_chunks[] |
선택사항입니다. 미디어 입력을 위한 인라인 바이트 데이터입니다. |
activity_start |
선택사항입니다. 사용자 활동의 시작을 표시합니다. 자동(즉, 서버 측) 활동 감지가 사용 중지된 경우에만 전송할 수 있습니다. |
activity_end |
선택사항입니다. 사용자 활동의 종료를 표시합니다. 자동(즉, 서버 측) 활동 감지가 사용 중지된 경우에만 전송할 수 있습니다. |
ActivityEnd
이 유형에는 필드가 없습니다.
사용자 활동의 종료를 표시합니다.
ActivityStart
이 유형에는 필드가 없습니다.
이 메시지의 필드 중 하나만 한 번에 설정해야 합니다. 사용자 활동의 시작을 표시합니다.
BidiGenerateContentServerContent
클라이언트 메시지에 대한 응답으로 모델에서 생성된 증분 서버 업데이트입니다.
콘텐츠는 실시간이 아닌 최대한 빨리 생성됩니다. 클라이언트는 버퍼링 및 실시간 재생을 선택할 수 있습니다.
필드 | |
---|---|
turn_complete |
출력 전용입니다. true인 경우 모델이 생성을 완료했음을 나타냅니다. 생성은 추가 클라이언트 메시지에 대한 응답으로만 시작됩니다. |
interrupted |
출력 전용입니다. true인 경우 클라이언트 메시지가 현재 모델 생성을 중단했음을 나타냅니다. 클라이언트가 콘텐츠를 실시간으로 재생하는 경우 이 신호에 따라 현재 큐를 중지하고 비우는 것이 좋습니다. 클라이언트가 콘텐츠를 실시간으로 재생하는 경우 이 신호에 따라 현재 재생 큐를 중지하고 비우는 것이 좋습니다. |
generation_complete |
출력 전용입니다. true인 경우 모델이 생성을 완료했음을 나타냅니다. 생성 중에 모델이 중단되면 중단된 턴에 'generation_complete' 메시지가 표시되지 않으며 'interrupted > turn_complete' 과정을 거칩니다. 모델이 실시간 재생을 가정하는 경우 모델이 재생이 완료되기를 기다리기 때문에 generation_complete와 turn_complete 사이에 지연이 발생합니다. |
grounding_metadata |
출력 전용입니다. 메타데이터는 생성된 콘텐츠를 그라운딩하는 데 사용된 소스를 지정합니다. |
input_transcription |
선택사항입니다. 스크립트 작성을 입력합니다. 스크립트 작성은 모델 턴과 독립적이므로 스크립트 작성과 모델 턴 사이의 순서를 의미하지 않습니다. |
output_transcription |
선택사항입니다. 스크립트 작성을 출력합니다. 스크립트 작성은 모델 턴과 독립적이므로 스크립트 작성과 모델 턴 사이의 순서를 의미하지 않습니다. |
model_turn |
출력 전용입니다. 모델이 사용자와의 현재 대화 중에 생성한 콘텐츠입니다. |
스크립트 작성
오디오 스크립트 작성 메시지입니다.
필드 | |
---|---|
text |
선택사항입니다. 스크립트 작성 텍스트입니다. |
finished |
선택사항입니다. 불리언은 스크립트 작성의 끝을 나타냅니다. |
BidiGenerateContentSetup
첫 번째이자 유일한 첫 번째 클라이언트 메시지로 전송할 메시지입니다. 스트리밍 세션 기간 동안 적용할 구성을 포함합니다.
클라이언트는 추가 메시지를 보내기 전에 BidiGenerateContentSetupComplete
메시지를 기다려야 합니다.
필드 | |
---|---|
model |
필수 항목입니다. 게시자 모델의 정규화된 이름입니다. 게시자 모델 형식: |
generation_config |
선택사항입니다. 생성 구성 다음 필드는 지원되지 않습니다.
|
system_instruction |
선택사항입니다. 사용자가 모델의 시스템 지침을 제공했습니다. 참고: 부분에는 텍스트만 사용해야 하며 각 부분의 콘텐츠는 별도의 단락에 위치합니다. |
tools[] |
선택사항입니다. 모델이 다음 응답을 생성하는 데 사용할 수 있는
|
session_resumption |
선택사항입니다. 세션 재개 메커니즘을 구성합니다. 포함된 경우 서버는 클라이언트에 주기적인 |
context_window_compression |
선택사항입니다. 컨텍스트 윈도우 압축 메커니즘을 구성합니다. 포함된 경우 서버는 지정된 길이에 맞게 컨텍스트 윈도우를 압축합니다. |
realtime_input_config |
선택사항입니다. 실시간 입력 처리를 구성합니다. |
input_audio_transcription |
선택사항입니다. 입력 스크립트 작성은 입력 오디오 언어와 일치합니다. |
output_audio_transcription |
선택사항입니다. 출력 스크립트 작성은 출력 오디오에 지정된 언어 코드와 일치합니다. |
AudioTranscriptionConfig
이 유형에는 필드가 없습니다.
오디오 스크립트 작성 구성입니다.
BidiGenerateContentSetupComplete
이 유형에는 필드가 없습니다.
클라이언트의 BidiGenerateContentSetup
메시지에 대한 응답으로 전송됩니다.
BidiGenerateContentToolCall
클라이언트가 function_calls
를 실행하고 일치하는 id
를 가진 응답을 반환하도록 요청합니다.
필드 | |
---|---|
function_calls[] |
출력 전용입니다. 실행할 함수 호출입니다. |
BidiGenerateContentToolCallCancellation
지정된 id
가 포함된 이전에 발급된 ToolCallMessage
가 실행되지 않았으며 취소되어야 한다는 클라이언트 알림입니다. 이러한 도구 호출에 부작용이 있는 경우 클라이언트는 도구 호출을 실행취소하려고 시도할 수 있습니다. 이 메시지는 클라이언트가 서버 전환을 중단하는 경우에만 발생합니다.
필드 | |
---|---|
ids[] |
출력 전용입니다. 취소할 도구 호출의 ID입니다. |
BidiGenerateContentToolResponse
클라이언트가 서버에서 수신한 ToolCall
에 대한 응답을 생성했습니다. 개별 FunctionResponse
객체는 id
필드를 통해 각각의 FunctionCall
객체와 일치합니다.
단항 및 서버 스트리밍 GenerateContent API 함수 호출이 Content
부분을 교환하여 발생하는 반면, bidi GenerateContent API 함수 호출은 이러한 전용 메시지 세트를 통해 발생합니다.
필드 | |
---|---|
function_responses[] |
선택사항입니다. 함수 호출에 대한 응답입니다. |
RealtimeInputConfig
BidiGenerateContent
에서 실시간 입력 동작을 구성합니다.
필드 | |
---|---|
automatic_activity_detection |
선택사항입니다. 설정하지 않으면 기본적으로 자동 활동 감지가 사용 설정됩니다. 자동 음성 감지가 사용 중지된 경우 클라이언트는 활동 신호를 전송해야 합니다. |
activity_handling |
선택사항입니다. 활동이 미치는 영향을 정의합니다. |
turn_coverage |
선택사항입니다. 사용자 턴에 포함되는 입력을 정의합니다. |
ActivityHandling
사용자 활동을 처리하는 다양한 방법입니다.
열거형 | |
---|---|
ACTIVITY_HANDLING_UNSPECIFIED |
지정되지 않은 경우 기본 동작은 START_OF_ACTIVITY_INTERRUPTS 입니다. |
START_OF_ACTIVITY_INTERRUPTS |
true인 경우 활동 시작이 모델의 응답을 중단시킵니다('끼어들기'라고도 함). 중단되는 순간 모델의 현재 응답이 잘립니다. 기본적으로 설정되어 있습니다. |
NO_INTERRUPTION |
모델의 응답이 중단되지 않습니다. |
AutomaticActivityDetection
활동 자동 감지를 구성합니다.
필드 | |
---|---|
start_of_speech_sensitivity |
선택사항입니다. 음성이 감지될 가능성을 결정합니다. |
end_of_speech_sensitivity |
선택사항입니다. 감지된 음성이 종료되었을 가능성을 결정합니다. |
prefix_padding_ms |
선택사항입니다. 음성 시작이 커밋되기 전 감지된 음성의 필수 지속 시간입니다. 이 값이 낮을수록 음성 시작 감도가 높아지고 더 짧은 음성을 인식할 수 있습니다. 하지만 이렇게 하면 거짓양성이 발생할 가능성도 높아집니다. |
silence_duration_ms |
선택사항입니다. 음성 종료가 커밋되기 전 감지된 무음(또는 비음성)의 필수 지속 시간입니다. 이 값이 클수록 사용자의 활동을 방해하지 않고 음성 간격을 더 길게 유지할 수 있지만 모델의 지연 시간이 늘어납니다. |
disabled |
선택사항입니다. 사용 설정된 경우 감지된 음성 및 텍스트 입력이 활동으로 간주됩니다. 사용 중지된 경우 클라이언트는 활동 신호를 전송해야 합니다. |
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 |
캐시된 콘텐츠가 사용하는 총 토큰 수입니다. |
text_count |
텍스트 문자 수입니다. |
image_count |
이미지 수입니다. |
video_duration_seconds |
동영상 길이(초)입니다. |
audio_duration_seconds |
오디오 길이(초)입니다. |
GoAway
서버가 곧 클라이언트에 서비스를 제공할 수 없게 됩니다.
필드 | |
---|---|
time_left |
연결이 ABORTED로 종료되기까지 남은 시간입니다. 여기에서 반환되는 최소 시간은 특정 모델의 비율 제한과 함께 다르게 지정됩니다. |
SessionResumptionUpdate
세션 재개 상태의 업데이트입니다.
BidiGenerateContentSetup.session_resumption
이 설정된 경우에만 전송됩니다.
필드 | |
---|---|
new_handle |
재개할 수 있는 상태를 나타내는 새 핸들입니다. |
resumable |
이 시점에서 세션을 재개할 수 있으면 true입니다. 일부 시점에서는 세션을 재개할 수 없을 수도 있습니다. 이 경우 빈 new_handle과 resumable=false를 업데이트합니다. 이러한 사례의 예로는 모델이 함수 호출을 실행하거나 생성만 하는 경우를 들 수 있습니다. 이러한 상태에서 세션을 재개하면(이전 세션 토큰 사용) 일부 데이터 손실이 발생합니다. |
last_consumed_client_message_index |
이 SessionResumptionToken으로 표현되는 상태에 포함된 클라이언트가 전송한 마지막 메시지의 색인입니다. 이 색인이 있으면 사용자가 투명하게 다시 연결하고 실시간 오디오 입력/동영상의 일부 손실 문제를 방지할 수 있습니다. 클라이언트가 일시적으로 연결을 해제하려는 경우(예: GoAway 수신 결과) 마지막 나중에 '상태를 복원하기 위한 재개'에는 사용되지 않습니다. 이러한 경우 부분 오디오 및 동영상 프레임이 필요하지 않을 수 있습니다. |