Zum Hauptinhalt springen

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.

Weiterleitung für Gemini-Modelle

Für die Gemini-Serie bieten wir zwei Aufrufmethoden an: native API-Aufrufe und OpenAI-kompatible Aufrufe.
Bevor Sie beginnen, stellen Sie sicher, dass Sie die native Abhängigkeit installieren oder aktualisieren, indem Sie entweder pip install google-genai oder pip install -U google-genai ausführen.
1️⃣ Bei der nativen Integration übernimmt Gemini das Routing des Datenverkehrs zwischen AI Studio und VertexAI automatisch. Stellen Sie einfach Ihren AIHubMix API-Schlüssel und die passende Anfrage-URL bereit. Beachten Sie, dass sich diese URL von der üblichen base_url unterscheidet – folgen Sie dem Beispiel unten, um die korrekte Einrichtung sicherzustellen.
client = genai.Client(
    api_key="sk-***",  # Replace with the key you generated from AiHubMix
    http_options={"base_url": "https://aihubmix.com/gemini"},
)
2️⃣ Für OpenAI-kompatible Formate behalten Sie den universellen v1-Endpunkt bei.
client = OpenAI(
    api_key="sk-***", # Replace with the key you generated from AiHubMix
    base_url="https://aihubmix.com/v1",
)
3️⃣ Für die 2.5-Serie gibt es zwei Möglichkeiten, den Denkprozess anzuzeigen:
  1. Nativer Aufruf: Übergeben Sie include_thoughts=True
  2. OpenAI-kompatible Methode: Übergeben Sie reasoning_effort
Detaillierte Verwendungshinweise finden Sie in den Codebeispielen unten.

Hinweise zu Gemini 3 Pro Image Preview

Gemini 3 Pro Image Preview (Nano Banana Pro Preview) ist für die professionelle Asset-Erstellung und komplexe Anweisungen konzipiert. Dieses Modell bietet folgende Funktionen:
  • Nutzt die Google-Suche, um aktuelles Weltwissen abzurufen
  • Integrierter „Denkprozess“ (optimiert die Komposition vor der Generierung)
  • Kann Bilder mit Auflösungen bis zu 4K generieren
Streaming-Modus (stream=True) → nur die Reasoning-Phase
Nicht-Streaming-Modus (stream=False) → finale Bildgenerierung
Generierte Bilder sind nicht in Streaming-Antworten enthalten und müssen mit einer Nicht-Streaming-Anfrage abgerufen werden.
Python-Anwendungsbeispiele:
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")

Über die Gemini 2.5 Inferenzmodelle

  1. Die gesamte 2.5-Serie besteht aus Inferenzmodellen.
  2. 2.5 Flash ist ein Hybridmodell, ähnlich wie Claude Sonnet 3.7. Sie können sein Reasoning-Verhalten durch Anpassung des Parameters thinking_budget für eine optimale Kontrolle feinjustieren.
  3. 2.5 Pro ist ein reines Inferenzmodell. Das Denken kann nicht deaktiviert werden, und thinking_budget sollte nicht explizit gesetzt werden.
Python-Anwendungsbeispiele:
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: Unterstützung für schnelle Aufgaben

Beispiel für einen OpenAI-kompatiblen Aufruf:
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. Setzen Sie für komplexe Aufgaben einfach die Modell-ID auf den Standardwert gemini-2.5-flash-preview-04-17, um das Denken zu aktivieren.
  2. Gemini 2.5 Flash steuert die Denktiefe über den Parameter budget im Bereich von 0 bis 16K. Das Standardbudget beträgt 1024, der optimale Grenzeffekt liegt bei 16K.

Multimedia-Verständnis

  • Für Multimedia-Dateien unter 20 MB (Bilder, Audio, Video) laden Sie diese mit inline_data hoch.
  • Wenn eine Multimedia-Datei größer als 20 MB ist, müssen Sie die Files API verwenden.

Dateien unter 20 MB

Durch Hinzufügen des Parameters EDIARESOLUTION_MEDIUM können Sie die Bildauflösung anpassen, was die Eingabekosten erheblich reduziert und das Fehlerrisiko bei großen Bildern minimiert.Unterstützte Werte für die Multimedia-Auflösung:
NameBeschreibung
MEDIA_RESOLUTION_UNSPECIFIEDMultimedia-Auflösung wurde nicht gesetzt.
MEDIA_RESOLUTION_LOWMultimedia-Auflösung auf niedrig gesetzt (64 Token).
MEDIA_RESOLUTION_MEDIUMMultimedia-Auflösung auf mittel gesetzt (256 Token).
MEDIA_RESOLUTION_HIGHMultimedia-Auflösung auf hoch gesetzt (gezoomtes Reframing mit 256 Token).
Python-Anwendungsbeispiele:
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 kann verschiedene Arten von Eingabedaten gleichzeitig verarbeiten, darunter Text, Bilder und Audio. Wenn die Gesamtgröße der Anfrage (einschließlich Dateien, Texthinweisen, Systembefehlen usw.) 20 MB überschreitet, müssen Sie unbedingt die Files API verwenden.
  • Das Auflisten hochgeladener Dateien wird nicht unterstützt.
  • Dateien werden nach 48 Stunden automatisch gelöscht, oder Sie können hochgeladene Dateien manuell löschen.
Python-Anwendungsbeispiele:
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)

Code-Ausführung

Die Code-Ausführungsfunktion ermöglicht es dem Modell, Python-Code zu generieren und auszuführen sowie iterativ aus den Ergebnissen zu lernen, bis es zu einer finalen Ausgabe gelangt. Sie können diese Code-Ausführungsfähigkeit nutzen, um Anwendungen zu entwickeln, die von codebasiertem Reasoning profitieren und Textausgaben erzeugen. Beispielsweise könnten Sie die Code-Ausführung in einer Anwendung verwenden, die Gleichungen löst oder Texte verarbeitet.
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)

Kontext-Caching

Geminis native API aktiviert implizites Kontext-Caching standardmäßig – keine Einrichtung erforderlich. Für jede generate_content-Anfrage cacht das System automatisch den Eingabeinhalt. Wenn eine nachfolgende Anfrage exakt denselben Inhalt, dasselbe Modell und dieselben Parameter verwendet, gibt das System sofort das vorherige Ergebnis zurück, was die Antwortzeit erheblich beschleunigt und möglicherweise die Kosten für Eingabe-Token reduziert.
  • Caching erfolgt automatisch – keine manuelle Konfiguration erforderlich.
  • Der Cache wird nur getroffen, wenn Inhalt, Modell und alle Parameter exakt übereinstimmen; jede Abweichung führt zu einem Cache-Miss.
  • Die Cache-Lebensdauer (TTL) kann vom Entwickler festgelegt oder ungesetzt gelassen werden (Standard: 1 Stunde). Google erzwingt keine minimale oder maximale TTL. Die Kosten hängen von der Anzahl der gecachten Token und der Cache-Dauer ab.
    • Während Google die TTL nicht beschränkt, unterstützen wir als Weiterleitungsplattform nur einen begrenzten TTL-Bereich. Bei Anforderungen, die über die Grenzen unserer Plattform hinausgehen, kontaktieren Sie uns bitte.

Hinweise

  • Keine garantierten Kosteneinsparungen: Cache-Token werden mit 25 % des Standard-Eingabepreises abgerechnet – theoretisch kann Caching also bis zu 75 % der Kosten für Eingabe-Token einsparen. Allerdings garantiert die offizielle Google-Dokumentation keine Kosteneinsparungen; der tatsächliche Effekt hängt von Ihrer Cache-Trefferquote, den Token-Typen und der Speicherdauer ab.
  • Bedingungen für Cache-Treffer: Um die Cache-Effektivität zu maximieren, platzieren Sie wiederholbaren Kontext am Anfang Ihrer Eingabe und dynamische Inhalte (wie Benutzereingaben) am Ende.
  • So erkennen Sie Cache-Treffer: Wenn eine Antwort aus dem Cache stammt, enthält response.usage_metadata das Feld cache_tokens_details und cached_content_token_count. Damit können Sie die Cache-Nutzung feststellen.
    Beispielfelder bei einem Cache-Treffer:
    cache_tokens_details=[ModalityTokenCount(modality=<MediaModality.TEXT: 'TEXT'>, token_count=2003)]
    cached_content_token_count=2003
    
Codebeispiel:
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()
Bei einem Cache-Treffer enthält response.usage_metadata:
cache_tokens_details=[ModalityTokenCount(modality=<MediaModality.TEXT: 'TEXT'>, token_count=2003)]
cached_content_token_count=2003
Kernfazit: Implizites Caching erfolgt automatisch und liefert eindeutige Rückmeldung zu Cache-Treffern. Entwickler können usage_metadata auf den Cache-Status prüfen. Kosteneinsparungen sind nicht garantiert – der tatsächliche Nutzen hängt von der Anfragestruktur und den Cache-Trefferquoten ab.

Function Calling

Wenn Sie Geminis Function Calling über die OpenAI-kompatible Methode aufrufen, müssen Sie tool_choice="auto" im Anfragetext übergeben, andernfalls wird ein Fehler gemeldet.
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)
Ausgabebeispiel:
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)

Token-Verbrauch einfach nachverfolgen

  1. Gemini verfolgt den Token-Verbrauch über usage_metadata. Hier ist, was jedes Feld bedeutet:
    • prompt_token_count: Anzahl der Eingabe-Token
    • candidates_token_count: Anzahl der Ausgabe-Token
    • thoughts_token_count: Token, die während des Reasonings verwendet werden (zählen ebenfalls als Ausgabe)
    • total_token_count: Gesamte verwendete Token (Eingabe + Ausgabe)
    Weitere Details finden Sie in der offiziellen Dokumentation.
  2. Für APIs im OpenAI-kompatiblen Format wird der Token-Verbrauch unter .usage mit den folgenden Feldern verfolgt:
    • usage.completion_tokens: Anzahl der Eingabe-Token
    • usage.prompt_tokens: Anzahl der Ausgabe-Token (einschließlich Reasoning)
    • usage.total_tokens: Gesamter Token-Verbrauch

So verwenden Sie es im Code:
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()

Zuletzt aktualisiert: 2026-06-01