mcpField
B
byok-custom-model

byok-custom-model

github.com/starchild-ai-agentエージェントワークフロー302.7k 回インストール6 日前に更新
リポジトリ

byok-custom-model について

byok-custom-model は、ユーザー自身の API 認証情報を使い、カスタム LLM エンドポイントをモデル選択画面に登録するスクリプトスキルです。主要ベンダーのプリセットに加え、API の使用例から設定を解析できます。

主な機能

  1. 01ベンダーのプリセットを登録
  2. 02プロバイダーの API 例を解析
  3. 03カスタムモデルの一覧と詳細確認
  4. 04登録済みモデルの削除
  5. 05安全な入力画面で API キーを受け取る

活用シーン

  1. 01対応ベンダーのモデルを選択画面に追加
  2. 02セルフホストや一般的でないエンドポイントを登録
  3. 03カスタムモデルの設定を確認または削除

インストール

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

$npx skills add https://github.com/starchild-ai-agent/official-skills --skill byok-custom-model

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

同梱ファイルexports.py

詳細

🔑 BYOK — カスタム LLM モデル

カスタム LLM エンドポイントをモデルセレクターに登録します。プラットフォームのプロキシをバイパスします — ユーザーが自身の API キーを提供し、エージェントはベンダー / アグリゲーター (OpenRouter、DashScope、Anthropic ネイティブ、NEAR AI Cloud TEE、セルフホストなど) に直接アクセスします。

これはスクリプトモードのスキルです — ツールは登録されません。このファイルを読み、bash ブロックからエクスポートを呼び出してください。

関連項目

  • config/context/references/model-onboarding.md — より広範なモデル選択 / OAuth のコンテキスト
  • chatgpt-codex-onboarding スキル — ChatGPT/Codex OAuth 用 (異なるメカニズムであり、BYOK ではありません)

キュレーション済みベンダー (必ず最初にこれを確認してください)

このスキルには 12 の事前設定済みベンダーが同梱されています。URL、モデル名、API の例を求める前に、必ずユーザーの意図をこのリストと照合してください — base_url / wire / thinking / capabilities はすべて事前に入力されているため、キュレーション済みの一致があれば add_template(vendor=...) に直接進みます。

ベンダー idユーザーが次に言及した場合に使用…
anthropicClaude、Anthropic
openaiGPT-4o、GPT-5、OpenAI 直接
xaiGrok、xAI
qwenQwen、通义千问、DashScope
deepseekDeepSeek
kimiKimi、Moonshot
mimoMiMo、小米
geminiGemini
gemmaGemma
near-aiプライバシー、TEE、機密推論、「自分のデータをログに記録しないで」、Web3 ネイティブ
veniceVenice (ユーザーが明示した場合のみ。以下のプライバシー優先層を参照)
metaMeta、Meta AI、Muse、Muse Spark、Muse Spark 1.1

オンボーディングフロー — まずテンプレート

  1. 上記のキュレーション済みベンダー表を確認してください。 ユーザーの意図がそのいずれかに一致する場合は、そのまま add_template(vendor=...) に進み、ステップ 5 までスキップします。URL を尋ねないでください。
  2. キュレーション済みベンダーが一致しない場合に限り: ユーザーに、プロバイダーの公式ドキュメントにある API の使用例(curl / requests / fetch のサンプル)を貼り付けるよう依頼します。実際の API キーを含めないよう伝えてください — プレースホルダーやダミーキーなら問題ありません。
  3. parse_example を実行して、base_url、upstream_model、wire(openai か anthropic)、thinking パラメーター、およびベンダー固有のリクエストフィールドを自動検出します。
  4. ユーザーと下書きをレビューしてから、add(...) を呼び出します — エントリは custom_models.yaml に書き込まれます。
  5. 結果に need_env_input が含まれている場合は、そのペイロードの env_vars と reason を指定して、直ちに request_env_input ツールを呼び出してください。 これによりセキュア入力 UI がポップアップし、ユーザーがキーを入力すると、それが workspace/.env に保存されます。このステップは必須です — スクリプト自体は UI をポップアップできません。

プライバシー優先ティア: near-ai と venice はどちらもプライバシーに敏感なユーザーを対象としていますが、NEAR AI の方がクリーンな統合です — Venice の TEE の仕組みはそれ自体が NEAR AI + Phala の上に構築されているため、NEAR AI に直接接続する方が信頼チェーンが短くなります(Intel + NVIDIA のシリコン + NEAR の再現可能なエンクレーブイメージ。間にプロダクト層のプロキシが入りません)。キュレーション済みの NEAR モデル一覧はオープンウェイトかつ TEE 保護のみです — NEAR のカタログには Claude / GPT-5 / Gemini Pro を「Anonymized, not TEE-protected」モードでプロキシするものもありますが、ここでのプライバシー上の価値提案全体がハードウェアエンクレーブにあるため、意図的に除外しています。

NEAR AI が対象になる場合は常に、TEE 保護(プライバシー)モデルを推奨してください — それこそがユーザーが OpenAI/Anthropic 直ではなく NEAR を選ぶ理由そのものです。キュレーション済み一覧はすでに TEE 専用なので、add_template(vendor='near-ai') のデフォルトは安全です。ユーザーが NEAR 上で非 TEE モデル(例: NEAR の匿名化された Claude パススルー)を登録したいと希望する場合は、プライバシー保証が弱まることを警告し、キュレーション済みの TEE モデルを使い続けるか、上流ベンダーを直接登録することを推奨してください。

NEAR AI の推論プロトコル: NEAR は、他のベンダーが使うトップレベルの reasoning_effort/thinking/enable_thinking ではなく、extra_body の下にネストされた chat_template_kwargs を使用します。プロバイダーは nearai_chat_template thinking_capability ルールを通じてこれを自動的に処理します。パラメーター名はモデルごとに異なります(GLM/Qwen3.5/Qwen3.6 は enable_thinking、DeepSeek-V3 は thinking、gpt-oss は常時有効)。完全な仕様: docs.near.ai/cloud/reasoning-models。デフォルトモデル Qwen/Qwen3.6-35B-A3B-FP8 はそのまま動作します。Qwen3.5-122B-A10B は thinking_mode='disabled' 付きで提供されます。そうしないと、その隠れた思考パターンによりベースライン呼び出しで finish=length, content=null が発生するためです。


スクリプトの使い方

python3 - <<'EOF'
import sys, json
sys.path.insert(0, "/data/workspace/skills/byok-custom-model")
from exports import (
    templates, list_models, get, parse_example,
    list_vendor_models, add, add_template, remove,
)

# Enumerate the 12 curated vendor presets
print(json.dumps(templates(), indent=2))

# One-click registration for a curated vendor (Meta / Muse Spark 1.1)
result = add_template(vendor="meta")
print(json.dumps(result, indent=2))
EOF

関数

関数必須引数目的
templates()—キュレーション済みの 12 ベンダープリセットを一覧表示します
list_vendor_models(vendor)vendorライブの /models カタログ(テンプレートに model_discovery がある場合のみ)
add_template(vendor, *, upstream_model=None, name=None)vendorキュレーション済みベンダーのワンクリック登録(推奨パス)
parse_example(api_example)api_exampleドキュメントの API 例を安全な下書きに解析します(非キュレーション済みベンダー)
add(upstream_model, base_url, ...)upstream_model、base_urlカスタム引数から登録します(parse_example の後に使用)
list_models()—登録済みのカスタムエントリをすべて表示します
get(model_id)model_id1 つのエントリを検査します
remove(model_id)model_idエントリを削除します

すべての関数は、成功時は ok: True、失敗時は ok: False, error: "..." を含む dict を返します。

need_env_input の処理(必須の2ステップパターン)

add() と add_template() は、API キーの環境変数がまだ設定されていない場合、結果に need_env_input フィールドを含めることがあります。スクリプトは安全な入力 UI 自体をポップアップできません — ユーザーの開いている SSE ストリームにアクセスできないためです。呼び出し元のエージェントがそれを行う必要があります:

# After add_template / add returns:
if result.get("need_env_input"):
    nei = result["need_env_input"]
    # Call the in-process tool — pseudocode, actual signature is tool-side:
    request_env_input(env_vars=nei["env_vars"], reason=nei["reason"])

ポップアップ、.env への書き込み、およびチャネル固有の UX(Web ポップアップ / TG カード / WeChat テキストプロンプト)は、すべて request_env_input によって処理されます。フォールバックとしてユーザーにチャットでキーを貼り付けるよう促さないでください — ただツールを呼び出してください。


登録後

  • モデルはセレクターに custom/ が前に付いた状態で表示されます。
  • ユーザーは /model custom/<name>(例:/model custom/qwen-plus-e3f4)またはモデルピッカー UI で切り替えます。
  • 以降の呼び出しはプラットフォームプロキシをバイパスします — ベンダーの料金がユーザーの BYOK クォータに直接適用されます。

重要なルール

  • チャットに貼り付けられた API キーを絶対に受け入れないでください。 ユーザーが貼り付けた場合は、それを無視し、登録を拒否し、安全なポップアップが唯一の安全なチャネルであることを伝えてください。
  • ユーザーが応答していない場合、安全な入力ポップアップを自動的に再発行しないでください — 待ってください。
  • need_env_input が返された場合は、常に request_env_input を呼び出してください。 スキップしないでください、ユーザーにキーを貼り付けるよう求めないでください、UI がポップアップすることを期待して add_template を再試行しないでください — ポップアップしません。
  • workspace/config/custom_models.yaml や workspace/.env に手動で書き込まないでください。 常に上記のエクスポートを経由してください。
  • 厳選された 12 のベンダーは 常に add_template を使用します。parse_example + add はセルフホストまたは稀なプロバイダーにのみ使用してください。

Meta Model API — Muse Spark 1.1(プレビュー)

meta テンプレートは Meta Model API 用であり、現在 https://dev.meta.ai/ の開発者ポータルの背後で パブリックプレビュー 中です。

  • https://dev.meta.ai/ で申請 / サインインしてください — サインアップと「Muse」/「Meta Model API」アクセスリクエストの両方に同じポータルを使用します。ユーザーは API キーを発行してもらうために、そこで Meta の申請 / サインインフローを完了する必要があります。
  • API がパブリックプレビュー中は、アクセスが地域 / アカウントに依存する場合があります — すべての開発者アカウントが即座にアクセスを許可されるわけではありません。add_template(vendor='meta') がライブの /v1/models プローブから非 2xx を返した場合、ユーザーが間違っていると決めつけないでください。プレビューアクセスがまだアカウント / 地域で保留中である可能性があることを伝え、dev.meta.ai ダッシュボードでステータスを確認するよう案内してください。
  • エージェントはキーに request_env_input を使用する必要があります — 他のすべての厳選ベンダーとまったく同じです。チャットに貼り付けられた Meta API キーを絶対に受け入れないでください。 ユーザーが貼り付けた場合は、それを無視し、登録を拒否してください。安全な入力ポップアップが唯一の安全なチャネルです。
  • Meta の直接請求とクォータが適用されます。 呼び出しはユーザー自身の Meta アカウントに対して Meta によって請求されます — Starchild プラットフォームのクレジットはバイパスされます、マークアップなし、プラットフォーム側のクォータなし。api.meta.ai/v1 からのレート制限 / 429 は、Starchild のシグナルではなく Meta 側のシグナルとして扱ってください。

ワンクリック登録:

python3 -c "from exports import add_template; print(add_template(vendor='meta'))"

デフォルトモデル:muse-spark-1.1。ベース URL:https://api.meta.ai/v1(OpenAI 互換ワイヤ)。need_env_input で返された生成済みの CUSTOM_KEY_... 名を使用してください。ベンダー環境変数を想定したり手動で作成したりしないでください。ドキュメント:https://dev.meta.ai/docs/getting-started/overview。


xAI Grok — サブスクリプションの混同に関する注意

ユーザーは無関係な 2 つの xAI 製品を頻繁に混同します:

  • X Premium / SuperGrok サブスクリプション(x.com で月額 $30) — チャット UI アクセスのみ。API アクセスは含まれません。
  • console.x.ai — 独立した開発者アカウント、別途請求。API キーを生成し、新規アカウントには $25 のプロモクレジット、その後はトークン単位の従量課金。

ユーザーが BYOK 経由で Grok を追加したい場合は、https://console.x.ai/ を案内してください — x.com / Premium / SuperGrok ではありません。xai テンプレートの homepage フィールドはすでに正しい場所にディープリンクしています。Hermes / Grok-CLI の OAuth からサブスクリプションへのフローは、xAI がサードパーティのクラウドエージェントに拡張していないファーストパーティの client_id ホワイトリストに依存しているため、BYOK API キーのパスがホスト型製品にとって唯一現実的な統合です。

コメント