Versión en streaming del endpoint generateContent de Gemini. Devuelve Server-Sent Events.
Parámetros de ruta
Nombre del modelo (por ejemplo, gemini-2.5-pro, gemini-3.5-flash).
Parámetros de consulta
Clave API (alternativa a la autenticación por encabezado).
Cuerpo de la solicitud
Igual que Generar contenido .
En las solicitudes de streaming, omite generationConfig.candidateCount o mantenlo en 1; los valores mayores se rechazan en lugar de descartar candidatos adicionales en silencio.
Respuesta
Devuelve un flujo de objetos JSON, cada uno de los cuales contiene una respuesta parcial.
cURL
Python
JavaScript
Go
PHP
curl -X POST "https://api.tokenlab.sh/v1beta/models/gemini-2.5-pro:streamGenerateContent?key=sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{
"contents": [
{
"parts": [{"text": "Tell me a story"}]
}
]
}'
import google.generativeai as genai
genai.configure(
api_key = "sk-your-api-key" ,
transport = "rest" ,
client_options = { "api_endpoint" : "api.tokenlab.sh" }
)
model = genai.GenerativeModel( "gemini-2.5-pro" )
response = model.generate_content( "Tell me a story" , stream = True )
for chunk in response:
print (chunk.text, end = "" )
const response = await fetch (
'https://api.tokenlab.sh/v1beta/models/gemini-2.5-pro:streamGenerateContent?key=sk-your-api-key' ,
{
method: 'POST' ,
headers: { 'Content-Type' : 'application/json' },
body: JSON . stringify ({
contents: [{ parts: [{ text: 'Tell me a story' }] }]
})
}
);
const reader = response . body . getReader ();
const decoder = new TextDecoder ();
while ( true ) {
const { done , value } = await reader . read ();
if ( done ) break ;
console . log ( decoder . decode ( value ));
}
package main
import (
" bufio "
" bytes "
" encoding/json "
" fmt "
" net/http "
)
func main () {
payload := map [ string ] interface {}{
"contents" : [] map [ string ] interface {}{
{ "parts" : [] map [ string ] string {{ "text" : "Tell me a story" }}},
},
}
jsonData , _ := json . Marshal ( payload )
req , _ := http . NewRequest ( "POST" ,
"https://api.tokenlab.sh/v1beta/models/gemini-2.5-pro:streamGenerateContent?key=sk-your-api-key" ,
bytes . NewBuffer ( jsonData ))
req . Header . Set ( "Content-Type" , "application/json" )
client := & http . Client {}
resp , _ := client . Do ( req )
defer resp . Body . Close ()
scanner := bufio . NewScanner ( resp . Body )
for scanner . Scan () {
fmt . Println ( scanner . Text ())
}
}
<? php
$payload = [
'contents' => [
[ 'parts' => [[ 'text' => 'Tell me a story' ]]]
]
];
$ch = curl_init ( 'https://api.tokenlab.sh/v1beta/models/gemini-2.5-pro:streamGenerateContent?key=sk-your-api-key' );
curl_setopt_array ( $ch , [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_POST => true ,
CURLOPT_HTTPHEADER => [ 'Content-Type: application/json' ],
CURLOPT_POSTFIELDS => json_encode ( $payload ),
CURLOPT_WRITEFUNCTION => function ( $ch , $data ) {
echo $data ;
return strlen ( $data );
}
]);
curl_exec ( $ch );
curl_close ( $ch );
Ejemplo de entrada de visión
Las solicitudes de visión en streaming usan la misma estructura contents[].parts[] que el endpoint sin streaming.
{
"contents" : [
{
"role" : "user" ,
"parts" : [
{ "text" : "Please describe this image." },
{
"inline_data" : {
"mime_type" : "image/jpeg" ,
"data" : "/9j/4AAQSkZJRgABAQ..."
}
}
]
}
]
}
{
"candidates" : [
{
"content" : {
"role" : "model" ,
"parts" : [
{ "text" : "Once upon a time" }
]
}
}
]
}