rig-volcengine
Rig adapter for Volcengine (ByteDance Ark/Doubao). This crate integrates Volcengine’s OpenAI‑compatible APIs into the Rig ecosystem with a consistent, strongly‑typed interface for:
- Chat completions (agents)
- Text embeddings
- Streaming responses
Use this adapter to swap Volcengine in and out with other providers supported by Rig with minimal code changes.
Documentation: https://docs.rs/rig-volcengine Repository: https://github.com/ooiai/rig-extend
Features
- Consistent Rig API surface:
Client::from_env()andClient::builder(...).agent(model),.embeddings(model)
- Chat completion with context stacking (agents)
- Text embedding builders with
derive(Embed) - Streaming support aligned with Rig semantics
- Sensible defaults and environment‑based configuration
Key constants:
VOLCENGINE_API_BASE_URL: default base URL (https://ark.cn-beijing.volces.com/api/v3)TEXT_DOUBAO_EMBEDDING,TEXT_DOUBAO_EMBEDDING_LARGE: convenience model ids for embeddingsDOUBAO_SEED: a convenience seed value for Doubao (if needed by your flow)
Installation
From crates.io (recommended):
[]
= "0.1"
= "0.28.0" # Rig core
= "0.1.10" # Optional: for derive macros like Embed
From a workspace/path (if you’re developing locally):
[]
= { = "../rig-volcengine" }
= "0.28.0"
= "0.1.10"
Configuration (Environment Variables)
VOLCENGINE_API_KEY(required): Your Volcengine API key.VOLCENGINE_BASE_URL(optional): Override API base. Defaults to:https://ark.cn-beijing.volces.com/api/v3.
Example:
# export VOLCENGINE_BASE_URL="https://ark.cn-beijing.volces.com/api/v3"
Quick Start
Below are minimal snippets for chat and embeddings.
Chat (Agent)
use Prompt;
use *;
async
Embeddings
use Embed;
use *;
use Embed;
async
Examples
More end‑to‑end samples are available in this crate’s examples directory:
agent_wirh_volcengine.rsvolcengine_embeddings.rs
Run from this crate directory:
# Make sure VOLCENGINE_API_KEY is set
Versioning and Compatibility
- Rust edition: 2024
- This crate aligns its public surface with the Rig core abstractions. Check your
rig-corecrate version for compatibility (examples userig-core = "0.28.0").
License
MIT. See the LICENSE file (or package metadata) for details.