ドキュメント
mini-SWE-agent
mini にはベース URL 用の環境変数も、クリックして設定する項目もありません。エンドポイントは mini から litellm に直接渡される 4 行の YAML で指定します。さらに料金レジストリも必要です。mini の実行ごとの予算では、料金が設定されていないトークンの費用を計算できないためです。
mini-SWE-agentにはベースURL用の環境変数がありません — YAML設定のmodel.model_kwargs.api_baseにエンドポイントを記述し、miniがそのままlitellm.completionに渡します。
# mini has no base-URL environment variable and no settings UI. The endpoint
# goes in an agent config file, under model.model_kwargs — which mini's docs
# describe as "directly passed to litellm.completion".
model:
model_name: "openai/claude-sonnet-5"
model_kwargs:
custom_llm_provider: "openai"
api_base: "https://api.kunavo.com/v1" # keep the /v1
litellm_model_registry: "kunavo-registry.json" # see "Cost tracking" below
# The key does not live in this file. With custom_llm_provider: "openai",
# litellm reads OPENAI_API_KEY, and mini documents two ways to set it:
#
# export OPENAI_API_KEY=sk-kn-... # environment, wins over .env
# mini-extra config set OPENAI_API_KEY sk-kn-... # mini's own .env
#
# Then run it: mini -c kunavo.yaml
# Or make it the default: mini-extra config set MSWEA_MINI_CONFIG_PATH kunavo.yaml/v1を残してください。 ただし、miniはこの点を文章で明記していないため、判断の根拠を示します。mini自身はこの値を読み取りません。ドキュメントには、model_kwargsは「litellm.completionに直接渡される」とあり、呼び出しをlitellm.completion(model=model_name, messages=messages, **model_kwargs)と示しています。したがって、適用されるのはlitellmの規則です。miniが掲載している唯一の具体的なapi_baseにもサフィックスが付いており、vLLMの例ではhttp://localhost:8000/v1となっています。一方、litellm自身のOpenAI互換ページでは、リクエストでNot Foundが返った場合に「api_baseに/v1サフィックスが付いていることを確認する」よう案内しています。Kilo CodeとAiderも同じ形式を使用します。Anthropic形式のクライアントとgooseは、代わりにオリジンだけを使用します。openai/プレフィックスとcustom_llm_providerは同じ役割を果たします。mini のサンプルでは後者だけを使用しています。どちらか一方でも、両方を併用してもかまいませんが、いずれの場合も料金レジストリ内のlitellm_providerと一致させる必要があります。プレフィックスが示すのはベンダーではなくワイヤープロトコルです。ID は litellm 内部ではなくエンドポイントで解決されるため、Claude ID にopenai/を組み合わせるのは意図された使い方です。openai/パスが Kunavo の/v1/chat/completionsに対してネイティブなツール呼び出し(mini v2 のデフォルト)をネゴシエートするかどうか、そしてこのインターフェースが Claude 名の ID に対して mini 自身が付加するcache_controlマーカーを処理するかどうかです。以下のcurlの部分は 10 秒で確認できます。それ以外は、実際に短い初回実行をして確認してください。sk-kn-で始まります)。$10からクレジットを追加すると、呼び出しはその残高から支払われ、失敗した呼び出しは課金されません。ダッシュボードを開くと、mini-SWE-agent設定が表示されます。手順
/app/keysでキーを作成してコピーします。キーは一度だけ表示されます。- パスが存在するように、一度インストールして実行します。
pip install mini-swe-agent、続いてminiです。初回実行時に.envとエージェント設定の保存場所が表示され、mini-extra config setupの案内もあります。 - litellmが探す場所にキーを設定します。
export OPENAI_API_KEY=sk-kn-...を使用するか、mini-extra config set OPENAI_API_KEY sk-kn-...で永続化してください。miniは「環境変数は.envファイルに設定された変数より優先される」と説明しています。変更したばかりのキーが変わっていないように見える場合、通常はこれが原因です。 - 上記の YAML を他のエージェント設定と同じ場所にある
kunavo.yamlとして保存し、以下のセクションの料金レジストリも追加してください。レジストリがないと、不適切な回答ではなく、コスト計算エラーで実行が停止します。 mini -c kunavo.yamlで起動します。1 回の実行だけ ID を上書きするにはmini -c kunavo.yaml -m openai/claude-haiku-4-5を使います。mini はconfirmモードで開き、各コマンドの実行前に承認を求めます。新しいエンドポイントで初回実行する際の適切なデフォルトです。- あいさつではなく、実際にコマンドを実行するタスクを与えてください。miniのv2ではネイティブのツール呼び出しがデフォルトで、付属のプロンプトも「すべての応答で、コマンドを実行するために少なくとも1度は'bash'ツールを使用する必要がある」と求めています。そのため、実際のツール呼び出しが1回往復して初めて、この組み合わせが動作するとわかります。ツール呼び出しが空、または不正な形式で返る場合も、miniには従来のテキスト解析方式が引き続き付属しています。
mini -c mini_textbased.yaml、またはご自身のファイル内のmodel_class: litellm_textbasedを使用してください。
mini-SWE-agent のローカルモデルガイドで2026年9月21日に確認しました。サードパーティの設定は変更されます。ここに記載されたフィールド名が表示内容と一致しなくなった場合は、このページではなく、そのページを正しい情報源としてください。
クライアントをデバッグする前に確認すること
1回のリクエストで、失敗の原因がエンドポイント、キー、設定ファイルのどれかを特定できます。これがJSONを返すなら、同じベースURLとキーがmini-SWE-agentで機能します。
# Settles whether a failure is the endpoint, the key, or the client.
curl -sS https://api.kunavo.com/v1/models \
-H "Authorization: Bearer sk-kn-..."フィールドに入力するモデルID
すべてのテキストモデルにはモデルIDでアクセスできます。現在の一覧はGET /v1/models、価格付きのカタログはモデルページにあります。料金は100万トークンあたりのUSDで、入力 / 出力の順です。
| モデル ID | Kunavo 入力 / 出力 | mini-SWE-agentでの位置付け |
|---|---|---|
claude-sonnet-5 | $1.40 / $7.00 | 通常のセッションで使うデフォルト ID — mini は各ステップでコンテキストを再送信するため、費用はここで発生します |
claude-opus-5 | $3.50 / $17.50 | 間違ったプランを選ぶと高くつく実行です。より高いものではなく、低い cost_limit と組み合わせてください |
claude-haiku-4-5 | $0.70 / $3.50 | 多数のタスクを処理するバッチ実行や、yolo モードのままにしたループ |
gpt-5-6-sol | $2.00 / $12.00 | 同じ api_base の背後にある 2 つ目のファミリー — model_name を変更し、レジストリエントリを 1 つ追加 |
ここでは省略できないコスト追跡
mini の同梱mini.yamlにはcost_limit: 3.(ドル建ての、1 回の実行あたりの上限額)が設定されており、この上限は litellm のコスト計算機によって適用されます。コスト計算機は、レジストリでモデル ID を照合して実行コストを算出します。Kunavo の ID はそのレジストリに登録されていないため、多くの人が最初に目にするのは不適切な回答ではなくエラーです。mini のトラブルシューティングページでは、これをException: This model isn't mapped yet. model=…, custom_llm_provider=…として示しています。
対処方法は2つありますが、同等ではありません。グローバルスイッチのMSWEA_COST_TRACKING="ignore_errors"(ファイルではcost_tracking: "ignore_errors")は、ガードを修復するのではなく取り除くもので、miniは「注意:支出を管理できなくなる可能性があります!」と警告しています。もう一方はlitellmに料金を伝える方法で、設定ブロックのlitellm_model_registryが指しているのはこちらです。以下の料金は、このサイトの現行カタログ料金をlitellmのトークン単位の形式に変換したものです。
{
"claude-sonnet-5": {
"input_cost_per_token": 0.0000014,
"output_cost_per_token": 0.000007,
"litellm_provider": "openai",
"mode": "chat"
},
"claude-opus-5": {
"input_cost_per_token": 0.0000035,
"output_cost_per_token": 0.0000175,
"litellm_provider": "openai",
"mode": "chat"
},
"claude-haiku-4-5": {
"input_cost_per_token": 0.0000007,
"output_cost_per_token": 0.0000035,
"litellm_provider": "openai",
"mode": "chat"
}
}- モデル名は大文字と小文字を区別して完全一致で照合されます。また、mini のサンプルでは、プロバイダープレフィックスを付けない名前をキーとしてエントリを指定しています。そのため、設定に
openai/claude-sonnet-5と書かれていても、ここではclaude-sonnet-5を使用します。 litellm_providerは、プレフィックスとcustom_llm_providerに一致している必要があります。miniは明確に警告しています。「custom_llm_providerを使用する場合、またはモデル名にプロバイダーのプレフィックスが付いている場合(例:openai/…)、これは設定内のlitellm_providerとも一致している必要があります!」- 設定キーの代わりに
LITELLM_MODEL_REGISTRY_PATHからパスを指定することもできます。バッチランナーで便利です。例:LITELLM_MODEL_REGISTRY_PATH=kunavo-registry.json mini-extra swebench … - これらの料金は予算の計算に使う値であり、請求額ではありません。実際の請求額は Kunavo の残高に記録される金額です。カタログの料金が変わったら値をコピーし直すか、
GET /v1/modelsで確認してください。
よくある質問
mini-SWE-agent をカスタム API エンドポイントに接続するには?
環境変数ではなく、設定ファイルで指定します。mini にはベース URL 用の環境変数がありません。エージェント設定ファイルの model.model_name に使用する ID(必要なら openai/ をプレフィックスとして付加)を設定し、model.model_kwargs の下に custom_llm_provider: "openai" とエンドポイントのベース URL を示す api_base を設定してください。この方法が機能する理由について、mini のドキュメントでは model_kwargs が「litellm.completion に直接渡される」と説明されています。`mini -c kunavo.yaml` でファイルを選択するか、MSWEA_MINI_CONFIG_PATH を設定してデフォルトにします。Kunavo のベース URL は https://api.kunavo.com/v1 です。
mini-SWE-agent はどこから API キーを読み込みますか?
選択したプロバイダーに対応する litellm のキー変数から読み込みます。custom_llm_provider: "openai" の場合は OPENAI_API_KEY です。シェルで export するか、`mini-extra config set OPENAI_API_KEY <key>` で永続化できます。後者は mini の .env に書き込みます。mini によると、環境変数はファイル内の設定より優先されます。キーはエージェント設定のフィールドではありません。古いチュートリアルを参照している場合は、v2 移行ガイドで MSWEA_MODEL_API_KEY が「API キーの上書きには使用されなくなりました」と記載されている点に注意してください。
mini-SWE-agent の api_base の末尾には /v1 が必要ですか?
OpenAI 互換エンドポイントの場合は必要です。たとえば https://api.kunavo.com/v1 です。ただし、mini は規則としてではなく例によって説明しています。mini は model_kwargs を litellm.completion にそのまま渡すため、この規約は litellm のものです。mini のドキュメントにある api_base の具体例は、vLLM の例に記載された http://localhost:8000/v1 だけです。litellm の OpenAI 互換ページには、「リクエストが Not Found で返る場合は、api_base に /v1 のサフィックスがあることを確認してください」と明記されています。したがって、/v1 がない場合は認証エラーではなく 404 になります。
mini-SWE-agent で「This model isn't mapped yet」と表示されて失敗するのはなぜですか?
litellm がモデル ID の料金を特定できず、mini の実行ごとの cost_limit(同梱の mini.yaml では 3 ドル)が litellm のコスト計算機を通じて適用されるためです。mini が推奨する対策はモデルレジストリの追加です。litellm のモデル料金形式に従った JSON ファイルを作成し、プロバイダープレフィックスを付けないモデル名をキーにして、litellm_provider を custom_llm_provider またはモデル名のプレフィックスに設定した値と一致させます。設定の litellm_model_registry、または環境変数の LITELLM_MODEL_REGISTRY_PATH でそのファイルを指定します。MSWEA_COST_TRACKING="ignore_errors"を設定してもエラーは表示されなくなりますが、問題を修正する代わりに支出ガードが無効になります。
mini-SWE-agent は OpenAI 互換エンドポイント経由で Claude モデルを使えますか?
はい。openai/ プレフィックスと custom_llm_provider が示すのはベンダーではなくワイヤープロトコルです。litellm は OpenAI 形式のチャット補完リクエストを、設定した api_base に送信し、モデル ID をそのまま渡します。そのため、Claude ID は litellm のプロバイダーテーブルではなく、そのエンドポイントで解決されます。mini 固有の動作として知っておくとよい点があります。解決されたモデル名に "anthropic"、"claude"、"sonnet"、"opus"のいずれかが含まれる場合、mini はキャッシュ制御設定を自動的に追加します。プレフィックス付きの openai/claude-… ID もこれに該当します。
Kunavo は自社エンドポイントで mini-SWE-agent をテストしましたか?
いいえ。2026 年 9 月 21 日に確認したのは mini の公式ドキュメントです。キー、その順序、api_base の形式は同ドキュメントから引用しています。Kunavo は自社エンドポイントで mini のセッションを実行しておらず、このクライアントでのストリーミング、ツールの往復、コスト報告について何も主張していません。具体的に未確認の点は 2 つあります。litellm の openai/ パスが、チャット補完エンドポイントに対してネイティブなツール呼び出し(v2.0 以降の mini のデフォルト)をネゴシエートするかどうか、そしてそのエンドポイントが Claude 名の ID に対して mini が付加する cache_control マーカーを処理するかどうかです。このページの curl でエンドポイントとキーを確認でき、残りは confirm モードで短い初回実行をすれば確認できます。