Zum Inhalt springen
InfercomInfercomInfercom Documentation

Funktionen

Vision- und Multimodalitätsfunktionen implementieren - Entwicklerhandbuch

Verarbeiten Sie Bilder mit dem EU-souveränen Vision-Modell von Infercom. Analysieren Sie Bilder und generieren Sie kontextbewusste Textantworten mit vollständiger DSGVO-Konformität.

Infercom bietet Zugang zu vision-fähigen Modellen auf unserer EU-souveränen Infrastruktur, die es Ihnen ermöglicht, sowohl Text als auch Bilder mit vollständiger Datensouveränität zu verarbeiten. Diese Modelle analysieren Bilder und generieren kontextbewusste Textantworten.

Modell Kontext Region Hinweise
gemma-4-31B-it 128K EU Googles Gemma 4 31B mit Vision-Fähigkeiten
MiniMax-M3.1-Flash 1M Nicht-EU Global Model Catalog, Verarbeitung außerhalb der EU

Bei Infercom folgt die Vision-Modellanfrage dem multimodalen Eingabeformat von OpenAI, das sowohl Text- als auch Bildeingaben in einer strukturierten Payload akzeptiert. Während der Aufruf ähnlich der Textgenerierung ist, unterscheidet er sich durch die Einbeziehung einer kodierten Bilddatei, die über die Variable image_path referenziert wird. Eine Hilfsfunktion wird verwendet, um dieses Bild in einen Base64-String zu konvertieren, wodurch es zusammen mit dem Text in der Anfrage übergeben werden kann.

Senden Sie jedes Bild als Base64-Data-URL im Format JPEG, PNG oder WebP, zum Beispiel data:image/jpeg;base64,.... Eine https-URL gibt bei jedem Vision-Modell einen Fehler zurück. Andere Formate geben bei gemma-4-31B-it einen Fehler zurück: siehe Bild-URL oder nicht unterstütztes Format.

  1. Schritt 1

    Erstellen Sie eine neue Python-Datei und kopieren Sie den unten stehenden Code.

    from sambanova import SambaNova
    import base64
    client = SambaNova(
    base_url="https://api.infercom.ai/v1",
    api_key="ihr-infercom-api-schluessel",
    )
    # Hilfsfunktion zum Kodieren des Bildes
    def encode_image(image_path):
    with open(image_path, "rb") as image_file:
    return base64.b64encode(image_file.read()).decode('utf-8')
    # Der Pfad zu Ihrem Bild
    image_path = "beispiel.JPEG"
    # Der Base64-String des Bildes
    image_base64 = encode_image(image_path)
    print(image_base64)
    response = client.chat.completions.create(
    model="gemma-4-31B-it",
    messages=[
    {
    "role": "user",
    "content": [
    {"type": "text", "text": "Was passiert in diesem Bild?"},
    {"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{image_base64}"}}
    ]
    }
    ]
    )
    print(response.choices[0].message.content)
  2. Schritt 2

    Verwenden Sie Ihren Infercom API-Schlüssel von der Seite API-Schlüssel und URLs, um den Platzhalter "ihr-infercom-api-schluessel" in der Konstruktion des Clients zu ersetzen.

  3. Schritt 3

    Wählen Sie ein Bild aus und verschieben Sie es zu einem geeigneten Pfad, den Sie in den Zeilen angeben können.

    # Der Pfad zu Ihrem Bild
    image_path = "beispiel.JPEG"
  4. Schritt 4

    Überprüfen Sie den Prompt, der mit dem Bild im content-Teil des user-Prompts gepaart werden soll.

  5. Schritt 5

    Führen Sie die Python-Datei aus, um die Textausgabe zu erhalten.

Vision-Anfragen unterstützen dieselben Optionen tools, tool_choice und response_format wie reine Textanfragen. Die Einschränkung wird während der Generierung angewendet. Ein erzwungener Tool-Aufruf oder ein striktes JSON-Schema wird daher auch bei einer Anfrage mit Bild eingehalten.

Option Verhalten bei einer Anfrage mit Bild
tool_choice mit einem Funktionsnamen Das Modell gibt diesen Tool-Aufruf zurück. finish_reason ist tool_calls
tool_choice: "none" Das Modell gibt reinen Text zurück. finish_reason ist stop
response_format: {"type": "json_schema", ...} Das Modell gibt JSON zurück, das dem Schema entspricht
from openai import OpenAI
import base64
client = OpenAI(
base_url="https://api.infercom.ai/v1",
api_key="ihr-infercom-api-schluessel",
)
with open("beispiel.JPEG", "rb") as image_file:
image_base64 = base64.b64encode(image_file.read()).decode("utf-8")
tools = [{
"type": "function",
"function": {
"name": "report_colors",
"parameters": {
"type": "object",
"properties": {"colors": {"type": "array", "items": {"type": "string"}}},
"required": ["colors"],
},
},
}]
response = client.chat.completions.create(
model="gemma-4-31B-it",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "Welche Farben erscheinen in diesem Bild?"},
{"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{image_base64}"}},
],
}
],
tools=tools,
tool_choice={"type": "function", "function": {"name": "report_colors"}},
max_tokens=200,
temperature=1.0,
)
print(response.choices[0].message.tool_calls[0].function.arguments)

Den vollständigen Ablauf für Tool-Aufrufe finden Sie unter Function Calling und JSON-Modus.

Dieser Abschnitt gilt für gemma-4-31B-it. Andere Vision-Modelle verwenden andere Bild-Budgets.

gemma-4-31B-it verwendet die Standard-Bildverarbeitung von Gemma 4 mit dem Standard-Budget von 280 visuellen Tokens. Der Prozessor skaliert jedes Bild auf dieses Budget und behält das Seitenverhältnis bei. Jedes Bild kostet seine visuellen Tokens plus 2 Tokens, die Anfang und Ende des Bildes markieren. Ein quadratisches Bild kostet unabhängig von seiner Größe 258 Prompt-Tokens (256 + 2). Andere Seitenverhältnisse kosten bis zu 282. usage.prompt_tokens zeigt die genaue Zahl.

Gemma 4 definiert auch Budgets von 70 bis 1120 Tokens (Gemma 4 Vision-Dokumentation). Die API verwendet nur das Standard-Budget: detail und max_soft_tokens haben keine Wirkung. Für feine Details, zum Beispiel kleine Schrift, teilen Sie ein großes Bild in Teile und senden Sie jeden Teil als eigenes Bild. Jeder Teil erhält ein eigenes Budget von 280 Tokens.

Wenn die API Ihr Bild nicht dekodieren kann, gibt sie HTTP 400 zurück. Dies ist ein permanenter Fehler. Wiederholen Sie die Anfrage nicht. Prüfen Sie, ob der Base64-String vollständig ist und ob der MIME-Typ in der data:-URL zur Datei passt.

Bei gemma-4-31B-it gibt eine https-URL oder eine Data-URL in einem anderen Format als JPEG, PNG oder WebP (zum Beispiel GIF) HTTP 500 zurück. Wiederholen Sie die Anfrage nicht. Senden Sie das Bild als Base64-Data-URL.

{
"error": "`image_url` must start with 'data:image/<jpeg|jpg|png|webp>;base64,'",
"error_code": null,
"error_param": null,
"error_type": "Error"
}

Bei MiniMax-M3.1-Flash gibt eine https-URL HTTP 400 mit error_type invalid_request_error zurück.

Bei gemma-4-31B-it zählt jedes Bild mit bis zu 282 Tokens zum Kontextlimit von 128K. Eine Anfrage über dem Limit gibt einen context_length_exceeded-Fehler zurück.