Skip to main content
Rig è una libreria Rust per costruire app e agenti LLM. A partire da Rig 0.42 include un provider venice first-party — chat completions, streaming, strumenti, output strutturato, embedding, trascrizione, generazione di immagini e speech — collegato direttamente all’API di Venice invece di passare attraverso il client OpenAI. Se preferisci un proxy Axum grezzo anziché un framework per agenti, consulta Building a Rust LLM Gateway.

Prerequisiti

  • Una toolchain Rust stabile recente (Rig 0.42 usa edition 2024)
  • Rig 0.42 o versione successiva
  • Una API key Venice

Setup

Aggiungi la tua API key Venice all’ambiente. Puoi opzionalmente sovrascrivere l’host API con VENICE_BASE_URL (il provider usa come default https://api.venice.ai/api/v1):
Non inserire le API key nel controllo del codice sorgente. In produzione preferisci variabili d’ambiente o un secret manager.

Configurare il client Venice

venice::Client::from_env() legge VENICE_API_KEY. Porta ProviderClient nello scope:
Preferisci venice::Client invece di puntare il client OpenAI di Rig verso Venice. Il openai::Client predefinito ha come target la Responses API di OpenAI. Il provider Venice parla /chat/completions ed espone VeniceParameters.
Gli snippet qui sotto prendono un &venice::Client da from_env(). Le costanti del crate come venice::QWEN3_5_9B sono un punto di partenza — verifica gli ID correnti con GET /models.

Effettuare lo streaming di una risposta

stream_prompt restituisce una richiesta su cui fai .await per ottenere uno stream. Usa rig::agent::stream_to_stdout per stampare i token man mano che arrivano:
Non aggiungere ? dopo .await su stream_prompt — restituisce direttamente lo stream, non un Result.

Output strutturato

Usa un extractor con un tipo JsonSchema per validare la risposta del modello:
Esplora i modelli che supportano risposte strutturate e function calling prima di affidarti in produzione all’estrazione basata su strumenti.

Strumenti

Definisci uno strumento con #[rig_tool] (incluso con la feature derive di default di Rig). Il tipo generato è il nome della funzione in PascalCase:
Puoi anche implementare rig::tool::Tool manualmente quando hai bisogno di tipi di argomento o gestione degli errori personalizzati. Consulta la documentazione degli strumenti di Rig.

Embedding

Venice rispetta il campo dimensions di OpenAI. Usa embedding_model_with_ndims quando desideri una specifica ampiezza anziché la dimensione nativa del modello.

Parametri specifici di Venice

Passa le opzioni esclusive di Venice tramite VeniceParameters e uniscile con additional_params. Ad esempio, per abilitare la ricerca web integrata:
Per mantenere le citazioni della ricerca web (e il blocco cost per richiesta), chiama raw_completion sul completion model. Il percorso agent normalizzato scarta questi campi specifici di Venice:
VeniceParameters copre anche gli slug dei personaggi, i controlli di thinking, il web scraping, la ricerca su X e la scelta se includere il system prompt predefinito di Venice. Consulta la specifica API per l’elenco completo di venice_parameters.

Altre funzionalità

Lo stesso venice::Client supporta anche:
  • Trascrizioneclient.transcription_model(venice::WHISPER_LARGE_V3)
  • Generazione di immaginiclient.image_generation_model(...) (abilita la feature image di Rig)
  • Speechclient.audio_generation_model(venice::TTS_KOKORO) (abilita la feature audio di Rig)
Video, musica, editing di immagini, /augment/* e RPC crypto non hanno un trait di Rig e non sono wrappati. Chiama direttamente quegli endpoint Venice.

Vantaggio in termini di privacy

Rig viene spesso usato per agenti che accedono a dati applicativi, contesto utente o strumenti interni. Abbinarlo a Venice mantiene quel workflow su un’inferenza privata e senza censura:
  • Zero data retention sui modelli privati — prompt e payload degli strumenti non vengono conservati dopo la richiesta
  • Analisi senza censura quando gli agenti hanno bisogno di critiche schiette o red-teaming
  • Un provider first-party così non devi rimappare i tipi OpenAI sul dialetto di Venice

Troubleshooting

Verifica che VENICE_API_KEY sia impostata nel processo che esegue l’agente. Riavvia la shell o il processo dopo aver modificato le variabili d’ambiente. from_env() non legge OPENAI_API_KEY.
Usa un ID modello aggiornato dalla pagina dei modelli o da GET /models. Le costanti del crate come venice::QWEN3_5_9B possono essere in ritardo rispetto al catalogo live.
Usa venice::Client, non openai::Client. Il client OpenAI usa come default la Responses API, che su Venice è solo in alpha.
Scegli un modello che supporti il function calling, descrivi nel preamble quando gli strumenti devono essere eseguiti e mantieni le descrizioni degli strumenti precise — Rig costruisce gli schemi JSON dalle signature e dai docs di #[rig_tool].

Documentazione Rig

Agenti, strumenti, extractor e provider

Modelli Venice

Esplora i modelli e le funzionalità supportate