Skip to main content
Rig ist eine Rust-Bibliothek zum Erstellen von LLM-Apps und -Agenten. Seit Rig 0.42 wird ein First-Party-Provider venice ausgeliefert — Chat-Completions, Streaming, Tools, strukturierte Ausgaben, Embeddings, Transkription, Bildgenerierung und Sprache — direkt an die Venice-API angebunden, statt über den OpenAI-Client geleitet zu werden. Wenn Sie stattdessen einen reinen Axum-Proxy anstelle eines Agenten-Frameworks möchten, siehe Building a Rust LLM Gateway.

Voraussetzungen

  • Eine aktuelle stabile Rust-Toolchain (Rig 0.42 verwendet Edition 2024)
  • Rig 0.42 oder neuer
  • Ein Venice-API-Schlüssel

Einrichtung

Fügen Sie Ihren Venice-API-Schlüssel zur Umgebung hinzu. Optional können Sie den API-Host mit VENICE_BASE_URL überschreiben (der Provider verwendet standardmäßig https://api.venice.ai/api/v1):
Halten Sie API-Schlüssel aus der Versionskontrolle heraus. Bevorzugen Sie in der Produktion Umgebungsvariablen oder einen Secret-Manager.

Venice-Client konfigurieren

venice::Client::from_env() liest VENICE_API_KEY. Bringen Sie ProviderClient in den Gültigkeitsbereich:
Bevorzugen Sie venice::Client, statt Rigs OpenAI-Client auf Venice zu richten. Der Standard-openai::Client zielt auf die Responses-API von OpenAI ab. Der Venice-Provider spricht /chat/completions und stellt VeniceParameters bereit.
Die folgenden Snippets erhalten einen &venice::Client von from_env(). Crate-Konstanten wie venice::QWEN3_5_9B sind ein Ausgangspunkt — bestätigen Sie aktuelle IDs über GET /models.

Eine Antwort streamen

stream_prompt gibt eine Anfrage zurück, die Sie per .await in einen Stream umwandeln. Verwenden Sie rig::agent::stream_to_stdout, um Tokens zu drucken, sobald sie eintreffen:
Fügen Sie kein ? nach dem .await von stream_prompt hinzu — es liefert direkt den Stream, kein Result.

Strukturierte Ausgabe

Verwenden Sie einen Extraktor mit einem JsonSchema-Typ, um die Antwort des Modells zu validieren:
Sehen Sie sich Modelle an, die strukturierte Antworten und Function Calling unterstützen, bevor Sie in der Produktion auf tool-basierte Extraktion setzen.

Tools

Definieren Sie ein Tool mit #[rig_tool] (im Standard-derive-Feature von Rig enthalten). Der generierte Typ ist der Funktionsname in PascalCase:
Sie können rig::tool::Tool auch manuell implementieren, wenn Sie eigene Argumenttypen oder Fehlerbehandlung benötigen. Siehe Rigs Tool-Dokumentation.

Embeddings

Venice berücksichtigt das dimensions-Feld von OpenAI. Verwenden Sie embedding_model_with_ndims, wenn Sie eine bestimmte Breite anstelle der nativen Modellgröße wünschen.

Venice-spezifische Parameter

Übergeben Sie Venice-spezifische Optionen über VeniceParameters und führen Sie sie mit additional_params zusammen. So aktivieren Sie zum Beispiel die integrierte Websuche:
Um Web-Such-Zitate (und den cost-Block pro Anfrage) zu behalten, rufen Sie raw_completion auf dem Completion-Modell auf. Der normalisierte Agenten-Pfad verwirft diese Venice-spezifischen Felder:
VeniceParameters deckt außerdem Character-Slugs, Thinking-Steuerung, Web-Scraping, X-Suche und die Frage ab, ob Venices Standard-System-Prompt einbezogen werden soll. Siehe die API-Spezifikation für die vollständige venice_parameters-Liste.

Weitere Funktionen

Derselbe venice::Client treibt außerdem:
  • Transkriptionclient.transcription_model(venice::WHISPER_LARGE_V3)
  • Bildgenerierungclient.image_generation_model(...) (aktivieren Sie Rigs image-Feature)
  • Spracheclient.audio_generation_model(venice::TTS_KOKORO) (aktivieren Sie Rigs audio-Feature)
Video, Musik, Bildbearbeitung, /augment/* und Krypto-RPC haben kein Rig-Trait und werden nicht gekapselt. Rufen Sie diese Venice-Endpoints direkt auf.

Datenschutzvorteil

Rig wird häufig für Agenten eingesetzt, die auf Anwendungsdaten, Nutzerkontext oder interne Tools zugreifen. In Kombination mit Venice bleibt dieser Workflow auf privater, unzensierter Inferenz:
  • Zero Data Retention bei privaten Modellen — Prompts und Tool-Payloads werden nach der Anfrage nicht aufbewahrt
  • Unzensierte Analyse, wenn Agenten unverblümte Kritik oder Red-Teaming benötigen
  • Ein First-Party-Provider, sodass Sie OpenAI-Typen nicht auf Venices Dialekt umbiegen müssen

Fehlerbehebung

Vergewissern Sie sich, dass VENICE_API_KEY in dem Prozess gesetzt ist, der den Agenten ausführt. Starten Sie die Shell oder den Prozess nach dem Ändern von Umgebungsvariablen neu. from_env() liest OPENAI_API_KEY nicht.
Verwenden Sie eine aktuelle Modell-ID von der Modellseite oder GET /models. Crate-Konstanten wie venice::QWEN3_5_9B können hinter dem Live-Katalog zurückbleiben.
Verwenden Sie venice::Client, nicht openai::Client. Der OpenAI-Client verwendet standardmäßig die Responses-API, die bei Venice nur Alpha-Status hat.
Wählen Sie ein Modell, das Function Calling unterstützt, beschreiben Sie in der Preamble, wann Tools ausgeführt werden sollen, und halten Sie die Tool-Beschreibungen präzise — Rig erstellt JSON-Schemas aus #[rig_tool]-Signaturen und -Dokumenten.

Rig-Dokumentation

Agenten, Tools, Extraktoren und Provider

Venice-Modelle

Modelle und unterstützte Funktionen durchsuchen