Skip to main content
Rig est une bibliothèque Rust pour construire des applications et des agents LLM. Depuis Rig 0.42, elle inclut un fournisseur natif venice — chat completions, streaming, outils, sortie structurée, embeddings, transcription, génération d’images et speech — connecté à l’API de Venice plutôt qu’acheminé via le client OpenAI. Si vous préférez un proxy Axum brut plutôt qu’un framework d’agents, consultez Créer une passerelle LLM en Rust.

Prérequis

  • Une chaîne d’outils Rust stable récente (Rig 0.42 utilise l’edition 2024)
  • Rig 0.42 ou version ultérieure
  • Une clé d’API Venice

Installation

Ajoutez votre clé d’API Venice à l’environnement. Vous pouvez éventuellement remplacer l’hôte de l’API avec VENICE_BASE_URL (le fournisseur utilise par défaut https://api.venice.ai/api/v1) :
Gardez les clés d’API hors du contrôle de version. Préférez les variables d’environnement ou un gestionnaire de secrets en production.

Configurer le client Venice

venice::Client::from_env() lit VENICE_API_KEY. Importez ProviderClient dans la portée :
Préférez venice::Client plutôt que de pointer le client OpenAI de Rig vers Venice. Le client par défaut openai::Client cible l’API Responses d’OpenAI. Le fournisseur Venice parle /chat/completions et expose VeniceParameters.
Les extraits ci-dessous prennent un &venice::Client issu de from_env(). Les constantes du crate telles que venice::QWEN3_5_9B sont un point de départ — confirmez les identifiants actuels avec GET /models.

Diffuser une réponse en streaming

stream_prompt renvoie une requête que vous transformez en flux avec .await. Utilisez rig::agent::stream_to_stdout pour afficher les tokens au fur et à mesure qu’ils arrivent :
N’ajoutez pas ? après .await sur stream_prompt — cette méthode retourne directement le flux, pas un Result.

Sortie structurée

Utilisez un extractor avec un type JsonSchema pour valider la réponse du modèle :
Parcourez les modèles qui prennent en charge les réponses structurées et le function calling avant de vous appuyer sur l’extraction basée sur les outils en production.

Outils

Définissez un outil avec #[rig_tool] (inclus avec la feature derive par défaut de Rig). Le type généré est le nom de la fonction en PascalCase :
Vous pouvez également implémenter rig::tool::Tool manuellement lorsque vous avez besoin de types d’arguments ou d’une gestion d’erreurs personnalisés. Consultez la documentation des outils de Rig.

Embeddings

Venice respecte le champ dimensions d’OpenAI. Utilisez embedding_model_with_ndims lorsque vous souhaitez une largeur spécifique plutôt que la taille native du modèle.

Paramètres spécifiques à Venice

Passez les options propres à Venice via VeniceParameters et fusionnez-les avec additional_params. Par exemple, activez la recherche web intégrée :
Pour conserver les citations de la recherche web (ainsi que le bloc cost par requête), appelez raw_completion sur le modèle de completion. Le chemin d’agent normalisé supprime ces champs propres à Venice :
VeniceParameters couvre également les slugs de personnages, les contrôles de raisonnement, le web scraping, la recherche X et l’inclusion ou non du prompt système par défaut de Venice. Consultez la spécification de l’API pour la liste complète des venice_parameters.

Autres capacités

Le même venice::Client pilote également :
  • Transcriptionclient.transcription_model(venice::WHISPER_LARGE_V3)
  • Génération d’imagesclient.image_generation_model(...) (activez la feature image de Rig)
  • Speechclient.audio_generation_model(venice::TTS_KOKORO) (activez la feature audio de Rig)
La vidéo, la musique, l’édition d’images, /augment/* et le RPC crypto n’ont pas de trait Rig et ne sont pas encapsulés. Appelez directement ces endpoints Venice.

Avantage en matière de confidentialité

Rig est souvent utilisé pour des agents qui touchent aux données d’application, au contexte utilisateur ou aux outils internes. L’associer à Venice permet de maintenir ce workflow sur une inférence privée et non censurée :
  • Zéro rétention des données sur les modèles privés — les prompts et les charges utiles d’outils ne sont pas conservés après la requête
  • Analyse non censurée lorsque les agents ont besoin d’une critique franche ou d’exercices de red-teaming
  • Un fournisseur natif afin de ne pas avoir à remapper les types OpenAI sur le dialecte de Venice

Dépannage

Vérifiez que VENICE_API_KEY est définie dans le processus qui exécute l’agent. Redémarrez le shell ou le processus après avoir modifié les variables d’environnement. from_env() ne lit pas OPENAI_API_KEY.
Utilisez un identifiant de modèle actuel depuis la page des modèles ou GET /models. Les constantes du crate telles que venice::QWEN3_5_9B peuvent être en retard par rapport au catalogue en direct.
Utilisez venice::Client, pas openai::Client. Le client OpenAI cible par défaut l’API Responses, qui n’est disponible qu’en alpha sur Venice.
Choisissez un modèle qui prend en charge le function calling, décrivez dans le préambule quand les outils doivent être invoqués et gardez les descriptions d’outils précises — Rig construit des schémas JSON à partir des signatures et de la documentation #[rig_tool].

Documentation Rig

Agents, outils, extractors et fournisseurs

Modèles Venice

Parcourez les modèles et les capacités prises en charge