venice について
venice は Venice AI API を利用するためのスキルで、生成・処理機能を扱うユーザー向けです。画像、音声、埋め込み、モデル検索に対応し、チャット補完は別の BYOK フローで扱います。
主な機能
- 01モデル、特性、キャラクターの一覧表示
- 02画像の生成、編集、拡大
- 03テキスト読み上げと音声文字起こし
- 04テキスト埋め込みの生成
- 05残高とプライバシー階層の確認
- 06Venice チャットパラメーターのテスト
活用シーン
- 01機能やプライバシー階層によるモデル検索
- 02画像素材の作成と編集
- 03テキスト読み上げや音声の文字起こし
- 04テキストの埋め込み生成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ starchild-ai-agent/ official-skills --skill veniceインストール後、Claude Code で/veniceを入力して読み込まれたか確認します。
同梱ファイルapi.pyexports.py
詳細
Venice AI
プライバシー優先の AI プラットフォーム。OpenAI 互換 API を https://api.venice.ai/api/v1 で提供しています。4 つのプライバシーティア — anonymized、private、TEE、E2EE。データ保持はゼロ。ほとんどのモデルでコンテンツフィルタリングはありません。
このスキルはチャット補完を除くすべてをカバーします。チャットについては、プラットフォームの custom_models ツールを介した BYOK が適切な方法です — 以下の「チャットのオンボーディング」を参照してください。
クイック機能マップ
| サーフェス | 機能 |
|---|---|
| カタログ | list_models、list_model_traits、list_image_styles、list_characters |
| アカウント | account_balance(残高 + ティア + レート制限カウント) |
| 画像 | image_generate、image_edit、image_upscale |
| 音声 | tts、transcribe |
| 埋め込み | embeddings(デフォルト text-embedding-bge-m3、次元 1024) |
| チャットプローブ | chat_with_venice_parameters(ワンショット) |
| 動画 | video_quote、video_queue、video_retrieve、video_complete、video_generate(フルループ)、video_transcribe_youtube |
意図的にラップしていないエンドポイント: 単体の /tools/search/web(Venice が削除しました。代わりにチャット内の venice_parameters で enable_web_search を使用してください)、管理者スコープの /api_keys と /billing/usage(BYOK キーでは使用できない管理者キーが必要です)。
セットアップ
- ユーザーが https://venice.ai/settings/api にアクセスし、キーを作成します。
- セキュア入力でキーをワークスペースに追加します — チャットに貼り付けないでください:
- ユーザーがチャットを希望する場合:
custom_models(action='add_template', vendor='venice')を呼び出します。セキュア入力を自動的にポップアップし、チャット補完用に Venice を一度に登録します。 - ユーザーがこのスキルのみ(画像/音声/埋め込み)を希望する場合:
request_env_input(env_vars=[{key='VENICE_API_KEY', label='Venice API Key', required=True}], reason='Use Venice image/audio/embeddings via the venice skill')を呼び出します。
- ユーザーがチャットを希望する場合:
- このスキルは次の順序でキーを解決します:
VENICE_API_KEY→ BYOK 登録による任意のCUSTOM_KEY_VENICE_*。どちらの方法でも動作します。両方でも問題ありません。
account_balance() が最も手軽なプローブです(200 OK = キーが機能しています)。
使用方法
import sys
sys.path.insert(0, "/data/workspace/skills/venice")
from exports import (
list_models, image_generate, image_edit, image_upscale,
tts, transcribe, embeddings,
list_image_styles, list_characters, list_model_traits,
account_balance, chat_with_venice_parameters,
)
モデルの閲覧
# Default returns text models only — pass type_filter to scope.
text_vision = list_models(type_filter="text", only_capabilities=["supportsVision"])
images = list_models(type_filter="image") # 28 image models
ttss = list_models(type_filter="tts") # 10 voices
private_only = list_models(type_filter="text", privacy="private")
all_models = list_models(type_filter="all") # ~244 entries — heavy, use sparingly
各エントリ: id, type, name, description, privacy, context_tokens, max_completion_tokens, capabilities, pricing_input_usd, pricing_output_usd, pricing_cache_input_usd, traits。
list_model_traits() は Venice の厳選されたピックを返します: default、most_intelligent、most_uncensored、default_reasoning、default_vision、default_code、function_calling_default、fastest。ユーザーが「Venice の最も賢いモデルを教えて」と言った場合はこれを使用してください — 推測しないでください。
画像生成
モデル ID を推測しないでください。 Venice は画像モデルを頻繁にローテーションします(例: flux-dev-uncensored は存在しなくなり、flux-2-pro は存在します)。デフォルト以外の model= を渡す前に、必ず list_models(type_filter="image") で確認してください。image_edit と image_upscale にも同じルールが適用されます。
g = image_generate(
"neon cyberpunk cat in the rain",
model="venice-sd35", # default; see list_models(type_filter='image') for others
width=1024, height=1024, # any aspect-ratio Venice supports
steps=20,
style_preset="Cinematic", # see list_image_styles() for the 76 presets
save_path="cat.webp", # → output/images/cat.webp (platform convention)
)
print(g["saved_path"])
{id, model, prompt, width, height, image_b64 (always), saved_path, timing} を返します。
画像編集
e = image_edit(
"output/images/cat.webp",
"make the rain heavier and add lightning",
model="qwen-edit", # default ($0.04/edit). Other valid IDs:
# firered-image-edit, grok-imagine-edit,
# qwen-image-2-edit, qwen-image-2-pro-edit,
# wan-2-7-pro-edit, flux-2-max-edit,
# nano-banana-pro-edit, seedream-v5-lite-edit
save_path="cat_edited.png",
)
image は以下を受け付けます: bytes、Path、ファイルパス、http(s) URL、data URI、または base64 文字列。それ以外は転送用に base64 エンコードされます。エンドポイントは生のバイトを返します(JSON ではありません)。
画像アップスケール
image_upscale("output/images/cat.webp", scale=2, save_path="cat_2x.png")
Topaz 品質のアップスケール。スケールは 2 または 4。512×512 のソースを 2x にすると約 3 MB の結果になります。
TTS
tts(
"Welcome to Venice",
model="tts-kokoro", # default; alts: tts-xai-v1, tts-elevenlabs-turbo-v2-5,
# tts-orpheus, tts-chatterbox-hd, tts-inworld-1-5-max,
# tts-qwen3-0-6b, tts-qwen3-1-7b
voice="af_alloy", # voice list per model in Venice docs
response_format="mp3", # mp3 | opus | aac | flac | wav | pcm
save_path="welcome.mp3", # → output/audio/welcome.mp3
)
文字起こし(STT)
result = transcribe(
"output/audio/welcome.mp3",
model="openai/whisper-large-v3", # default. Alt: stt-xai-v1
# The `openai/` prefix is REQUIRED —
# bare `whisper-large-v3` returns 404.
)
print(result["text"]) # transcribed text
print(result["duration"]) # seconds
埋め込み
out = embeddings(["hello world", "second sentence"])
# → {model, count, dim: 1024 (for bge-m3), vectors: list[list[float]], usage}
キャラクター
list_characters(limit=20) # [{slug, name, description, tags}, ...]
# Use the slug in chat via venice_parameters['character_slug']
チャットのオンボーディング (BYOK が答えです)
このスキルでチャット補完をラップしようとしないでください。プラットフォームには、ストリーミング、履歴、コスト追跡、モデルスイッチャー連携を処理するファーストクラスの BYOK フローがあります。
ユーザーが「Venice とチャットしたい」と言ったときの標準フロー:
custom_models(action='templates')— Venice がキュレーションされたリストに含まれていることを確認します (含まれています。supports_dynamic_models: true付き)。- 必須ではありませんが、こだわりの強いユーザーには推奨:
custom_models(action='list_vendor_models', vendor='venice')— 機能、価格、プライバシーティアを含むライブカタログ (約75のテキストモデル) を返します。フィルタリングしてトップ候補を提示します。 custom_models(action='add_template', vendor='venice', upstream_model='<id>')— Venice を、Venice のモデルの1つをチャットターゲットとして登録します。upstream_modelパラメータは、ステップ2のレスポンスの任意の id を受け付けます (Venice は動的ディスカバリを備えています)。API キー用のセキュア入力プロンプトが自動的に表示されます。- 切り替え方法をユーザーに伝えます: チャットで
/model custom/<id>、またはモデルピッカーを使用します。
推奨モデル (list_model_traits() を使用して最新の状態に保ってください):
| 用途 | 特性 | 典型的な選択 |
|---|---|---|
| 最も賢いテキスト | most_intelligent | zai-org-glm-4.7 |
| 無検閲 | most_uncensored | venice-uncensored-1-2 |
| 推論 | default_reasoning | qwen3-235b-a22b-thinking-2507 |
| ビジョン | default_vision | qwen3-vl-235b-a22b |
| コード | default_code | qwen3-coder-* |
| 安価で高速 | fastest | llama-3.2-3b |
| 関数呼び出し | function_calling_default | zai-org-glm-4.7 |
| プライバシー: TEE/E2EE | list_models(privacy='tee') または 'e2ee' でフィルタ | さまざま |
価格は大きく変動します: llama-3.2-3b は 100万トークンあたり $0.15/$0.60、zai-org-glm-5-1 は $1.75/$5.50、Grok 4.20 はさらに高額です。ユーザーがコストに敏感な場合は、推奨する前に必ず list_models() を確認してください。
venice_parameters — Venice 固有のチャット拡張
これらは OpenAI 互換のチャット補完呼び出しにおいて extra_body を介して渡されます。現在、プラットフォームの BYOK チャットパスにはこれらの UI がないため、ユーザーは通常次のようにします:
- テストする: ここで
chat_with_venice_parameters()を介して、何をするかを確認します。 - 本番環境で使用する: スクリプトから直接 Venice を呼び出します (このスキルの
chat_with_venice_parameters、または Venice を指定した任意の OpenAI SDK を介しても可能です)。
chat_with_venice_parameters(
"What's the latest Bitcoin price?",
venice_parameters={
"enable_web_search": "on", # "auto" | "on" | "off"
"include_venice_system_prompt": False, # drop Venice's default sysprompt
"enable_web_citations": True, # ask for inline citations
},
)
| パラメータ | 型 | 効果 |
|---|---|---|
enable_web_search | "auto" | "on" | "off" | Brave を介したリアルタイムウェブ検索 (ZDR) |
enable_web_scraping | bool | ユーザーメッセージ内の URL を自動取得 (Firecrawl) |
enable_web_citations | bool | レスポンス内のインライン引用 |
enable_x_search | bool | Grok モデル向けの xAI ネイティブ検索 (ウェブ + X) |
character_slug | str | Venice のキャラクターペルソナを使用 (list_characters を参照) |
include_venice_system_prompt | bool | デフォルトは True。False に設定すると Venice のデフォルトを除去 |
strip_thinking_response | bool | 推論モデルの出力から thinking ブロックを削除 |
disable_thinking | bool | 推論対応モデルで思考を強制的にオフ |
enable_e2ee | bool | E2EE 対応モデルで E2EE を有効化 |
Venice のレスポンスはボディ内に venice_parameters ブロックをエコーするので、リクエストが実際に適用されたかを確認できます (raw_response_keys 内で探してください)。
エラー
VeniceError(status, message, body) は任意の 4xx/5xx で発生します。よくあるもの:
| ステータス | メッセージのヒント | 修正 |
|---|---|---|
| 401 | Admin API key required | エンドポイントには BYOK キーが持っていない管理者スコープのキーが必要です。スキップしてください — 回避策はありません。 |
| 401 | VENICE_API_KEY not set | VENICE_API_KEY に対して request_env_input を実行するか、custom_models(add_template, vendor='venice') を実行してください。 |
| 400 | Invalid model id | モデル名が間違っています。有効な id については list_models(type_filter='image') を確認してください — /models 内の多くのモデルは /image/edit に対して有効ではありません (*-edit ファミリーのみ)。 |
| 404 | Specified model not found: …. Did you mean: … | 提案されたモデル名を使用してください。STT には openai/whisper-large-v3 (プレフィックス付き) が必要です。 |
コスト
このスキルは Venice と直接通信します — コストはプラットフォームのクレジットではなく、ユーザーの Venice 残高に対して請求されます。プラットフォームのツールごとの台帳は Venice の支出を追跡しません。ユーザーに account_balance() を定期的に確認するよう伝えてください。画像編集は $0.04/編集、TTS は文字数に依存し、画像生成は解像度 + ステップ数に依存します。
account_balance() は balance_usd と balance_diem の両方を返します — Venice は 2 つの並行するコストモデルをサポートしています:
従量課金 (USD チャージ) — デフォルト
ユーザーは https://venice.ai/settings/api で API キーに USD を入金します。各リクエストは balance_usd を減少させます。標準的な SaaS 課金です。99% のユーザーが求めるのはこれです。
DIEM ステーキング — 大量利用 / 常時稼働のユーザー向け
DIEM は Base 上の ERC-20 です。ステークした DIEM ごとに、毎日 $1 分の AI コンピュートが、期限なしで解放されます (未使用の日次クレジットは繰り越されません)。DIEM をバーンすると、それをミントするために使用されたロック済みの VVV (Venice のネイティブトークン) が返却されます。
list_models() の価格表示には両方の通貨が表示されます。たとえば GLM 5.1 の入力は $1.75/1M usd, 1.75/1M diem です — これは、Venice のバックエンドが API キーの背後にあるウォレットが DIEM をステークしているかどうかを自動検出し、支出をそのバケットに優先的にルーティングすることを意味します。DIEM を使用するためにスキルの変更は不要です — API キーがサーバー側で適切なプールを解決します。
| 方法 | どのような場合に適しているか |
|---|---|
| USD チャージ | カジュアル / 変動的な利用。使った分だけ支払い。アイドルコストはゼロ。 |
| DIEM をステーク | 毎日の Venice 支出が $1 以上継続している、または 24 時間稼働のエージェントループを実行している、または予測可能なコスト上限を求めている場合。資本は DIEM にロックされますが、未使用の日次クレジットは純粋な無駄になるため、1 日の使用量の下限に合わせてサイズを決めてください。 |
損益分岐点の目安: 予測される 1 日の Venice 支出が $N 以上の場合にのみ、N DIEM をステークしてください。どのような DIEM 市場価格であっても、計算は単純です: 1 DIEM は (現在の市場価格) を一度支払えば、永遠に $1/日を生みます — 損益分岐時間 = 価格 / 1。
セットアップ: https://venice.ai/token — Base 上のウォレットを接続し、そこでステークします。DIEM をコントラクトアドレスに直接送らないでください — 必ずステーキングページを使用してください。 このスキルはステーキングを自動化しません (ウォレット操作 + Base チェーン + VVV/DIEM コントラクトが関与し、推論スキルの範囲外です)。ユーザーがウェブサイト上で一度だけ行います。
動画
動画は非同期です — API はキュー ID を返し、ポーリングします。ワンショットのエンドツーエンド処理(見積もり → キュー → ポーリング → ダウンロード → 任意のクリーンアップ)には video_generate() を使用するか、細かい制御が必要な場合は 4 つのプリミティブを直接呼び出してください。
音声サポートはモデルごとであり、普遍的なものではありません。 audio=True を渡すのは、list_models(type_filter="video") で選択したモデルが音声機能を備えていることを確認してからにしてください。wan-2-7-text-to-video およびほとんどのテキスト-to-動画モデルは音声をサポートしていません — audio=True を渡すと 400: This model does not support audio configuration が返されます。そのため video_queue / video_generate のデフォルトは audio=False になっています。機能を確認した場合にのみオプトインしてください。
from exports import video_generate, video_quote, list_models
# Browse video models — confirm capabilities before picking
videos = list_models(type_filter="video")
# Common families: seedance-2-0-text-to-video, wan-2-7-text-to-video,
# seedance-2-0-image-to-video, seedance-2-0-reference-to-video, kling-o3-r2v.
# Upscale models use upscale_factor instead of resolution.
# Audio-capable models are a subset — check `capabilities` on each entry.
# 1. Cheap path — quote first (free, no balance charge)
q = video_quote(
model="wan-2-7-text-to-video",
duration="5s", aspect_ratio="16:9", resolution="720p",
# audio omitted → defaults to False (safe for wan-2-7)
)
# {"quote": 0.55} — USD against your Venice balance
# 2. End-to-end (charges balance, polls until done)
v = video_generate(
model="wan-2-7-text-to-video",
prompt="A golden retriever chasing a frisbee at sunset, slow motion.",
duration="5s", resolution="720p",
save_path="retriever.mp4", # → output/videos/retriever.mp4
on_progress=lambda r: print(r.get("status"),
r.get("execution_duration", 0) // 1000, "s"),
)
# {queue_id, saved_path, bytes, quote_usd, elapsed_s, polls, ...}
video_generate は **queue_kwargs を介してすべてのキューパラメータを受け付けます:
| フィールド | 目的 |
|---|---|
negative_prompt | 避けたい内容 |
image_url | 最初のフレームの参照(画像-to-動画) |
end_image_url | 最後のフレームの参照(トランジション) |
audio_url | 背景音楽の入力(WAV/MP3、30 秒以下、15MB 以下) |
video_url | 動画-to-動画 / アップスケールの入力(MP4/MOV/WebM) |
reference_image_urls | 最大 9 件のキャラクター / スタイル参照 |
elements | 最大 4 件の高度な要素(Kling O3 R2V スタイル)。プロンプト内で @Element1 として参照 |
scene_image_urls | 最大 4 件のシーン参照。@Image1 として参照 |
upscale_factor | 1 / 2 / 4 — アップスケールモデル用(解像度の代わりに使用) |
delete_media_on_completion | retrieve 後に Venice ストレージから自動削除 |
手動ループは、細かい制御が必要な場合(インタラクティブな ETA、カスタムストレージ、バッチジョブ)に使用します:
queued = video_queue(model="...", prompt="...", duration="5s",
resolution="720p", aspect_ratio="16:9")
# Add audio=True only when the model's `capabilities` include audio.
qid = queued["queue_id"]
download_url = queued.get("download_url") # only for VPS-backed models
while True:
r = video_retrieve(model="...", queue_id=qid)
if "video_bytes" in r:
open("out.mp4", "wb").write(r["video_bytes"]); break
if r.get("status") == "COMPLETED":
# VPS-backed model — fetch download_url
import requests; v = requests.get(download_url, timeout=120)
open("out.mp4", "wb").write(v.content); break
if r.get("status") != "PROCESSING":
raise RuntimeError(r)
time.sleep(5)
video_complete(model="...", queue_id=qid) # cleanup
動画の文字起こし(YouTube のみ):
video_transcribe_youtube("https://www.youtube.com/watch?v=...")
# → {"transcript": "...", "lang": "en"}
任意のローカル音声 / 動画ファイルには、transcribe() を使用してください(/audio/transcriptions にアップロードし、ファイルパスを受け付けます)。YouTube 以外でホストされている動画には、まず ffmpeg で音声を抽出してから transcribe() を呼び出してください。
上記の表以外の動画エラー:
| コード | 意味 |
|---|---|
| 400 | 不正なパラメータ: モデルがその duration / resolution の組み合わせをサポートしていない、i2v で image_url が欠落している、または prompt が空 |
| 402 | 残高不足 — venice.ai でチャージしてください |
| 413 | ペイロードが大きすぎる — base64 データ URI ではなくホストされた URL を使用してください |
| 422 | コンテンツポリシー違反(Venice ではまれですが i2v では発生する可能性があります) |
| 503 | キューが飽和状態 — 待機して再試行してください |
注意点:
durationはAutoの場合でも必須です(明示的に渡してください)。- キューからの
download_urlは 24 時間有効です — 速やかに取得してください。 - アップスケールモデルには
resolutionではなくupscale_factorが必要です。 - 見積もりはモデルと duration によって大きく変動します — wan 5 秒 @ 720p ≈ $0.55、seedance-2-0-pro 10 秒 @ 1080p では $5 以上になることがあります。
やってはいけないこと
- ここでチャットを関数としてラップしないでください。BYOK を使用してください。
- トレーニングデータからモデル ID を捏造しないでください — Venice は毎週新しいモデルをリリースします。必ず最初に
list_models()またはlist_model_traits()を実行してください。 - ユーザーにチャットで API キーを貼り付けるよう求めないでください。
request_env_input(またはcustom_models add_template)を使用してください。