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.
Unterstützte Modelle
Abschnitt betitelt „Unterstützte Modelle“| Modell | Kontext | Region | Hinweise |
|---|---|---|---|
gemma-4-31B-it |
128K | EU | Googles Gemma 4 31B mit Vision-Fähigkeiten |
Eine Anfrage mit einem Bild stellen
Abschnitt betitelt „Eine Anfrage mit einem Bild stellen“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.
-
Schritt 1
Erstellen Sie eine neue Python-Datei und kopieren Sie den unten stehenden Code.
from sambanova import SambaNovaimport base64client = SambaNova(base_url="https://api.infercom.ai/v1",api_key="ihr-infercom-api-schluessel",)# Hilfsfunktion zum Kodieren des Bildesdef 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 Bildimage_path = "beispiel.JPEG"# Der Base64-String des Bildesimage_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)from openai import OpenAIimport base64client = OpenAI(base_url="https://api.infercom.ai/v1",api_key="ihr-infercom-api-schluessel",)# Hilfsfunktion zum Kodieren des Bildesdef 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 Bildimage_path = "beispiel.JPEG"# Der Base64-String des Bildesimage_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) -
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. -
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 Bildimage_path = "beispiel.JPEG" -
Schritt 4
Überprüfen Sie den Prompt, der mit dem Bild im
content-Teil desuser-Prompts gepaart werden soll. -
Schritt 5
Führen Sie die Python-Datei aus, um die Textausgabe zu erhalten.
Tools und strukturierte Ausgabe mit Bildern
Abschnitt betitelt „Tools und strukturierte Ausgabe mit Bildern“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 OpenAIimport 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)curl -s "https://api.infercom.ai/v1/chat/completions" \ -H "Authorization: Bearer $INFERCOM_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "gemma-4-31B-it", "messages": [{"role": "user", "content": [ {"type": "text", "text": "Welche Farben erscheinen in diesem Bild?"}, {"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,<BASE64>"}} ]}], "response_format": { "type": "json_schema", "json_schema": { "name": "colors", "strict": true, "schema": { "type": "object", "properties": {"colors": {"type": "array", "items": {"type": "string"}}}, "required": ["colors"], "additionalProperties": false } } }, "max_tokens": 200, "temperature": 1.0 }'Den vollständigen Ablauf für Tool-Aufrufe finden Sie unter Function Calling und JSON-Modus.
Fehlerhafte Bilddaten
Abschnitt betitelt „Fehlerhafte Bilddaten“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.
Bild-Tokens zählen zum Kontextlimit
Abschnitt betitelt „Bild-Tokens zählen zum Kontextlimit“Bilder verbrauchen Prompt-Tokens. Ein großes Bild zusammen mit einem langen Prompt kann das Kontextlimit des Modells von 128K überschreiten und einen context_length_exceeded-Fehler zurückgeben. Prüfen Sie usage.prompt_tokens in der Antwort, um zu sehen, wie viele Tokens ein Bild kostet.