Saltar al contenido principal

Documentation Index

Fetch the complete documentation index at: https://docs.aihubmix.com/llms.txt

Use this file to discover all available pages before exploring further.

Reenvío para los modelos de Gemini

Para la serie Gemini, ofrecemos dos métodos de invocación: llamadas a la API nativa y llamadas compatibles con OpenAI.
Antes de empezar, asegúrate de instalar o actualizar la dependencia nativa ejecutando pip install google-genai o pip install -U google-genai.
1️⃣ Para la integración nativa, Gemini se encarga automáticamente de enrutar el tráfico entre AI Studio y VertexAI. Solo tienes que proporcionar tu clave API de AIHubMix y la URL de solicitud adecuada. Recuerda que esta URL es diferente del habitual base_url; sigue el ejemplo a continuación para asegurar una configuración correcta.
client = genai.Client(
    api_key="sk-***",  # Replace with the key you generated from AiHubMix
    http_options={"base_url": "https://aihubmix.com/gemini"},
)
2️⃣ Para los formatos compatibles con OpenAI, mantén el endpoint universal v1.
client = OpenAI(
    api_key="sk-***", # Replace with the key you generated from AiHubMix
    base_url="https://aihubmix.com/v1",
)
3️⃣ Para la serie 2.5, si necesitas mostrar el proceso de razonamiento, hay dos formas de hacerlo:
  1. Invocación nativa: Pasa include_thoughts=True
  2. Método compatible con OpenAI: Pasa reasoning_effort
Puedes consultar los ejemplos de código a continuación para conocer el uso detallado.

Instrucciones de la vista previa de imágenes con Gemini 3 Pro

Gemini 3 Pro Image Preview (Nano Banana Pro Preview) está diseñado para la creación de recursos profesionales e instrucciones complejas. Este modelo ofrece las siguientes funciones:
  • Usa Google Search para recuperar conocimiento del mundo en tiempo real
  • Proceso de “razonamiento” integrado (optimiza la composición antes de generar)
  • Puede generar imágenes con resoluciones de hasta 4K
Modo de streaming (stream=True) → solo la etapa de razonamiento
Modo sin streaming (stream=False) → generación final de la imagen
Las imágenes generadas no se incluyen en las respuestas en streaming y deben recuperarse mediante una solicitud sin streaming .
Ejemplos de uso en Python:
import os
from google import genai
from google.genai import types

API_KEY = "<YOUR AIHUBMIX API KEY>"  

client = genai.Client(
    api_key=API_KEY,
    http_options={"base_url": "https://aihubmix.com/gemini"},  
)

prompt = (
    "Da Vinci style anatomical sketch of a dissected Monarch butterfly. "
    "Detailed drawings of the head, wings, and legs on textured parchment with notes in English."
)

# Optional parameters
aspect_ratio = "1:1"   # Supported: "1:1","2:3","3:2","3:4","4:3","4:5","5:4","9:16","16:9","21:9"
resolution   = "4K"    # Default: 1K. Supported: "1K", "2K", "4K". Note: “K” must be uppercase.

response = client.models.generate_content(
    model="gemini-3-pro-image-preview",
    contents=prompt,   
    config=types.GenerateContentConfig(
        response_modalities=['TEXT', 'IMAGE'],
        image_config=types.ImageConfig(
            aspect_ratio=aspect_ratio,
            image_size=resolution,
        ),
    ),
)

# Save image & print text
for part in response.parts:
    if part.text:
        print(part.text)  
    elif image := part.as_image():
        image.save("butterfly.png")
        print("Image saved: butterfly.png")

Acerca de los modelos de inferencia de Gemini 2.5

  1. Toda la serie 2.5 está formada por modelos de inferencia.
  2. 2.5 Flash es un modelo híbrido, similar a Claude Sonnet 3.7. Puedes afinar su comportamiento de razonamiento ajustando el parámetro thinking_budget para un control óptimo.
  3. 2.5 Pro es un modelo de inferencia puro. El razonamiento no se puede desactivar y thinking_budget no debe establecerse explícitamente.
Ejemplos de uso en Python:
from google import genai
from google.genai import types

def generate():
    client = genai.Client(
        api_key="sk-***", # 🔑 Replace it by your AiHubMix Key
        http_options={"base_url": "https://aihubmix.com/gemini"},
    )

    model = "gemini-2.0-flash"
    contents = [
        types.Content(
            role="user",
            parts=[
                types.Part.from_text(text="""How do I know I'm not wasting time?"""),
            ],
        ),
    ]

    print(client.models.generate_content(
        model=model,
        contents=contents,
    ))

if __name__ == "__main__":
    generate()

Gemini 2.5 Flash: Soporte para tareas rápidas

Ejemplo de invocación compatible con OpenAI:
from openai import OpenAI

client = OpenAI(
    api_key="AIHUBMIX_API_KEY", # Replace with the key you generated in AiHubMix
    base_url="https://aihubmix.com/v1",
)

completion = client.chat.completions.create(
    model="gemini-2.5-flash-preview-04-17-nothink",
    messages=[
        {
            "role": "user",
            "content": "Explain the Occam's Razor concept and provide everyday examples of it"
        }
    ]
)

print(completion.choices[0].message.content)
  1. Para tareas complejas, basta con establecer el ID de modelo en el predeterminado gemini-2.5-flash-preview-04-17 para activar el razonamiento.
  2. Gemini 2.5 Flash usa el parámetro budget para controlar la profundidad del razonamiento, en un rango de 0 a 16K. El presupuesto predeterminado es 1024 y el efecto marginal óptimo se obtiene con 16K.

Comprensión multimedia

  • Para los archivos multimedia inferiores a 20 MB (imágenes, audio, vídeo), súbelos usando inline_data.
  • Cuando el archivo multimedia es mayor de 20 MB, debes usar la Files API.

Archivos menores de 20 MB

Añadiendo el parámetro EDIARESOLUTION_MEDIUM puedes ajustar la resolución de la imagen, lo que reduce considerablemente los costos de entrada y minimiza el riesgo de errores con imágenes grandes.Valores admitidos para la resolución multimedia:
NombreDescripción
MEDIA_RESOLUTION_UNSPECIFIEDLa resolución multimedia no se ha establecido.
MEDIA_RESOLUTION_LOWResolución multimedia establecida en baja (64 tokens).
MEDIA_RESOLUTION_MEDIUMResolución multimedia establecida en media (256 tokens).
MEDIA_RESOLUTION_HIGHResolución multimedia establecida en alta (reencuadre con zoom y 256 tokens).
Ejemplos de uso en Python:
from google import genai
from google.genai import types

file_path = "yourpath/file.jpeg"
with open(file_path, "rb") as f:
    file_bytes = f.read()

client = genai.Client(
    api_key="sk-***", # Replace with the key you generated in AiHubMix
    http_options={"base_url": "https://aihubmix.com/gemini"}
)

response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents=types.Content(
        parts=[
            types.Part(
                inline_data=types.Blob(
                    data=file_bytes,
                    mime_type="image/jpeg"
                )
            ),
            types.Part(
                text="Describe the image."
            )
        ]
    ),
    config=types.GenerateContentConfig(
        system_instruction="You are a helpful assistant that can describe images.",
        max_output_tokens=768,
        temperature=0.1,
        thinking_config=types.ThinkingConfig(
            thinking_budget=0, include_thoughts=False
        ),
        media_resolution=types.MediaResolution.MEDIA_RESOLUTION_MEDIUM # 256 tokens
    )
)

print(response.text)

Files API

Gemini puede gestionar simultáneamente varios tipos de datos de entrada, incluidos texto, imágenes y audio. Cuando el tamaño total de la solicitud (incluidos archivos, prompts de texto, comandos del sistema, etc.) supere los 20 MB, asegúrate de usar la Files API.
  • No se admite listar los archivos subidos.
  • Los archivos se eliminarán automáticamente después de 48 horas, o puedes eliminar manualmente los archivos subidos.
Ejemplos de uso en Python:
from google import genai

client = genai.Client(
    api_key="sk-****",   
    http_options={"base_url": "https://aihubmix.com/gemini"},
)

myfile = client.files.upload(file="path/to/sample.mp3")

response = client.models.generate_content(
    model="gemini-2.5-flash", contents=["Describe this audio clip", myfile]
)

print(response.text)

Ejecución de código

La función de ejecución de código permite al modelo generar y ejecutar código Python y aprender de los resultados de manera iterativa hasta llegar a una salida final. Puedes usar esta capacidad para construir aplicaciones que se beneficien del razonamiento basado en código y que produzcan salida de texto. Por ejemplo, podrías usar la ejecución de código en una aplicación que resuelva ecuaciones o procese texto.
Python
from google import genai
from google.genai import types

file_path = "yourpath/file.csv"
with open(file_path, "rb") as f:
    file_bytes = f.read()

client = genai.Client(
    api_key="sk-***", # Replace with the key you generated in AiHubMix
    http_options={"base_url": "https://aihubmix.com/gemini"}
)

response = client.models.generate_content(
    model="gemini-2.0-flash",
    contents=types.Content(
        parts=[
            types.Part(
                inline_data=types.Blob(
                    data=file_bytes,
                    mime_type="text/csv"
                )
            ),
            types.Part(
                text="Please analyze this CSV and summarize the key statistics. Use code execution if needed."
            )
        ]
    ),
    config=types.GenerateContentConfig(
        tools=[types.Tool(
            code_execution=types.ToolCodeExecution
        )]
    )
)

for part in response.candidates[0].content.parts:
    if part.text is not None:
        print(part.text)
    if getattr(part, "executable_code", None) is not None:
        print("Generated code:\n", part.executable_code.code)
    if getattr(part, "code_execution_result", None) is not None:
        print("Execution result:\n", part.code_execution_result.output)

Caché de contexto

La API nativa de Gemini habilita la caché de contexto implícita por defecto: no se requiere configuración. Para cada solicitud de generate_content, el sistema almacena automáticamente en caché el contenido de entrada. Si una solicitud posterior utiliza exactamente el mismo contenido, modelo y parámetros, el sistema devolverá al instante el resultado previo, acelerando enormemente el tiempo de respuesta y reduciendo potencialmente los costos de tokens de entrada.
  • El almacenamiento en caché es automático; no se necesita configuración manual.
  • La caché solo se acierta cuando el contenido, el modelo y todos los parámetros son exactamente iguales; cualquier diferencia resultará en un fallo de caché.
  • La duración de la caché (TTL) puede ser establecida por el desarrollador o dejarse sin definir (por defecto, 1 hora). Google no impone un TTL mínimo ni máximo. Los costos dependen del número de tokens en caché y de la duración de la caché.
    • Aunque Google no impone restricciones al TTL, como plataforma de reenvío, solo admitimos un rango limitado de TTL. Para requisitos que excedan los límites de nuestra plataforma, contáctanos.

Notas

  • No se garantizan ahorros de costo: Los tokens en caché se facturan al 25 % del precio estándar de entrada, por lo que, teóricamente, el almacenamiento en caché puede ahorrarte hasta el 75 % en costos de tokens de entrada. Sin embargo, la documentación oficial de Google no garantiza el ahorro de costos; el efecto real depende de tu tasa de aciertos de caché, los tipos de tokens y la duración del almacenamiento.
  • Condiciones de acierto de caché: Para maximizar la eficacia de la caché, coloca el contexto repetible al principio de tu entrada y el contenido dinámico (como la entrada del usuario) al final.
  • Cómo detectar aciertos de caché: Si una respuesta proviene de la caché, response.usage_metadata incluirá el campo cache_tokens_details y cached_content_token_count. Puedes usarlos para determinar el uso de la caché.
    Ejemplo de campos cuando se produce un acierto de caché:
    cache_tokens_details=[ModalityTokenCount(modality=<MediaModality.TEXT: 'TEXT'>, token_count=2003)]
    cached_content_token_count=2003
    
Ejemplo de código:
from google import genai

client = genai.Client(
    http_options={"base_url": "https://aihubmix.com/gemini"},
    api_key="sk-***",  # Replace with your AiHubMix API key
)

prompt = """
        <the entire contents of 'Pride and Prejudice'>
"""

def generate_content_sync():
    response = client.models.generate_content(
        model="gemini-2.5-flash-preview-05-20",
        contents=prompt + "Analyze the major themes in 'Pride and Prejudice'.",
    )
    print(response.usage_metadata)  # When cache is hit, cache_tokens_details and cached_content_token_count will appear
    return response

generate_content_sync()
Cuando se produce un acierto de caché, response.usage_metadata contendrá:
cache_tokens_details=[ModalityTokenCount(modality=<MediaModality.TEXT: 'TEXT'>, token_count=2003)]
cached_content_token_count=2003
Conclusión clave: La caché implícita es automática y ofrece comentarios claros sobre los aciertos de caché. Los desarrolladores pueden comprobar usage_metadata para conocer el estado de la caché. No se garantizan ahorros de costos: el beneficio real depende de la estructura de la solicitud y de las tasas de acierto de la caché.

Llamadas a funciones (Function calling)

Al usar la forma compatible con OpenAI para invocar las llamadas a funciones de Gemini, debes pasar tool_choice="auto" en el cuerpo de la solicitud; de lo contrario, se producirá un error.
from openai import OpenAI

# Define the function declaration for the model
schedule_meeting_function = {
    "name": "schedule_meeting",
    "description": "Schedules a meeting with specified attendees at a given time and date.",
    "parameters": {
        "type": "object",
        "properties": {
            "attendees": {
                "type": "array",
                "items": {"type": "string"},
                "description": "List of people attending the meeting.",
            },
            "date": {
                "type": "string",
                "description": "Date of the meeting (e.g., '2024-07-29')",
            },
            "time": {
                "type": "string",
                "description": "Time of the meeting (e.g., '15:00')",
            },
            "topic": {
                "type": "string",
                "description": "The subject or topic of the meeting.",
            },
        },
        "required": ["attendees", "date", "time", "topic"],
    },
}

# Configure the client
client = OpenAI(
    api_key="AIHUBMIX_API_KEY", # Replace with the key you generated in AiHubMix
    base_url="https://aihubmix.com/v1",
)

# Send request with function declarations using OpenAI compatible format
response = client.chat.completions.create(
    model="gemini-2.0-flash",
    messages=[
        {"role": "user", "content": "Schedule a meeting with Bob and Alice for 03/14/2025 at 10:00 AM about the Q3 planning."}
    ],
    tools=[{"type": "function", "function": schedule_meeting_function}],
    tool_choice="auto" ## 📍 Added Aihubmix compatibility, more stable request method
)

# Check for a function call
if response.choices[0].message.tool_calls:
    tool_call = response.choices[0].message.tool_calls[0]
    function_call = tool_call.function
    print(f"Function to call: {function_call.name}")
    print(f"Arguments: {function_call.arguments}")
    print(response.usage)
    #  In a real app, you would call your function here:
    #  result = schedule_meeting(**json.loads(function_call.arguments))
else:
    print("No function call found in the response.")
    print(response.choices[0].message.content)
Ejemplo de salida:
Function to call: schedule_meeting
Arguments: {"attendees":["Bob","Alice"],"date":"2025-03-14","time":"10:00","topic":"Q3 planning"}
CompletionUsage(completion_tokens=28, prompt_tokens=111, total_tokens=139, completion_tokens_details=None, prompt_tokens_details=None)

Seguimiento sencillo del uso de tokens

  1. Gemini realiza el seguimiento del uso de tokens mediante usage_metadata. Esto es lo que significa cada campo:
    • prompt_token_count: número de tokens de entrada
    • candidates_token_count: número de tokens de salida
    • thoughts_token_count: tokens utilizados durante el razonamiento (también se cuentan como salida)
    • total_token_count: total de tokens utilizados (entrada + salida)
    Para más detalles, consulta su documentación oficial.
  2. Para las API que usan el formato compatible con OpenAI, el uso de tokens se rastrea en .usage con los siguientes campos:
    • usage.completion_tokens: número de tokens de entrada
    • usage.prompt_tokens: número de tokens de salida (incluido el razonamiento)
    • usage.total_tokens: uso total de tokens

A continuación, cómo usarlo en código:
from google import genai
from google.genai import types
import time

def generate():
    client = genai.Client(
        api_key="sk-***", # Replace this with your key from AiHubMix
        http_options={"base_url": "https://aihubmix.com/gemini"},
    )

    model = "gemini-2.5-pro-preview-03-25"
    contents = [
        types.Content(
            role="user",
            parts=[
                types.Part.from_text(text="""How is the "Rule of 72" derived in the financial world?"""),
            ],
        ),
    ]
    generate_content_config = types.GenerateContentConfig(
        response_mime_type="text/plain",
    )

    final_usage_metadata = None
    
    for chunk in client.models.generate_content_stream(
        model=model,
        contents=contents,
        config=generate_content_config,
    ):
        print(chunk.text, end="")
        if chunk.usage_metadata:
            final_usage_metadata = chunk.usage_metadata
    
    # Once all chunks are processed, print the full token usage
    if final_usage_metadata:
        print(f"\nUsage: {final_usage_metadata}")

if __name__ == "__main__":
    generate()

Última actualización: 2026-06-01