Skip to main content
Rig es una biblioteca de Rust para crear aplicaciones y agentes de LLM. A partir de Rig 0.42, incluye un proveedor nativo venice — chat completions, streaming, herramientas, salida estructurada, embeddings, transcripción, generación de imágenes y voz — conectado directamente a la API de Venice en lugar de canalizarse a través del cliente de OpenAI. Si prefieres un proxy Axum en crudo en lugar de un framework de agentes, consulta Cómo crear un LLM Gateway en Rust.

Requisitos previos

  • Un toolchain estable reciente de Rust (Rig 0.42 utiliza edition 2024)
  • Rig 0.42 o posterior
  • Una clave de API de Venice

Configuración

Añade tu clave de API de Venice al entorno. Opcionalmente puedes sobrescribir el host de la API con VENICE_BASE_URL (el proveedor usa por defecto https://api.venice.ai/api/v1):
Mantén las claves de API fuera del control de código fuente. En producción, es preferible utilizar variables de entorno o un gestor de secretos.

Configurar el cliente de Venice

venice::Client::from_env() lee VENICE_API_KEY. Trae ProviderClient al ámbito:
Utiliza venice::Client en lugar de apuntar el cliente de OpenAI de Rig a Venice. El cliente openai::Client predeterminado apunta a la API Responses de OpenAI. El proveedor de Venice habla /chat/completions y expone VeniceParameters.
Los fragmentos siguientes toman un &venice::Client de from_env(). Las constantes del crate como venice::QWEN3_5_9B son un punto de partida — confirma los IDs actuales con GET /models.

Transmitir una respuesta

stream_prompt devuelve una solicitud que puedes usar con .await para convertirla en un stream. Usa rig::agent::stream_to_stdout para imprimir los tokens a medida que llegan:
No añadas ? después de .await en stream_prompt — produce el stream directamente, no un Result.

Salida estructurada

Usa un extractor con un tipo JsonSchema para validar la respuesta del modelo:
Explora los modelos que admiten respuestas estructuradas y llamadas a funciones antes de basarte en la extracción por herramientas en producción.

Herramientas

Define una herramienta con #[rig_tool] (incluido con la feature derive predeterminada de Rig). El tipo generado es el nombre de la función en PascalCase:
También puedes implementar rig::tool::Tool a mano cuando necesites tipos de argumentos o manejo de errores personalizados. Consulta la documentación de herramientas de Rig.

Embeddings

Venice respeta el campo dimensions de OpenAI. Utiliza embedding_model_with_ndims cuando quieras un ancho específico en lugar del tamaño nativo del modelo.

Parámetros específicos de Venice

Pasa las opciones exclusivas de Venice a través de VeniceParameters y combínalas con additional_params. Por ejemplo, habilita la búsqueda web integrada:
Para conservar las citas de la búsqueda web (y el bloque cost por solicitud), llama a raw_completion en el modelo de completions. La ruta de agente normalizada elimina esos campos exclusivos de Venice:
VeniceParameters también cubre slugs de personajes, controles de pensamiento (thinking), web scraping, búsqueda en X, y si se debe incluir el prompt de sistema predeterminado de Venice. Consulta la especificación de la API para ver la lista completa de venice_parameters.

Otras capacidades

El mismo venice::Client también impulsa:
  • Transcripciónclient.transcription_model(venice::WHISPER_LARGE_V3)
  • Generación de imágenesclient.image_generation_model(...) (habilita la feature image de Rig)
  • Vozclient.audio_generation_model(venice::TTS_KOKORO) (habilita la feature audio de Rig)
Video, música, edición de imágenes, /augment/* y crypto RPC no tienen un trait de Rig y no están envueltos. Llama a esos endpoints de Venice directamente.

Ventaja de privacidad

Rig se utiliza a menudo para agentes que acceden a datos de aplicaciones, contexto del usuario o herramientas internas. Combinarlo con Venice mantiene ese flujo de trabajo sobre inferencia privada y sin censura:
  • Retención cero de datos en modelos privados — los prompts y las cargas útiles de herramientas no se conservan después de la solicitud
  • Análisis sin censura cuando los agentes necesitan una crítica directa o red-teaming
  • Un proveedor nativo para que no tengas que remapear los tipos de OpenAI al dialecto de Venice

Solución de problemas

Confirma que VENICE_API_KEY esté establecida en el proceso que ejecuta el agente. Reinicia la shell o el proceso después de cambiar las variables de entorno. from_env() no lee OPENAI_API_KEY.
Utiliza un ID de modelo actual de la página de modelos o de GET /models. Las constantes del crate como venice::QWEN3_5_9B pueden estar desactualizadas respecto al catálogo en vivo.
Utiliza venice::Client, no openai::Client. El cliente de OpenAI usa por defecto la API Responses, que solo está en alfa en Venice.
Elige un modelo que admita llamadas a funciones, describe en el preámbulo cuándo deben ejecutarse las herramientas y mantén las descripciones de las herramientas precisas — Rig construye los esquemas JSON a partir de las firmas y la documentación de #[rig_tool].

Documentación de Rig

Agentes, herramientas, extractores y proveedores

Modelos de Venice

Explora los modelos y las capacidades compatibles