venice 프로바이더가 기본 제공되며, 채팅 완성, 스트리밍, 툴, 구조화된 출력, 임베딩, 트랜스크립션, 이미지 생성, 스피치가 OpenAI 클라이언트를 우회하지 않고 Venice API에 직접 연결됩니다.
에이전트 프레임워크가 아니라 순수 Axum 프록시가 필요하다면 Building a Rust LLM Gateway를 참조하세요.
사전 요구 사항
- 최신 stable Rust 툴체인 (Rig 0.42는 edition 2024 사용)
- Rig 0.42 이상
- Venice API 키
설정
VENICE_BASE_URL로 API 호스트를 재정의할 수 있습니다(프로바이더 기본값은 https://api.venice.ai/api/v1):
Venice 클라이언트 구성
venice::Client::from_env()는 VENICE_API_KEY를 읽습니다. ProviderClient를 스코프에 가져오세요:
Rig의 OpenAI 클라이언트를 Venice로 지정하는 방식보다
venice::Client를 선호하세요. 기본 openai::Client는 OpenAI의 Responses API를 대상으로 합니다. Venice 프로바이더는 /chat/completions를 사용하며 VeniceParameters를 노출합니다.from_env()에서 얻은 &venice::Client를 받습니다. venice::QWEN3_5_9B 같은 크레이트 상수는 출발점일 뿐이므로 GET /models로 현재 ID를 확인하세요.
응답 스트리밍
stream_prompt는 .await하여 스트림으로 만들 수 있는 요청을 반환합니다. 토큰이 도착하는 대로 출력하려면 rig::agent::stream_to_stdout을 사용하세요:
stream_prompt의 .await 뒤에 ?를 추가하지 마세요. Result가 아니라 스트림을 직접 반환합니다.
구조화된 출력
JsonSchema 타입과 함께 익스트랙터를 사용하여 모델 답변을 검증하세요:
툴
#[rig_tool](Rig의 기본 derive 기능에 포함됨)로 툴을 정의하세요. 생성되는 타입은 함수명을 PascalCase로 변환한 이름입니다:
rig::tool::Tool을 직접 구현할 수도 있습니다. Rig의 툴 문서를 참조하세요.
임베딩
dimensions 필드를 존중합니다. 모델의 기본 크기가 아닌 특정 차원 수가 필요하다면 embedding_model_with_ndims를 사용하세요.
Venice 전용 파라미터
Venice 전용 옵션은VeniceParameters로 전달하고 additional_params와 병합하세요. 예를 들어 내장 웹 검색을 활성화하려면:
cost 블록)을 유지하려면 완성 모델에서 raw_completion을 호출하세요. 정규화된 에이전트 경로는 이런 Venice 전용 필드를 삭제합니다:
VeniceParameters는 캐릭터 슬러그, 사고(thinking) 제어, 웹 스크래핑, X 검색, Venice의 기본 시스템 프롬프트 포함 여부도 함께 다룹니다. 전체 venice_parameters 목록은 API 스펙을 참조하세요.
기타 기능
동일한venice::Client는 다음도 구동합니다:
- 트랜스크립션 —
client.transcription_model(venice::WHISPER_LARGE_V3) - 이미지 생성 —
client.image_generation_model(...)(Rig의image기능 활성화 필요) - 스피치 —
client.audio_generation_model(venice::TTS_KOKORO)(Rig의audio기능 활성화 필요)
/augment/*, 크립토 RPC에는 Rig 트레이트가 없어 래핑되지 않습니다. 해당 Venice 엔드포인트는 직접 호출하세요.
프라이버시 이점
Rig는 애플리케이션 데이터, 사용자 컨텍스트 또는 내부 툴을 다루는 에이전트에 자주 사용됩니다. Venice와 결합하면 해당 워크플로가 프라이빗하고 검열 없는 추론 위에서 유지됩니다:- 프라이빗 모델에서의 제로 데이터 보존 — 요청 이후 프롬프트와 툴 페이로드가 보관되지 않음
- 에이전트가 직설적인 비평이나 레드팀 활동이 필요할 때의 검열 없는 분석
- OpenAI 타입을 Venice 방언에 재매핑할 필요가 없는 first-party 프로바이더
문제 해결
모델을 찾을 수 없거나 예상치 못한 엔드포인트 오류
모델을 찾을 수 없거나 예상치 못한 엔드포인트 오류
모델 페이지 또는
GET /models에서 현재 모델 ID를 사용하세요. venice::QWEN3_5_9B 같은 크레이트 상수는 라이브 카탈로그보다 뒤처질 수 있습니다.Responses API 실패
Responses API 실패
openai::Client가 아니라 venice::Client를 사용하세요. OpenAI 클라이언트는 기본적으로 Responses API를 사용하는데, Venice에서는 알파 단계일 뿐입니다.툴이나 구조화된 출력이 무시됨
툴이나 구조화된 출력이 무시됨
함수 호출을 지원하는 모델을 선택하고, 프리앰블에서 툴이 실행되어야 하는 시점을 설명하며, 툴 설명을 정확하게 유지하세요 — Rig는
#[rig_tool] 시그니처와 문서에서 JSON 스키마를 생성합니다.Rig 문서
에이전트, 툴, 익스트랙터, 프로바이더
Venice 모델
모델과 지원 기능을 살펴보세요