mcpField
V
venice

venice

github.com/starchild-ai-agentクリエイティブ・メディア30162 回インストール6 日前に更新
リポジトリ

venice について

venice は Venice AI API を利用するためのスキルで、生成・処理機能を扱うユーザー向けです。画像、音声、埋め込み、モデル検索に対応し、チャット補完は別の BYOK フローで扱います。

主な機能

  1. 01モデル、特性、キャラクターの一覧表示
  2. 02画像の生成、編集、拡大
  3. 03テキスト読み上げと音声文字起こし
  4. 04テキスト埋め込みの生成
  5. 05残高とプライバシー階層の確認
  6. 06Venice チャットパラメーターのテスト

活用シーン

  1. 01機能やプライバシー階層によるモデル検索
  2. 02画像素材の作成と編集
  3. 03テキスト読み上げや音声の文字起こし
  4. 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 キーでは使用できない管理者キーが必要です)。

セットアップ

  1. ユーザーが https://venice.ai/settings/api にアクセスし、キーを作成します。
  2. セキュア入力でキーをワークスペースに追加します — チャットに貼り付けないでください:
    • ユーザーがチャットを希望する場合: 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') を呼び出します。
  3. このスキルは次の順序でキーを解決します: 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 とチャットしたい」と言ったときの標準フロー:

  1. custom_models(action='templates') — Venice がキュレーションされたリストに含まれていることを確認します (含まれています。supports_dynamic_models: true 付き)。
  2. 必須ではありませんが、こだわりの強いユーザーには推奨: custom_models(action='list_vendor_models', vendor='venice') — 機能、価格、プライバシーティアを含むライブカタログ (約75のテキストモデル) を返します。フィルタリングしてトップ候補を提示します。
  3. custom_models(action='add_template', vendor='venice', upstream_model='<id>') — Venice を、Venice のモデルの1つをチャットターゲットとして登録します。upstream_model パラメータは、ステップ2のレスポンスの任意の id を受け付けます (Venice は動的ディスカバリを備えています)。API キー用のセキュア入力プロンプトが自動的に表示されます。
  4. 切り替え方法をユーザーに伝えます: チャットで /model custom/<id>、またはモデルピッカーを使用します。

推奨モデル (list_model_traits() を使用して最新の状態に保ってください):

用途特性典型的な選択
最も賢いテキストmost_intelligentzai-org-glm-4.7
無検閲most_uncensoredvenice-uncensored-1-2
推論default_reasoningqwen3-235b-a22b-thinking-2507
ビジョンdefault_visionqwen3-vl-235b-a22b
コードdefault_codeqwen3-coder-*
安価で高速fastestllama-3.2-3b
関数呼び出しfunction_calling_defaultzai-org-glm-4.7
プライバシー: TEE/E2EElist_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_scrapingboolユーザーメッセージ内の URL を自動取得 (Firecrawl)
enable_web_citationsboolレスポンス内のインライン引用
enable_x_searchboolGrok モデル向けの xAI ネイティブ検索 (ウェブ + X)
character_slugstrVenice のキャラクターペルソナを使用 (list_characters を参照)
include_venice_system_promptboolデフォルトは True。False に設定すると Venice のデフォルトを除去
strip_thinking_responsebool推論モデルの出力から thinking ブロックを削除
disable_thinkingbool推論対応モデルで思考を強制的にオフ
enable_e2eeboolE2EE 対応モデルで E2EE を有効化

Venice のレスポンスはボディ内に venice_parameters ブロックをエコーするので、リクエストが実際に適用されたかを確認できます (raw_response_keys 内で探してください)。

エラー

VeniceError(status, message, body) は任意の 4xx/5xx で発生します。よくあるもの:

ステータスメッセージのヒント修正
401Admin API key requiredエンドポイントには BYOK キーが持っていない管理者スコープのキーが必要です。スキップしてください — 回避策はありません。
401VENICE_API_KEY not setVENICE_API_KEY に対して request_env_input を実行するか、custom_models(add_template, vendor='venice') を実行してください。
400Invalid model idモデル名が間違っています。有効な id については list_models(type_filter='image') を確認してください — /models 内の多くのモデルは /image/edit に対して有効ではありません (*-edit ファミリーのみ)。
404Specified 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_factor1 / 2 / 4 — アップスケールモデル用(解像度の代わりに使用)
delete_media_on_completionretrieve 後に 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)を使用してください。

コメント