Midterms 2026Wer nach unseren Maßstäben Ihre Stimme verdientZum Leitfaden →
GESCHRIEBEN IN KLAREM DEUTSCH.
CLAY TRIBUNE.
Anzeige

Ein Single-Function-Wrapper wandelt Webcam-Frames mithilfe von LLM-Logprobs in für Menschen lesbare Szenenbewertungen um. )

Ein Python-Wrapper zwingt ein LLM, einen einzelnen Buchstaben aus einer Liste von Optionen auszuwählen und beurteilt Webcam-Szenen in lesbare Urteile.

Von mitch·5 Min. Lesezeit
A laptop displays a Python script output with human-readable judgments about a webcam scene.

Ein einzelnes Python-Skript wandelt Kamerabilder in einen Strom von für Menschen lesbaren Urteilen darüber um, was sich in der Szene befindet, mithilfe eines cleveren Tricks, der ein LLM dazu zwingt, einen einzelnen Buchstaben aus einer Liste von Optionen auszuwählen. Der Trick stammt von einem Projekt namens Jev und dessen Ablegern, und funktioniert sowohl für Text als auch für Bilder.

Die Technik beinhaltet das Schreiben eines Prompts, der ein LLM auffordert, die beste Antwort aus einem festen Satz von Optionen auszuwählen, und das Hinzufügen einiger JSON-Request-Parameter zu einem kompatiblen Chat Completions-Aufruf. Die LLM-API gibt den Buchstaben der gewählten Antwort zusammen mit den Log-Wahrscheinlichkeiten des Modells für andere mögliche Tokens zurück. Wiederholen Sie dies für jede Frage, und Sie erhalten eine schnelle, wiederholbare Möglichkeit, visuelle Inhalte zu bewerten, ohne eine benutzerdefinierte Vision-Pipeline erstellen zu müssen.

Der Prompt-Trick

Die Kernidee ist einfach. Sie schreiben einen Prompt wie diesen:

Anzeige

State: My order arrived broken and I want a refund. Question: Which team should handle this? [A] billing [B] shipping [C] returns Answer with the letter of the best option only.

Dann fügen Sie einige Request-Parameter hinzu:

json
{
"max_completion_tokens": 1,
"logprobs": true,
"top_logprobs": 20
}

Die Beschränkung des Modells auf die Generierung von nur einem Token vermeidet eine lange Antwort und ist super schnell. Die Verarbeitung des Inputs kostet zwar immer noch Zeit. Ein gemeinsamer Zustandspräfix kann KV-gecached werden, falls das Backend dies unterstützt.

Vision-Modelle Auch

The trick extends to vision models. Jev’s documented request format currently describes only text/JSON state, but the author added an attachments field for images in their local experiments. The example captures webcam frames, sends base64 JPEGs, and prints a table showing whether a person is visible, whether the scene is indoors or outdoors, and how bright it is.

Auf einem Gemma 4 12B, das auf einer RTX 3090 läuft, erreicht das Setup etwa 1 Frame pro Sekunde, mit drei Fragen pro Frame. Gegenüber OpenAI’s gpt-6-luna fällt die Rate auf etwa 0,2 FPS. Diese langsamere Geschwindigkeit ist wahrscheinlich darauf zurückzuführen, dass das Setup keine Anstrengungen unternimmt, um die Kosten für eine separate Verbindung über das OpenAI-System pro Frage pro Frame zu vermeiden.

Spezialisierte Computer-Vision-Modelle sind sicherlich effizienter, aber der Autor schätzt die Flexibilität, eine Bedingung zu ändern, indem er sie in einfachem Text beschreibt.

Das Standalone-Skript

Das vollständige Skript ist ein eigenständiges Python-Beispiel. Es verwendet OpenCV nur für den bequemen Zugriff auf die Webcam, nicht für eine tatsächliche Computer-Vision. Die Abhängigkeiten sind einfach: opencv-python, sowie Standardbibliotheken wie argparse, base64 und urllib.

The data structure is a JSON blob with a state, attachments, and questions section. The attachments field holds image file paths or base64 data URLs. The script loads them once for all questions, guessing MIME types and raising a ValueError on unsupported formats.

„Geben Sie 2 bis 20 Kriterien pro Frage an.“

The questions section maps each query to a type: choice, noul, or score. Choices are lettered options like [A] billing [B] shipping [C] returns. Booleans and ordinal levels are represented as lettered options too, with a range of 2 to 20 criteria allowed per question.

Senden der Anfragen )

The script sends requests to two endpoints depending on the provider. For OpenAI, the endpoint is /responses and the content includes both text and image inputs. The request body sets top_p=1 to avoid pruning alternatives.

For llama.cpp, the endpoint is /chat/completions, and the content is text only. The body asks for a single completion token with temperature=0 and logprobs=true.

Wie es funktioniert )

The script handles image attachments by encoding them as base64 strings and attaching them to the request payload. The JSON structure includes the attachments field, which the author added to extend Jev’s documented request format. The MIME guessing happens in the script itself, where the author raises a ValueError on unsupported image file types.

Die Prompt-Konstruktion ist sowohl für Text- als auch für Bildfragen konsistent. Jede Frage wird als nummerierte Liste von Optionen formuliert, und das Modell wird gezwungen, mit einem einzigen Buchstaben seine Wahl anzugeben. Die mit diesem Buchstaben zurückgegebenen Log-Wahrscheinlichkeiten zeigen das Vertrauen des Modells in seine Auswahl.

Leistungsdaten )

Der Autor meldet etwa 1 Frame pro Sekunde auf einem Gemma 4 12B mit einer RTX 3090, mit drei Fragen pro Frame. Gegen OpenAI’s gpt-6-luna sinkt die Rate auf etwa 0,2 FPS. Der Unterschied rührt wahrscheinlich von der separaten Verbindung her, die für jede Frage pro Frame über das OpenAI-System benötigt wird.

Spezialisierte Computer-Vision-Modelle sind sicherlich effizienter, aber der Fokus des Autors liegt weiterhin auf Flexibilität: einer Bedingung zu ändern, indem man sie in einfachem Text beschreibt.

Was es zeigt )

Das Skript ist ein Proof of Concept, kein produktionsreifes Werkzeug. Es funktioniert über Anbieter hinweg, und der Autor erweiterte Jev’s Anfrageformat um ein benutzerdefiniertes Feld, lud Bilder von Pfaden oder URLs hoch und verpackte das Ganze in ein Skript, das jeder ausführen kann.

Die Leistungsdaten sind wichtig. Ein Frame pro Sekunde auf einer leistungsstarken Konfiguration ist vernünftig für Vorab-Arbeiten, während die OpenAI-Rate von 0,2 FPS die Kosten für das Hin- und Herreisen über eine öffentliche API zeigt. Der Vergleich mit spezialisierten Modellen deutet auf Verbesserungsmöglichkeiten hin, aber der Fokus des Autors auf Flexibilität gegenüber Effizienz ist klar.

Der Trick ist nicht neu für jeden. OpenAIs Logprobs Cookbook dokumentiert den Ansatz, und ähnliche selbst-hostable Projekte wie OpenJev und SemIf bauen darauf auf. Der Autor fand ihn aber neu.

Die Kernidee ist fundiert, und der Code steht für jeden zur Verfügung, der ihn ausprobieren möchte. Der Enthusiasmus des Autors ist ansteckend. Sie fanden einen Trick, den sie noch nicht gesehen hatten, bauten ein Skript darum herum und veröffentlichten es für andere zur Verwendung. Das ist der Hacker-Geist in Aktion.

Quellenmaterial: „A single function Jev-like wrapper for LLMs, including vision models“, allanrbo.blogspot.com.

Das Notizbuch

Das Notizbuch abonnieren.

Die besten Geschichten des Tages und jedes neue Urteil, in klarem Deutsch, um sieben im Postfach. Eine Mail am Tag, nicht mehr.

Wir schicken eine Bestätigungsmail. Jede Ausgabe hat einen Abmeldelink, ein Klick genügt.

Anzeige

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Als Amazon-Partner verdient Clay Tribune an qualifizierten Verkäufen.