mcpField
V
venice-chat

venice-chat

github.com/veniceai開発160131 回インストール5 日前に更新
リポジトリ

venice-chat について

venice-chatは、LLMアプリケーションを構築する開発者向けのVeniceテキスト生成APIスキルです。OpenAI互換のチャット補完に、Venice独自の検索、マルチモーダル、推論、キャッシュ機能を組み合わせています。

主な機能

  1. 01OpenAI互換のチャット補完
  2. 02ストリーミングと関数呼び出し
  3. 03画像・音声・動画・文書の入力
  4. 04Veniceのウェブ検索とX検索
  5. 05構造化JSONとプロンプトキャッシュ

活用シーン

  1. 01テキスト生成やツール呼び出し
  2. 02マルチモーダル入力の分析
  3. 03回答へのウェブ検索と引用の追加
  4. 04出力をJSON Schemaに制限

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/veniceai/skills --skill venice-chat

インストール後、Claude Code で/venice-chatを入力して読み込まれたか確認します。

詳細

Venice Chat Completions

POST /api/v1/chat/completions は Venice の主要なテキストエンドポイントです。OpenAI 互換で、Venice 固有の機能を利用するための venice_parameters オブジェクトも使用できます。認証には Bearer API キーまたは x402 ウォレット(SIGN-IN-WITH-X)を使います。詳細は venice-auth を参照してください。

使用する場面

  • ツールの有無やストリーミングの有無を問わず、LLM によるテキスト生成が必要な場合。
  • 高性能なモデルに、マルチモーダル入力(画像、音声、動画、ドキュメント)を送信する場合。
  • Web 検索、Web スクレイピング、引用、E2EE、キャラクター、xAI の X/Twitter 検索、思考の制御など、Venice 固有の機能を利用する場合。
  • 大きなシステムプロンプトや長いドキュメントにプロンプトキャッシュが必要な場合。
  • 構造化(json_schema)出力が必要な場合。

OpenAI Responses 形式の構造(型付きの output[] ブロック)については、venice-responses を参照してください。モデルの選択については、venice-text-routing を参照してください。

最小限のリクエスト

curl https://api.venice.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $VENICE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "zai-org-glm-5-1",
    "messages": [{"role": "user", "content": "Why is the sky blue?"}]
  }'

OpenAI SDK(Python)— Venice 固有のフィールドは extra_body に指定します。

import os
from openai import OpenAI
client = OpenAI(api_key=os.environ["VENICE_API_KEY"], base_url="https://api.venice.ai/api/v1")
resp = client.chat.completions.create(
    model="zai-org-glm-5-1",
    messages=[{"role": "user", "content": "Summarize today's AI news."}],
    extra_body={"venice_parameters": {"enable_web_search": "auto", "include_venice_system_prompt": False}},
)

レスポンスの形式は標準的な OpenAI の chat.completion オブジェクト(id、object: "chat.completion"、created、model、choices[].message、choices[].finish_reason、usage)に加えて、次の項目を含みます。

  • cost: {usd, diem} — 課金された通貨ごとに分けたリクエストの費用です(バンドルされたクレジットは USD として扱われます)。出力トークンがないレスポンスでは 0 です(このようなレスポンスは課金されません)。費用を計算できない場合は省略され、現在は獲得クレジットに課金された場合も省略されます。
  • venice_parameters — 実際に適用された Venice の設定に加え、web_search_citations[](検索が実行されなかった場合は空の配列)を含みます。
  • プロバイダーから報告される場合は、usage.prompt_tokens_details.{cached_tokens, cache_creation_input_tokens} と usage.completion_tokens_details.reasoning_tokens を含みます。

choices[].finish_reason は stop、length、tool_calls、content_filter のいずれかです。content_filter は、モデルが拒否した場合や出力が途中で切られた場合(Claude の拒否など)に返される 200 です。422 ではないため、message.content を信頼する前に確認してください。一部のプロバイダーではストリームの途中でブロックされます。その場合、ストリームは帯域内エラーチャンク(type: "content_filter_error"、code: "content_blocked_by_provider")の後に [DONE] を返して終了します。

system_fingerprint は常に削除されます。stream: true の場合、レスポンスは chat.completion.chunk 形式の SSE data: 行として返されます。

リクエストボディ

トップレベルのスキーマは厳密です。未知のトップレベルフィールドを指定すると 400 が返されます。(互換性のための一部の別名は、検証の前に書き換えられます:input → messages、max_output_tokens → max_tokens、web_search: true|false → enable_web_search、promptCacheKey → prompt_cache_key。)

コアフィールド(OpenAI 互換)
フィールド説明
model文字列 — モデル ID、特性(例:default、default_code)、または互換性マッピングです。必須です。機能サフィックスを使用できます(下記参照)。検索ではドット/アンダースコア/スペースも許容されます(kimi k2.6 → kimi-k2-6)。また、venice- プレフィックスも許容されます(IDE が claude-* 名を横取りする場合に使用します)。
messagessystem/developer/user/assistant/tool メッセージの配列です。必須で、最小 1 件です。content も tool_calls もないアシスタントメッセージは、通知なく破棄されます。
temperature(0–2)、top_p(0–1)、top_k(int ≥ 0)、min_p(0–1)、min_temp、max_temp(0–2)サンプリング制御です。一部のモデルでは、デフォルト値が model_spec.constraints に公開されています。
repetition_penalty(≥ 0)、frequency_penalty、presence_penalty(−2..2)繰り返し制御です。
max_completion_tokens / max_tokens (非推奨)整数です。推論トークンを含む出力上限です。モデルの model_spec.maxCompletionTokens を超えると、API 上限が適用されるモデルでは 400 が返されます。max_tokens ≤ 0 は無視されます。max_completion_tokens が設定されている場合、max_tokens は無視されます。
n選択肢の数です(デフォルトは 1。すべての選択肢について料金が発生します)。
seed正の整数です。
stop / stop_token_ids文字列、1~4 個の文字列、またはトークン ID の配列です。
stream、stream_options.include_usageSSE ストリーミングです(Venice は include_usage がなくても使用量チャンクを送信します。「ストリーミング」を参照)。
response_format{type:"json_schema", json_schema:{name, schema, strict}}(推奨)、{type:"json_object"}、または {type:"text"} です。
tools、tool_choice、parallel_tool_calls関数呼び出しです。
logprobs、top_logprobs(int ≥ 0)対数確率です。
reasoning_effort / reasoning.effortnone | minimal | low | medium | high | xhigh | max です。両方が設定されている場合は、reasoning_effort が優先されます。
reasoning.enabledfalse にすると、対応モデルで推論が無効になります。effort が設定されている場合は無視されます。
reasoning.summaryauto | concise | detailed です。
prompt_cache_keyキャッシュルーティングのヒントです。省略すると、Venice は API ユーザーごとに安定したキーを生成します。
prompt_cache_retentiondefault | extended | 24h です。対応モデルでは、extended と 24h により保持期間が 24 時間に延長されます。
verbosity / text.verbositylow | medium | high | auto です(どちらの配置も受け付けます)。推論を行わない OpenAI モデルでは medium / auto のみ受け付けます(それ以外は 400)。
anon_user_idエンドユーザー識別子(省略可能。下記参照)。
fallbacks{model} エントリーを最大 10 件指定できます。Claude Fable 5 のサーバー側拒否フォールバック用の Anthropic ベータパラメーターです。Anthropic への直接ルートでのみ転送され、それ以外では無視されます。
include、metadataOpenAI 互換性のために受け付けられますが、検証前に削除され、転送されません。
user、store受け付けられますが破棄されます(OpenAI 互換)。user は anon_user_id の別名ではありません。

anon_user_id — あなたのエンドユーザーを識別します。Venice は、上流へのリクエストの帰属先を特定する際に、この ID とあなたの Venice ユーザー ID を組み合わせます。前後の空白は削除されます(空白のみの値は未指定として扱われます)。1~128 文字で、印字可能な ASCII 文字のみ(0x20~0x7E)を使用できます。|| を含めることはできません。違反すると 400 が返されます。/responses でも受け付けられます。

機能ゲート(推論前に 400 エラー)
送信するものモデルに必要な機能(model_spec.capabilities)
image_url パーツsupportsVision
input_audio パーツsupportsAudioInput
video_url パーツsupportsVideoInput
tools、tool_choice、parallel_tool_calls: truesupportsFunctionCalling
text 以外の response_formatsupportsResponseSchema
logprobs: true または任意の top_logprobssupportsLogProbs

各リクエストが拒否されると 400 が返され、そのフィールドに対応する issues[] エントリーに理由が示されます。トップレベルの error だけでなく、issues を確認してください。

OpenAI の推論モデル(例:openai-gpt-52)では、seed、stop、n ≠ 1、およびゼロ以外の presence_penalty/frequency_penalty も 400 エラーで拒否されます(そのフィールドの issues[] エントリーには "<field> is not supported by this model" と表示されます)。

venice_parameters(Venice 専用)

すべて任意です。venice_parameters 内の不明なキーは破棄されます。

フィールド型デフォルト効果
character_slugstring—公開済みの Venice キャラクターを適用します(そのページの「Public ID」)。不明なスラッグの場合は 404 が返されます。詳細は venice-characters を参照してください。
strip_thinking_responseboolfalse推論モデルの応答から推論内容(<think> ブロックと reasoning_content)を削除します。
disable_thinkingboolfalse対応する推論モデルで思考を無効にし、推論内容を削除します。推論を無効にできないモデルでは、推論は引き続き実行されます(一部のモデルでは最低の思考レベルに下がります)が、応答からは削除されます。これらの推論トークンには引き続き料金が発生する場合があります。
enable_e2eebooltrueE2EE 対応モデルで E2EE ヘッダーが存在する場合、E2EE を使用します。false にすると、TEE のみのモードになります。
enable_web_search"off" / "auto" / "on""off"Venice のウェブ検索です。on は常に検索し、auto は分類器に判断を委ねます。
enable_web_scrapingboolfalse最新のユーザーメッセージ内で見つかった URL をスクレイピングします。URL が見つかった場合、そのリクエストではウェブ検索の代わりにスクレイピングが行われます。
enable_web_citationsboolfalseモデルに ^1^/^1,3^ 形式で出典を引用するよう求めます。
include_search_results_in_streamboolfalse実験的機能です。ストリーミング時のみ、ストリームの末尾で data: [DONE] の前に、venice_parameters.web_search_citations を含む choices: [] チャンクを送信します。
return_search_results_as_documentsbool—検索結果を合成ツール呼び出しとしても返します(ウェブ検索を参照)。
include_venice_system_promptbooltrueVenice のシステムプロンプトをユーザーのシステムプロンプトの前に追加します。完全に制御するには false に設定してください。
enable_x_searchboolfalsesupportsXSearch に対応するモデル(Grok)で、xAI ネイティブのウェブ検索と X 検索を有効にします。他のモデルでは無視されます。検索ごとに課金されます(約 $0.01)。
モデル機能のサフィックス

venice_parameters の一部は model 文字列に設定できます。クライアント(OpenAI SDK、LangChain、IDE)が venice_parameters を送信できない場合に便利です。

<model-id>:<key>=<value>[&<key>=<value>…]

値は URL デコードされます。ブール値は true / false です。サフィックスは、同じキーの venice_parameters の設定を上書きします。サポートされるキー(完全一致):

キー値対応先
enable_web_searchon / off / autovenice_parameters.enable_web_search
enable_web_citationstrue / falsevenice_parameters.enable_web_citations
enable_web_scrapingtrue / falsevenice_parameters.enable_web_scraping
include_venice_system_prompttrue / falsevenice_parameters.include_venice_system_prompt
include_search_results_in_streamtrue / falsevenice_parameters.include_search_results_in_stream
return_search_results_as_documentstrue / falsevenice_parameters.return_search_results_as_documents
character_slug文字列venice_parameters.character_slug
strip_thinking_responsetrue / falsevenice_parameters.strip_thinking_response
disable_thinkingtrue / falsevenice_parameters.disable_thinking

不明なキーは無視されます。enable_e2ee と enable_x_search はサフィックスキーではありません。サフィックスが適用されるのは /chat/completions のみです。/responses はモデルを解決しますが、サフィックスは無視します。

zai-org-glm-5-1:enable_web_search=on
kimi-k2-6:strip_thinking_response=true&enable_web_search=auto
zai-org-glm-5-1:character_slug=alan-watts

メッセージとモダリティ

messages[].content は文字列、または型付きパーツの配列です。ロールは user、assistant、tool、system、developer です。画像/音声/動画/ファイルのパーツを含められるのは user メッセージのみです。system/developer/assistant の配列コンテンツはテキストのみです。Anthropic 形式の tool_use/tool_result ブロックと、Cursor 形式の {type:"image"} パーツは自動的に変換されます。

メッセージごとの上限:image_url は 10 個、input_audio は 5 個、video_url は 3 個、file は 5 個です。リクエストごとの上限:video_url パーツは合計 3 個です。

画像(image_url)
{
  "model": "kimi-k2-6",
  "messages": [{
    "role": "user",
    "content": [
      {"type": "text", "text": "What's in this image?"},
      {"type": "image_url", "image_url": {"url": "https://example.com/cat.jpg"}}
    ]
  }]
}
  • url は公開されている http(s) URL、または data:image/...;base64,... URL です(上記の example.com プレースホルダーは検証に失敗するため、実際の画像に差し替えてください)。リモート URL は検証のために 1 回取得されます。リダイレクトは拒否され、本文は 25 MB 以下である必要があります。Content-Type は PNG、JPEG、WebP、HEIF/HEIC、または AVIF である必要があり、画像はデコード可能で、各辺が 64 px 以上でなければなりません(データ URL にも同じデコードとサイズのチェックが適用されます)。失敗した場合は 400 "Supplied image did not pass validation checks." が返されます。
  • supportsMultipleImages: true のモデルでは、会話全体の画像が保持されます(maxImages はモデルのリクエストごとの上限を示します。Venice 自体はメッセージごとの上限 10 個を適用します)。単一画像対応のビジョンモデルでは、画像を含む最後のメッセージの画像のみが保持され、それ以前の画像は削除されます。
音声(input_audio)
{"type": "input_audio", "input_audio": {"data": "<base64>", "format": "wav"}}

format:wav(デフォルト)、mp3、aiff、aac、ogg、flac、m4a、pcm16、pcm24。音声はインラインの base64 で指定する必要があります。URL はサポートされていません。

動画(video_url)
{"type": "video_url", "video_url": {"url": "https://www.youtube.com/watch?v=..."}}
  • YouTube の視聴/共有/埋め込みリンクは、事前取得なしで受け付けられます(プロバイダーの対応状況は異なります)。
  • data:video/...;base64,... URL では、video/mp4、video/mpeg、video/quicktime、video/mov、または video/webm を指定する必要があります。
  • その他のリモート URL は、リダイレクトなしで 2xx を返し、Content-Type が上記のいずれかである必要があります。失敗した場合は 400 "Supplied video did not pass validation checks." が返されます。
  • リクエスト内の video_url パーツが 3 個を超える場合は 400 が返されます(URL の取得前にチェックされます)。
ドキュメント(file)
{"type": "file", "file": {"file_data": "data:application/pdf;base64,JVBERi0...", "filename": "report.pdf"}}

file_data はデータ URL または公開 URL です。PDF、EPUB、DOCX、PPTX、XLSX、XLS、プレーンテキスト、Markdown、CSV、JSON、およびほとんどのソースコードファイルはサーバー側でテキストに抽出されるため、どのテキストモデルでも使用できます。画像ファイルは image_url パーツになります。抽出に失敗したファイルは、リクエストエラーではなく、インラインの [Error processing file …] テキストパーツになります。E2EE リクエストでは使用できません。

プロンプトキャッシュ(cache_control)

すべてのコンテンツ部分に、{"cache_control": {"type": "ephemeral"}} または {"type": "ephemeral", "ttl": "1h"} を指定できます。Claude など、明示的なマーカーを必要とするモデルでは、これらの指定が重要です。それ以外のモデルでは、プレフィックスの一致に基づいて自動的にキャッシュされます。これらのモデルでは、1 リクエストあたり最大 4 つのブレークポイントを指定できます。Venice は、指定したマーカーによって空きが残っている場合に限り、システムプロンプトと会話履歴に独自のブレークポイントを追加します。一貫したルーティングには、安定した prompt_cache_key を組み合わせてください。キャッシュの読み取り/書き込み料金はモデルごとに設定されます(model_spec.pricing.cache_input/cache_write)。キャッシュヒットは usage.prompt_tokens_details で報告されます。

ツールと関数呼び出し

{
  "tools": [{
    "type": "function",
    "function": {
      "name": "get_weather",
      "description": "Get current weather for a city",
      "parameters": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
      "strict": true
    }
  }],
  "tool_choice": "auto"
}
  • tool_choice:"auto"、"required"、"none"、または {"type":"function","function":{"name":"get_weather"}}。{"type":"auto" | "none" | "required"} は文字列形式に正規化されます。
  • parallel_tool_calls のデフォルトは true です。返信する前に、複数の呼び出しを実行できるようにしてください。
  • 呼び出しごとに {"role":"tool","tool_call_id":"...","content":"..."} メッセージを 1 つ返してから、再度呼び出してください。
  • フラット形式({type, name, parameters})および Anthropic 形式({name, input_schema})のツール定義は、ネスト形式に変換されます。
  • メッセージにツール呼び出しが含まれる場合、Venice は finish_reason: "stop" ではなく finish_reason: "tool_calls" を返します(length による打ち切りの場合は、引き続き length です)。
  • スキーマでは {"type":"web_search"}/{"type":"x_search"} 形式のツールエントリーも受け付けますが、これらを指定しても Venice の検索や xAI X search は有効になりません。代わりに venice_parameters.enable_web_search/enable_x_search を使用してください。

推論モデル

{
  "model": "zai-org-glm-5-1",
  "reasoning": {"effort": "medium"},
  "messages": [{"role": "user", "content": "Prove there are infinitely many primes."}]
}
  • 推論内容は message.reasoning_content(ストリーミング時は delta.reasoning_content)に含まれます。<think> タグは content から削除されます。プロバイダーによっては、暗号化または要約された推論が返されます。
  • サポートされる推論強度の値はモデルごとに異なります。model_spec.capabilities.supportsReasoningEffort、reasoningEffortOptions、defaultReasoningEffort を確認してください。ほとんどの Claude モデルおよび OpenAI GPT モデルでは、reasoningEffortOptions にない値を指定すると 400 が返されます(none は Venice レベルで常に無効化スイッチとして受け付けられます。OpenAI モデルでは minimal も受け付けられ、サポートされる最小レベルに対応します)。その他のモデルでは事前検証されないため、reasoningEffortOptions にある値を使用してください。
  • 思考を無効にするには、reasoning: {"enabled": false} または venice_parameters.disable_thinking: true を優先してください。どちらも、推論が必須のモデルでも適切に機能します。reasoning_effort: "none" でも、モデルが許可する場合は思考を無効にできますが、推論が必須のモデルの中にはこれを拒否するものがあります。そのため、上記の 2 つのスイッチを優先してください。
  • 一部のモデルでは、アシスタントメッセージに reasoning_details[](ネイティブトランスポート経由の Gemini では thought_signature)が返されます。特にツールのループでは、思考署名を保持できるよう、次のターンでそのまま返してください。
  • 推論トークンは max_completion_tokens に含まれ、出力として課金されます。

構造化出力(response_format)

{
  "response_format": {
    "type": "json_schema",
    "json_schema": {
      "name": "person",
      "strict": true,
      "schema": {
        "type": "object",
        "properties": {"name": {"type": "string"}, "age": {"type": "number"}},
        "required": ["name", "age"],
        "additionalProperties": false
      }
    }
  }
}

JSON Schema は json_schema.schema(OpenAI 形式)に指定してください。Claude、Gemini、Grok モデルが読み取るのはこの場所のみです。json_object は非推奨であり、Claude モデルでは無視されます。supportsResponseSchema が必要です。

E2EE(エンドツーエンド暗号化)

supportsE2EE: true をサポートするモデル(e2ee-* ID)の場合は、TEE と E2EE のガイドに従います。

  1. GET /api/v1/tee/attestation?model=<id>&nonce=<64 hex chars> を実行します(認証不要、IP あたり 10 件/分)。検証して、モデルの公開鍵を取得します。
  2. セッションごとに secp256k1 キーペアを生成します。すべての user メッセージと system メッセージを、ECDH → HKDF-SHA256 → AES-256-GCM で暗号化します。
  3. X-Venice-TEE-Client-Pub-Key と X-Venice-TEE-Model-Pub-Key(secp256k1 の 16 進数形式の鍵)、X-Venice-TEE-Signing-Algo: ecdsa、および stream: true を指定してリクエストを送信します(ガイドではストリーミングが必須です)。ヘッダーの形式が正しくない場合は、400 と {"error":{"message":"Invalid E2EE headers: …","type":"invalid_request_error"}} が返されます。
  4. 秘密鍵を使って、ストリーミングされたコンテンツを復号します。

E2EE リクエストでは、Venice は何も挿入しません。Venice のシステムプロンプト、キャラクター、ウェブ検索、スクレイピングは含まれません。file パーツを指定すると 400 が返されます。また、ガイドでは関数呼び出しはサポート対象外とされています。E2EE ヘッダーを指定しない場合(または enable_e2ee: false を指定した場合)、同じモデルが TEE のみのモードで動作します。TEE のレスポンスには X-Venice-TEE: true と X-Venice-TEE-Provider が含まれます。E2EE は /responses では利用できません。

ストリーミング

{"stream": true}
  • text/event-stream 形式で、イベントごとに data: {chat.completion.chunk} が 1 つ送信され、data: [DONE] で終了します。
  • Venice はモデルから使用量を取得し、[DONE] の前に usage(および cost)を含む choices: [] チャンクとして送信します。stream_options.include_usage の設定にかかわらず、使用量はコンテンツチャンクでは繰り返されません。
  • ヘッダー送信後に上流でエラーが発生した場合、data: {"error": {...}} チャンクがインバンドで送信され(例:retry_after、upstream_error、または content_blocked_by_provider を伴う code: "model_overloaded")、その後 [DONE] が送信されます。
  • ウェブ検索の引用は、include_search_results_in_stream: true を指定しない限りストリームに含まれません。指定した場合、ストリームの最後に、[DONE] の前に venice_parameters.web_search_citations を含む choices: [] チャンクが届きます。
  • return_search_results_as_documents: true を指定すると、合成された web_search_call ツール呼び出し(「ウェブ検索」を参照)がコンテンツの前に delta.tool_calls チャンクとしてストリーミングされます。

ウェブ検索

  • ストリーミングなしのレスポンスには、url、title、content(スニペット)、date を含む venice_parameters.web_search_citations[] が含まれます。テキストに ^n^ マーカーを付けるには、enable_web_citations: true を追加します。
  • E2EE リクエスト、最後のユーザーメッセージに画像が含まれる場合、およびスクレイピングによってそのメッセージ内の URL が見つかった場合は、検索がスキップされます。
  • return_search_results_as_documents: true を指定すると、合成されたツール呼び出し {id:"web_search_call", type:"function", function:{name:"web_search", arguments:"{\"documents\":[{id,title,url,snippet,published_at}]}"}} が追加され、finish_reason: "tool_calls" が設定されます。これを実行しようとしないでください。
  • 課金:検索を追加したリクエストごとに $0.01、スクレイピングした URL ごとに $0.01、xAI X 検索ごとに $0.01。

エラー処理の詳細

ステータス発生条件
400リクエスト本文が無効(error: "Invalid request parameters"、フィールドごとの理由は issues[] に記載)、機能の拒否、無効な画像/動画、パーツ数が多すぎる、コンテキスト長の超過、トークン上限の超過、E2EE ヘッダーの不備
401API キーまたは SIWX サインインが無効。または、有料サブスクリプションが必要なモデル
402認証情報がまったくない(401 ではなく x402 の検出用本文)、残高不足、または API キーの利用額上限。x402 の残高不足の場合は、topUpInstructions と siwxChallenge を含む code: "PAYMENT_REQUIRED" の本文と、PAYMENT-REQUIRED ヘッダーが返されます(venice-x402)
403API キーの modelPrivacy でモデルが許可されていない、リージョン制限のあるモデル、またはプロバイダーによる制限
404不明なモデル(「Did you mean」のヒントが表示される場合があります)または character_slug
413ペイロードが大きすぎる
422コンテンツポリシー違反(Venice またはプロバイダー)
429レート制限超過("Rate limit exceeded" またはエラーバジェットのメッセージ)、またはモデルの過負荷(Retry-After ヘッダーを伴う "The model is currently overloaded…")。どちらも x-ratelimit-* ヘッダーが付くため、Retry-After とメッセージで区別してください
500 / 503 / 504推論の失敗/モデルがオフライン/上流のタイムアウト

レスポンス形式と再試行の戦略については、venice-errors を参照してください。

よくある注意点

  • max_tokens は非推奨です。max_completion_tokens を使用し、model_spec.maxCompletionTokens の値を超えないようにしてください。
  • 最上位の不明なフィールドは拒否されます(400)。不明な venice_parameters のキーは黙って破棄されます。
  • 画像と動画の URL は、リダイレクトなしでパブリックにアクセスできる必要があります。リダイレクトする署名付き S3 URL や localhost の URL は失敗します。
  • 音声は URL で指定できません。必ず base64 を使用してください。
  • シングル画像のビジョンモデルは、各ターンで古い画像を削除します。画像は最後のユーザーメッセージに入れてください。
  • 複数ターンのツールループでは、reasoning_details/thought_signature を変更せずに往復させてください。
  • character_slug を指定すると、そのキャラクターのシステムプロンプトがユーザーのプロンプトより前に追加されます。キャラクターがカスタムシステムプロンプトを使用する場合、または include_venice_system_prompt: false を設定する場合を除き、Venice 独自のプロンプトも引き続き含まれます。
  • web_search/x_search のツールエントリーは Venice の検索機能ではありません。venice_parameters を使用してください。
  • OpenAI の推論モデルでは、seed、stop、n > 1、およびゼロ以外のペナルティ値は拒否されます。

コメント