Live API - WebSockets API reference

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

bool

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

StartSensitivity

Fakultative. Përcakton sa gjasa ka të zbulohet fjalimi.

prefixPaddingMs

int32

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

EndSensitivity

Fakultative. Përcakton sa ka gjasa të përfundojë fjalimi i zbuluar.

silenceDurationMs

int32

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[]

Content

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

bool

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 dhe BidiGenerateContentRealtimeInput , 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[]

Blob

Fakultative. Të dhëna të bajteve të rreshtuara për hyrjen e medias. mediaChunks e shumëfishta nuk mbështeten, të gjitha përveç të parës do të shpërfillen.

I SHKOLLUR: Përdorni një nga audio , video ose text .

audio

Blob

Fakultative. Këto formojnë rrjedhën e hyrjes audio në kohë reale.

video

Blob

Fakultative. Këto formojnë rrjedhën e hyrjes së videos në kohë reale.

activityStart

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

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

bool

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

string

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

bool

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

bool

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

bool

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

GroundingMetadata

Vetëm dalje. Tokëzimi i meta të dhënave për përmbajtjen e krijuar.

outputTranscription

BidiGenerateContentTranscription

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 serverContent dhe këtij outputTranscription .

modelTurn

Content

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

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

BidiGenerateContentSetupComplete

Vetëm dalje. Dërguar si përgjigje ndaj një mesazhi BidiGenerateContentSetup nga klienti kur të përfundojë konfigurimi.

serverContent

BidiGenerateContentServerContent

Vetëm dalje. Përmbajtja e krijuar nga modeli në përgjigje të mesazheve të klientit.

toolCall

BidiGenerateContentToolCall

Vetëm dalje. Kërkoni që klienti të ekzekutojë functionCalls dhe të kthejë përgjigjet me id -në që përputhen.

toolCallCancellation

BidiGenerateContentToolCallCancellation

Vetëm dalje. Njoftim për klientin që një ToolCallMessage e lëshuar më parë me id -në e specifikuar duhet të anulohet.

goAway

GoAway

Vetëm dalje. Një njoftim se serveri së shpejti do të shkëputet.

sessionResumptionUpdate

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

string

E detyrueshme. Emri i burimit të modelit. Kjo shërben si një ID për Modelin për t'u përdorur.

Formati: models/{model}

generationConfig

GenerationConfig

Fakultative. Konfigurimi i gjeneratës.

Fushat e mëposhtme nuk mbështeten:

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

Content

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[]

Tool

Fakultative. Një listë e Tools modeli mund të përdorë për të gjeneruar përgjigjen e radhës.

Një Tool është një pjesë kodi që i mundëson sistemit të ndërveprojë me sisteme të jashtme për të kryer një veprim, ose grup veprimesh, jashtë njohurive dhe qëllimit të modelit.

realtimeInputConfig

RealtimeInputConfig

Fakultative. Konfiguron trajtimin e hyrjes në kohë reale.

sessionResumption

SessionResumptionConfig

Fakultative. Konfiguron mekanizmin e rifillimit të sesionit.

Nëse përfshihet, serveri do të dërgojë mesazhe SessionResumptionUpdate .

contextWindowCompression

ContextWindowCompressionConfig

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

AudioTranscriptionConfig

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[]

FunctionCall

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[]

string

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[]

FunctionResponse

Fakultative. Përgjigja ndaj thirrjeve të funksionit.

BidiGenerateContentTranscription

Transkriptimi i audios (hyrje ose dalje).

Fushat
text

string

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

SlidingWindow

Një mekanizëm me dritare rrëshqitëse.

triggerTokens

int64

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

Duration

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

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

ActivityHandling

Fakultative. Përcakton se çfarë efekti ka aktiviteti.

turnCoverage

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

string

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 SessionResumptionUpdate.token në lidhjet e mëparshme.

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

string

Dorezë e re që përfaqëson një gjendje që mund të rifillojë. Bosh nëse resumable =false.

resumable

bool

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, newHandle do të jetë bosh dhe resumable do të jetë false.

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

int64

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

int32

Vetëm dalje. Numri i shenjave në prompt. Kur caktohet cachedContent , kjo është ende madhësia totale efektive e kërkesës që do të thotë se kjo përfshin numrin e shenjave në përmbajtjen e memorizuar.

cachedContentTokenCount

int32

Numri i shenjave në pjesën e memorizuar të kërkesës (përmbajtja e ruajtur në memorie)

responseTokenCount

int32

Vetëm dalje. Numri i përgjithshëm i argumenteve në të gjithë kandidatët e përgjigjeve të gjeneruara.

toolUsePromptTokenCount

int32

Vetëm dalje. Numri i shenjave të pranishme në kërkesën(et) e përdorimit të veglave.

thoughtsTokenCount

int32

Vetëm dalje. Numri i argumenteve të mendimeve për modelet e të menduarit.

totalTokenCount

int32

Vetëm dalje. Numri total i shenjave për kërkesën e gjenerimit (kërkesa + kandidatët përgjigje).

promptTokensDetails[]

ModalityTokenCount

Vetëm dalje. Lista e modaliteteve që janë përpunuar në hyrjen e kërkesës.

cacheTokensDetails[]

ModalityTokenCount

Vetëm dalje. Lista e modaliteteve të përmbajtjes së memorizuar në hyrjen e kërkesës.

responseTokensDetails[]

ModalityTokenCount

Vetëm dalje. Lista e modaliteteve që janë kthyer në përgjigje.

toolUsePromptTokensDetails[]

ModalityTokenCount

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 .