venice 提供程序——支持对话补全、流式传输、工具、结构化输出、嵌入、转录、图像生成和语音——直接对接 Venice API,而不是通过 OpenAI 客户端进行转发。
如果你想要的是一个原始的 Axum 代理而非智能体框架,请参见 构建 Rust LLM 网关。
前置条件
- 较新的稳定版 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 引入作用域:
优先使用
venice::Client,而不是让 Rig 的 OpenAI 客户端指向 Venice。默认的 openai::Client 面向 OpenAI 的 Responses API,而 Venice 提供程序对接的是 /chat/completions,并暴露了 VeniceParameters。from_env() 返回的 &venice::Client。诸如 venice::QWEN3_5_9B 这样的 crate 常量只是起点——请通过 GET /models 确认当前的模型 ID。
流式响应
stream_prompt 返回一个请求,你可以 .await 得到一个流。使用 rig::agent::stream_to_stdout 可以在 token 到达时逐个打印:
stream_prompt 的 .await 后添加 ?——它直接返回流,而不是一个 Result。
结构化输出
使用带有JsonSchema 类型的提取器来校验模型的回答:
工具
使用#[rig_tool](随 Rig 默认的 derive 特性一起提供)定义一个工具。生成的类型名称是函数名的 PascalCase 形式:
rig::tool::Tool。参见 Rig 的工具文档。
嵌入
dimensions 字段。当你想要指定一个特定的向量维度而不是使用模型的原生维度时,请使用 embedding_model_with_ndims。
Venice 特有参数
通过VeniceParameters 传入 Venice 专有的选项,并使用 additional_params 进行合并。例如,启用内置的网络搜索:
cost 数据块),请在补全模型上调用 raw_completion。标准化的智能体路径会丢弃这些 Venice 特有字段:
VeniceParameters 还涵盖角色 slug、思考控制、网页抓取、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/* 和 crypto RPC 目前没有对应的 Rig trait,也未被封装。请直接调用这些 Venice 端点。
隐私优势
Rig 常用于会接触应用数据、用户上下文或内部工具的智能体。将它与 Venice 搭配,可以让整个工作流运行在私密、无审查的推理之上:- 私有模型的零数据保留——请求结束后不会保留提示词和工具的输入输出
- 当智能体需要直言不讳的批评或红队测试时提供无审查分析
- 一方提供程序——你无需将 OpenAI 类型强行映射到 Venice 的方言上
疑难排查
找不到模型或出现意外的端点错误
找不到模型或出现意外的端点错误
请使用来自 模型页面 或
GET /models 的最新模型 ID。诸如 venice::QWEN3_5_9B 这样的 crate 常量可能滞后于线上目录。Responses API 失败
Responses API 失败
请使用
venice::Client,而不是 openai::Client。OpenAI 客户端默认使用 Responses API,而该 API 在 Venice 上仅为 alpha 状态。工具或结构化输出被忽略
工具或结构化输出被忽略
请选择一个支持 函数调用 的模型,在 preamble 中说明何时应运行工具,并让工具描述保持精确——Rig 会根据
#[rig_tool] 的签名和文档来构建 JSON schema。Rig 文档
智能体、工具、提取器与提供程序
Venice 模型
浏览模型及其支持的能力