API Live është një API shtetërore që përdor WebSockets . Në këtë seksion, do të gjeni detaje shtesë në lidhje me API-në e WebSockets.
Sesionet
Një lidhje WebSocket krijon një seancë midis klientit dhe serverit Gemini. Pasi një klient fillon një lidhje të re, sesioni mund të shkëmbejë mesazhe me serverin për:
- Dërgoni tekst, audio ose video te serveri Gemini.
- Merr kërkesa për thirrje audio, teksti ose funksioni nga serveri Gemini.
Lidhja WebSocket
Për të nisur një sesion, lidheni me këtë pikë fundore të uebsocket:
wss://generativelanguage.googleapis.com/ws/google.ai.generativelanguage.v1beta.GenerativeService.BidiGenerateContent
Konfigurimi i sesionit
Mesazhi fillestar pas lidhjes përcakton konfigurimin e sesionit, i cili përfshin modelin, parametrat e gjenerimit, udhëzimet e sistemit dhe mjetet.
Ju mund të ndryshoni parametrat e konfigurimit përveç modelit gjatë seancës.
Shihni shembullin e mëposhtëm të konfigurimit. Vini re se kutia e emrit në SDK mund të ndryshojë. Mund të kërkoni opsionet e konfigurimit të Python SDK këtu .
{
"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]
}
Për më shumë informacion mbi fushën API, shihni GenerationConfig .
Dërgo mesazhe
Për të shkëmbyer mesazhe përmes lidhjes WebSocket, klienti duhet të dërgojë një objekt JSON mbi një lidhje të hapur WebSocket. Objekti JSON duhet të ketë saktësisht një nga fushat nga grupi i mëposhtëm i objekteve:
{
"setup": BidiGenerateContentSetup,
"clientContent": BidiGenerateContentClientContent,
"realtimeInput": BidiGenerateContentRealtimeInput,
"toolResponse": BidiGenerateContentToolResponse
}
Mesazhet e klientit të mbështetur
Shihni mesazhet e klientit të mbështetur në tabelën e mëposhtme:
Mesazh | Përshkrimi |
---|---|
BidiGenerateContentSetup | Konfigurimi i sesionit do të dërgohet në mesazhin e parë |
BidiGenerateContentClientContent | Përditësimi në rritje i përmbajtjes së bisedës aktuale të dorëzuar nga klienti |
BidiGenerateContentRealtimeInput | Futje audio, video ose teksti në kohë reale |
BidiGenerateContentToolResponse | Përgjigja ndaj një ToolCallMessage të marrë nga serveri |
Merr mesazhe
Për të marrë mesazhe nga Gemini, dëgjoni për ngjarjen 'mesazh' në WebSocket dhe më pas analizoni rezultatin sipas përcaktimit të mesazheve të serverit të mbështetur.
Shihni sa vijon:
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)
Mesazhet e serverit mund të kenë një fushë usageMetadata
, por përndryshe do të përfshijnë saktësisht një nga fushat e tjera nga mesazhi BidiGenerateContentServerMessage
. (Bashkimi messageType
nuk shprehet në JSON, kështu që fusha do të shfaqet në nivelin e lartë të mesazhit.)
Mesazhet dhe ngjarjet
Përfundimi i aktivitetit
Ky lloj nuk ka fusha.
Shënon fundin e aktivitetit të përdoruesit.
Trajtimi i aktivitetit
Mënyrat e ndryshme të trajtimit të aktivitetit të përdoruesit.
Enums | |
---|---|
ACTIVITY_HANDLING_UNSPECIFIED | Nëse nuk specifikohet, sjellja e paracaktuar është START_OF_ACTIVITY_INTERRUPTS . |
START_OF_ACTIVITY_INTERRUPTS | Nëse është e vërtetë, fillimi i aktivitetit do të ndërpresë përgjigjen e modelit (i quajtur gjithashtu "mash in"). Përgjigja aktuale e modelit do të ndërpritet në momentin e ndërprerjes. Kjo është sjellja e paracaktuar. |
NO_INTERRUPTION | Përgjigja e modeles nuk do të ndërpritet. |
Fillimi i aktivitetit
Ky lloj nuk ka fusha.
Shënon fillimin e aktivitetit të përdoruesit.
AudioTranscriptionConfig
Ky lloj nuk ka fusha.
Konfigurimi i transkriptimit audio.
Zbulimi automatik i aktivitetit
Konfiguron zbulimin automatik të aktivitetit.
Fushat | |
---|---|
disabled | Fakultative. Nëse aktivizohet (parazgjedhja), futja e zërit dhe e tekstit të zbuluar llogariten si aktivitet. Nëse është i çaktivizuar, klienti duhet të dërgojë sinjale aktiviteti. |
startOfSpeechSensitivity | Fakultative. Përcakton sa gjasa ka të zbulohet fjalimi. |
prefixPaddingMs | Fakultative. Është kryer kohëzgjatja e kërkuar e fjalimit të zbuluar përpara fillimit të të folurit. Sa më e ulët kjo vlerë, aq më i ndjeshëm është zbulimi i fillimit të të folurit dhe mund të njihet fjalimi më i shkurtër. Megjithatë, kjo gjithashtu rrit probabilitetin e pozitivëve të rremë. |
endOfSpeechSensitivity | Fakultative. Përcakton sa ka gjasa të përfundojë fjalimi i zbuluar. |
silenceDurationMs | Fakultative. Kohëzgjatja e kërkuar e mos-fjalimit të zbuluar (p.sh. heshtja) përpara përfundimit të fjalës. Sa më e madhe kjo vlerë, aq më të gjata mund të jenë boshllëqet e të folurit pa ndërprerë aktivitetin e përdoruesit, por kjo do të rrisë vonesën e modelit. |
BidiGenerateContentClientContent
Përditësimi në rritje i bisedës aktuale të dorëzuar nga klienti. E gjithë përmbajtja këtu i shtohet pa kushte historisë së bisedave dhe përdoret si pjesë e kërkesës për modelin për të gjeneruar përmbajtje.
Një mesazh këtu do të ndërpresë çdo gjenerim aktual të modelit.
Fushat | |
---|---|
turns[] | Fakultative. Përmbajtja i është bashkangjitur bisedës aktuale me modelen. Për pyetjet me një kthesë, ky është një shembull i vetëm. Për pyetjet me shumë kthesa, kjo është një fushë e përsëritur që përmban historikun e bisedave dhe kërkesën më të fundit. |
turnComplete | Fakultative. Nëse është e vërtetë, tregon që gjenerimi i përmbajtjes së serverit duhet të fillojë me kërkesën e akumuluar aktualisht. Përndryshe, serveri pret mesazhe shtesë përpara se të fillojë gjenerimin. |
BidiGenerateContentInputRealtime
Hyrja e përdoruesit që dërgohet në kohë reale.
Modalitetet e ndryshme (audio, video dhe tekst) trajtohen si transmetime të njëkohshme. Renditja nëpër këto transmetime nuk është e garantuar.
Kjo është e ndryshme nga BidiGenerateContentClientContent
në disa mënyra:
- Mund të dërgohet vazhdimisht pa ndërprerje në gjenerimin e modelit.
- Nëse ka nevojë për të përzier të dhënat e ndërthurura në
BidiGenerateContentClientContent
dheBidiGenerateContentRealtimeInput
, serveri përpiqet të optimizojë për përgjigjen më të mirë, por nuk ka garanci. - Fundi i radhës nuk është specifikuar në mënyrë eksplicite, por rrjedh nga aktiviteti i përdoruesit (për shembull, fundi i fjalës).
- Edhe para fundit të kthesës, të dhënat përpunohen në mënyrë incrementale për të optimizuar për një fillim të shpejtë të përgjigjes nga modeli.
Fushat | |
---|---|
mediaChunks[] | Fakultative. Të dhëna të bajteve të rreshtuara për hyrjen e medias. I SHKOLLUR: Përdorni një nga |
audio | Fakultative. Këto formojnë rrjedhën e hyrjes audio në kohë reale. |
video | Fakultative. Këto formojnë rrjedhën e hyrjes së videos në kohë reale. |
activityStart | Fakultative. Shënon fillimin e aktivitetit të përdoruesit. Kjo mund të dërgohet vetëm nëse zbulimi automatik i aktivitetit (dmth. nga ana e serverit) është i çaktivizuar. |
activityEnd | Fakultative. Shënon fundin e aktivitetit të përdoruesit. Kjo mund të dërgohet vetëm nëse zbulimi automatik i aktivitetit (dmth. nga ana e serverit) është i çaktivizuar. |
audioStreamEnd | Fakultative. Tregon që transmetimi i audios ka përfunduar, p.sh. sepse mikrofoni është fikur. Kjo duhet të dërgohet vetëm kur është aktivizuar zbulimi automatik i aktivitetit (që është parazgjedhja). Klienti mund të rihapë transmetimin duke dërguar një mesazh audio. |
text | Fakultative. Këto formojnë rrjedhën e futjes së tekstit në kohë reale. |
BidiGenerateContentServerContent
Përditësimi në rritje i serverit i krijuar nga modeli në përgjigje të mesazheve të klientit.
Përmbajtja gjenerohet sa më shpejt që të jetë e mundur, dhe jo në kohë reale. Klientët mund të zgjedhin ta ruajnë dhe ta luajnë atë në kohë reale.
Fushat | |
---|---|
generationComplete | Vetëm dalje. Nëse është e vërtetë, tregon që modeli ka përfunduar duke gjeneruar. Kur modeli ndërpritet gjatë gjenerimit, nuk do të ketë mesazh 'generation_complete' në kthesën e ndërprerë, ai do të kalojë përmes 'interrupted > turn_complete'. Kur modeli supozon riprodhimin në kohë reale, do të ketë vonesë midis gjenerimit_plotës dhe turn_plotës që shkaktohet nga modeli që pret që riprodhimi të përfundojë. |
turnComplete | Vetëm dalje. Nëse është e vërtetë, tregon që modeli ka përfunduar radhën e tij. Gjenerimi do të fillojë vetëm në përgjigje të mesazheve shtesë të klientit. |
interrupted | Vetëm dalje. Nëse është e vërtetë, tregon se një mesazh klienti ka ndërprerë gjenerimin aktual të modelit. Nëse klienti po luan përmbajtjen në kohë reale, ky është një sinjal i mirë për të ndaluar dhe zbrazur radhën aktuale të riprodhimit. |
groundingMetadata | Vetëm dalje. Tokëzimi i meta të dhënave për përmbajtjen e krijuar. |
outputTranscription | Vetëm dalje. Transkriptimi audio në dalje. Transkriptimi dërgohet në mënyrë të pavarur nga mesazhet e tjera të serverit dhe nuk ka asnjë renditje të garantuar, veçanërisht jo midis |
modelTurn | Vetëm dalje. Përmbajtja që modeli ka gjeneruar si pjesë e bisedës aktuale me përdoruesin. |
BidiGenerateContentServerMessage
Mesazh përgjigjeje për thirrjen BidiGenerateContent.
Fushat | |
---|---|
usageMetadata | Vetëm dalje. Përdorimi i meta të dhënave në lidhje me përgjigjet. |
messageType i fushës së bashkimit Lloji . Lloji i mesazhit. messageType mund të jetë vetëm një nga sa vijon: | |
setupComplete | Vetëm dalje. Dërguar si përgjigje ndaj një mesazhi |
serverContent | Vetëm dalje. Përmbajtja e krijuar nga modeli në përgjigje të mesazheve të klientit. |
toolCall | Vetëm dalje. Kërkoni që klienti të ekzekutojë |
toolCallCancellation | Vetëm dalje. Njoftim për klientin që një |
goAway | Vetëm dalje. Një njoftim se serveri së shpejti do të shkëputet. |
sessionResumptionUpdate | Vetëm dalje. Përditësimi i gjendjes së rifillimit të seancës. |
BidiGenerateContentSetup
Mesazhi që do të dërgohet në të parën (dhe vetëm në të parën) BidiGenerateContentClientMessage
. Përmban konfigurimin që do të zbatohet për kohëzgjatjen e RPC-së së transmetimit.
Klientët duhet të presin për një mesazh BidiGenerateContentSetupComplete
përpara se të dërgojnë ndonjë mesazh shtesë.
Fushat | |
---|---|
model | E detyrueshme. Emri i burimit të modelit. Kjo shërben si një ID për Modelin për t'u përdorur. Formati: |
generationConfig | Fakultative. Konfigurimi i gjeneratës. Fushat e mëposhtme nuk mbështeten:
|
systemInstruction | Fakultative. Përdoruesi dha udhëzime të sistemit për modelin. Shënim: Vetëm teksti duhet të përdoret në pjesë dhe përmbajtja në secilën pjesë do të jetë në një paragraf të veçantë. |
tools[] | Fakultative. Një listë e Një |
realtimeInputConfig | Fakultative. Konfiguron trajtimin e hyrjes në kohë reale. |
sessionResumption | Fakultative. Konfiguron mekanizmin e rifillimit të sesionit. Nëse përfshihet, serveri do të dërgojë mesazhe |
contextWindowCompression | Fakultative. Konfiguron një mekanizëm të kompresimit të dritares së kontekstit. Nëse përfshihet, serveri do të zvogëlojë automatikisht madhësinë e kontekstit kur tejkalon gjatësinë e konfiguruar. |
outputAudioTranscription | Fakultative. Nëse caktohet, mundëson transkriptimin e daljes audio të modelit. Transkriptimi përputhet me kodin e gjuhës të specifikuar për audion dalëse, nëse është konfiguruar. |
BidiGenerateContentSetupComplete
Ky lloj nuk ka fusha.
Dërguar si përgjigje ndaj një mesazhi BidiGenerateContentSetup
nga klienti.
BidiGenerateContentToolCall
Kërkoni që klienti të ekzekutojë functionCalls
dhe të kthejë përgjigjet me id
-në që përputhen.
Fushat | |
---|---|
functionCalls[] | Vetëm dalje. Thirrja e funksionit që do të ekzekutohet. |
BidiGenerateContentToolCallCancellation
Njoftim për klientin se një ToolCallMessage
e lëshuar më parë me id
-të e specifikuara nuk duhej të ishte ekzekutuar dhe duhet të anulohej. Nëse ka pasur efekte anësore në ato thirrje të veglave, klientët mund të përpiqen të zhbëjnë thirrjet e veglave. Ky mesazh shfaqet vetëm në rastet kur klientët ndërpresin kthesat e serverit.
Fushat | |
---|---|
ids[] | Vetëm dalje. ID-të e mjetit thërret për t'u anuluar. |
BidiGenerateContentToolResponse
Klienti gjeneroi përgjigje ndaj një ToolCall
të marrë nga serveri. Objektet individuale FunctionResponse
përputhen me objektet përkatëse FunctionCall
nga fusha id
.
Vini re se në funksionin GenerateContent API-të unare dhe të transmetimit të serverit, thirrja ndodh duke shkëmbyer pjesët e Content
, ndërsa në funksionin e GenerateContent API-të bidi thirrja ndodh mbi këto grupe të dedikuara mesazhesh.
Fushat | |
---|---|
functionResponses[] | Fakultative. Përgjigja ndaj thirrjeve të funksionit. |
BidiGenerateContentTranscription
Transkriptimi i audios (hyrje ose dalje).
Fushat | |
---|---|
text | Teksti i transkriptimit. |
ContextWindowCompressionConfig
Aktivizon ngjeshjen e dritares së kontekstit - një mekanizëm për menaxhimin e dritares së kontekstit të modelit në mënyrë që ajo të mos kalojë një gjatësi të caktuar.
Fushat | |
---|---|
compressionMechanism të fushës së bashkimit . Përdoret mekanizmi i ngjeshjes së dritares së kontekstit. compressionMechanism mund të jetë vetëm një nga sa vijon: | |
slidingWindow | Një mekanizëm me dritare rrëshqitëse. |
triggerTokens | Numri i shenjave (para ekzekutimit të një kthese) që kërkohet për të aktivizuar një ngjeshje të dritares së kontekstit. Kjo mund të përdoret për të balancuar cilësinë ndaj vonesës pasi dritaret më të shkurtra të kontekstit mund të rezultojnë në përgjigje më të shpejta të modelit. Megjithatë, çdo operacion kompresimi do të shkaktojë një rritje të përkohshme të vonesës, kështu që ato nuk duhet të aktivizohen shpesh. Nëse nuk është caktuar, parazgjedhja është 80% e kufirit të dritares së kontekstit të modelit. Kjo lë 20% për kërkesën/përgjigjen e modelit të ardhshëm të përdoruesit. |
Ndjeshmëria e Fundit
Përcakton se si zbulohet fundi i të folurit.
Enums | |
---|---|
END_SENSITIVITY_UNSPECIFIED | Parazgjedhja është END_SENSITIVITY_HIGH. |
END_SENSITIVITY_HIGH | Zbulimi automatik përfundon fjalimin më shpesh. |
END_SENSITIVITY_LOW | Zbulimi automatik përfundon fjalimin më rrallë. |
GoAway
Një njoftim se serveri së shpejti do të shkëputet.
Fushat | |
---|---|
timeLeft | Koha e mbetur para lidhjes do të ndërpritet si E NDËRPRERUR. Kjo kohëzgjatje nuk do të jetë kurrë më e vogël se një minimum specifik për modelin, i cili do të specifikohet së bashku me kufijtë e tarifave për modelin. |
RealtimeInputConfig
Konfiguron sjelljen e hyrjes në kohë reale në BidiGenerateContent
.
Fushat | |
---|---|
automaticActivityDetection | Fakultative. Nëse nuk është caktuar, zbulimi automatik i aktivitetit aktivizohet si parazgjedhje. Nëse zbulimi automatik i zërit është i çaktivizuar, klienti duhet të dërgojë sinjale aktiviteti. |
activityHandling | Fakultative. Përcakton se çfarë efekti ka aktiviteti. |
turnCoverage | Fakultative. Përcakton se cila hyrje përfshihet në radhën e përdoruesit. |
SessionResumptionConfig
Konfigurimi i rifillimit të sesionit.
Ky mesazh përfshihet në konfigurimin e sesionit si BidiGenerateContentSetup.sessionResumption
. Nëse konfigurohet, serveri do të dërgojë mesazhe SessionResumptionUpdate
.
Fushat | |
---|---|
handle | Doreza e një seance të mëparshme. Nëse nuk është i pranishëm, atëherë krijohet një seancë e re. Dorezat e sesionit vijnë nga vlerat |
Përditësimi i rifillimit të sesionit
Përditësimi i gjendjes së rifillimit të seancës.
Dërgohet vetëm nëse është caktuar BidiGenerateContentSetup.sessionResumption
.
Fushat | |
---|---|
newHandle | Dorezë e re që përfaqëson një gjendje që mund të rifillojë. Bosh nëse |
resumable | E vërtetë nëse sesioni aktual mund të rifillojë në këtë pikë. Rifillimi nuk është i mundur në disa pika të seancës. Për shembull, kur modeli është duke ekzekutuar thirrje funksioni ose duke gjeneruar. Rifillimi i seancës (duke përdorur një token të sesionit të mëparshëm) në një gjendje të tillë do të rezultojë në disa humbje të të dhënave. Në këto raste, |
Dritare rrëshqitëse
Metoda SlidingWindow funksionon duke hedhur poshtë përmbajtjen në fillim të dritares së kontekstit. Konteksti që rezulton do të fillojë gjithmonë në fillim të një kthese të rolit të USER. Udhëzimet e sistemit dhe çdo BidiGenerateContentSetup.prefixTurns
do të mbeten gjithmonë në fillim të rezultatit.
Fushat | |
---|---|
targetTokens | Numri i synuar i argumenteve për të mbajtur. Vlera e paracaktuar është trigger_tokens/2. Hedhja e pjesëve të dritares së kontekstit shkakton një rritje të përkohshme të vonesës, kështu që kjo vlerë duhet të kalibrohet për të shmangur operacionet e shpeshta të kompresimit. |
Ndjeshmëria e fillimit
Përcakton se si zbulohet fillimi i të folurit.
Enums | |
---|---|
START_SENSITIVITY_UNSPECIFIED | Parazgjedhja është START_SENSITIVITY_HIGH. |
START_SENSITIVITY_HIGH | Zbulimi automatik do të zbulojë fillimin e të folurit më shpesh. |
START_SENSITIVITY_LOW | Zbulimi automatik do të zbulojë fillimin e të folurit më rrallë. |
Mbulimi i Kthimit
Opsionet se cilat hyrje përfshihen në radhën e përdoruesit.
Enums | |
---|---|
TURN_COVERAGE_UNSPECIFIED | Nëse nuk specifikohet, sjellja e parazgjedhur është TURN_INCLUDES_ONLY_ACTIVITY . |
TURN_INCLUDES_ONLY_ACTIVITY | Kthesa e përdoruesve përfshin vetëm aktivitetin që nga kthesa e fundit, duke përjashtuar pasivitetin (p.sh. heshtja në transmetimin audio). Kjo është sjellja e paracaktuar. |
TURN_INCLUDES_ALL_INPUT | Kthesa e përdoruesve përfshin të gjitha hyrjet në kohë reale që nga kthesa e fundit, duke përfshirë pasivitetin (p.sh. heshtja në transmetimin audio). |
Metadata e përdorimit
Përdorimi i meta të dhënave në lidhje me përgjigjet.
Fushat | |
---|---|
promptTokenCount | Vetëm dalje. Numri i shenjave në prompt. Kur caktohet |
cachedContentTokenCount | Numri i shenjave në pjesën e memorizuar të kërkesës (përmbajtja e ruajtur në memorie) |
responseTokenCount | Vetëm dalje. Numri i përgjithshëm i argumenteve në të gjithë kandidatët e përgjigjeve të gjeneruara. |
toolUsePromptTokenCount | Vetëm dalje. Numri i shenjave të pranishme në kërkesën(et) e përdorimit të veglave. |
thoughtsTokenCount | Vetëm dalje. Numri i argumenteve të mendimeve për modelet e të menduarit. |
totalTokenCount | Vetëm dalje. Numri total i shenjave për kërkesën e gjenerimit (kërkesa + kandidatët përgjigje). |
promptTokensDetails[] | Vetëm dalje. Lista e modaliteteve që janë përpunuar në hyrjen e kërkesës. |
cacheTokensDetails[] | Vetëm dalje. Lista e modaliteteve të përmbajtjes së memorizuar në hyrjen e kërkesës. |
responseTokensDetails[] | Vetëm dalje. Lista e modaliteteve që janë kthyer në përgjigje. |
toolUsePromptTokensDetails[] | Vetëm dalje. Lista e modaliteteve që u përpunuan për hyrjet e kërkesës për përdorim të veglave. |
Më shumë informacion mbi llojet e zakonshme
Për më shumë informacion mbi llojet e burimeve të përdorura zakonisht të API Blob
, Content
, FunctionCall
, FunctionResponse
, GenerationConfig
, GroundingMetadata
, ModalityTokenCount
dhe Tool
, shihni Gjenerimi i përmbajtjes .