ドキュメント

ドキュメント

Theia IDE

Theia IDEには、任意のOpenAI互換モデルを利用するためのプロバイダーがあり、settings.jsonでリストとして設定します。モデルidごとにエントリーを1つ作成し、すべて同じベースURLと同じキーを指定します。

ai-features.openAiCustom.customOpenAiModels内の1つのエントリ — model、url、apiKey — で、Theia Coder、Architect、インライン補完のバックエンドとしてKunavoを利用できます。

settings.json — ai-features.openAiCustom.customOpenAiModels
{
  "ai-features.openAiCustom.customOpenAiModels": [
    {
      "model": "claude-sonnet-5",
      "url": "https://api.kunavo.com/v1",
      "id": "kunavo-sonnet-5",
      "apiKey": "sk-kn-...",
      "developerMessageSettings": "system"
    },
    {
      "model": "claude-haiku-4-5",
      "url": "https://api.kunavo.com/v1",
      "id": "kunavo-haiku-4-5",
      "apiKey": "sk-kn-...",
      "developerMessageSettings": "system"
    }
  ]
}
urlには/v1を含めます。Theiaの説明文にはルールが記載されていません。Readmeでは「modelとurlは必須属性であり、使用するエンドポイントとモデルを示す」とだけ説明されています。形式を判断する根拠は、同じドキュメントページにある、OpenAI以外の唯一のベンダーの設定例、"url": "https://api.mistral.ai/v1"です。サフィックスを含むエンドポイントのルートなので、ここではオリジンだけではなくhttps://api.kunavo.com/v1を指定します。リクエストが404になる場合、まずこのフィールドを確認してください。下のcurlを使えば、エンドポイントが実際にどちらの形式で応答するかを確認できます。
Theia IDEであり、Theiaフレームワークではありません。同じ名称は、エンドユーザー向けのアプリケーションと、ほかのツールを構築するためのプラットフォームの両方を指します。上記の設定は、IDEとTheia AIのOpenAIプロバイダーパッケージ用です。Theia上で独自の製品を開発している場合、フィールド名は同じですが、設定場所はこの設定ファイルではなく、製品独自の設定です。
この設定は、下記の日付時点でTheiaの公式ドキュメントを確認して作成しました。Kunavoでは、Kunavoのエンドポイントを使ったTheia IDEの動作確認を行っていません。チャットのターン、インライン補完、ツール呼び出しのいずれもテストしていません。設定例の公開はテストを意味せず、このページをテスト結果として受け取らないでください。10秒で確認できるのは、下のcurlです。クライアントの動作については、あなたとTheiaの間で確認することになります。
Kunavoは埋め込み、テキスト読み上げ、音声認識の各モデルを提供していないため、このエンドポイントが応答するのはチャット補完のみです。IDEについて説明されているAI機能(チャットエージェント、インライン補完、ターミナル支援)はチャット補完のみを必要とします。設定内のほかの場所にあるベクトルインデックスや音声処理では、現在使っているプロバイダーキーを引き続き使用できます。
まだキーをお持ちですか?Kunavoアカウントを作成し、キーを作成します(sk-kn-で始まります)。$10からクレジットを追加すると、呼び出しはその残高から支払われ、失敗した呼び出しは課金されません。ダッシュボードを開くと、Theia IDE設定が表示されます。

手順

  1. /app/keys でキーを作成してコピーします。キーは一度だけ表示されます。
  2. 機能を有効にします。Theiaのドキュメントでは、Preferencesを開き、設定「AI-features => AI Enable」を有効にするよう案内しています。この操作を行うまで、以下の項目は表示されません。
  3. AI Configurationビューを開きます。Alt+Aを選択するか、左下のManage(歯車)メニューで、Settingsのすぐ下にあるAI Configurationを選択します。カテゴリはGeneral、Providers & Models、Model Aliases、Agents、Prompts & Skills、Variables、Tools、Token Usage、MCP Serversです。
  4. 上記のエントリーを追加します。ドキュメントでは、OpenAI Compatible Modelsの設定セクションにあるリンクをクリックする手順として説明されています。この設定項目は構造化リストです。専用エディターのない構造化設定は「settings.jsonに委ねられる」とTheiaは説明しており、そこから開くのがこのファイルです。モデルidごとにオブジェクトを1つ設定します。urlとapiKeyは繰り返し使います。
  5. 接続先を指定します。Agentsでは、各エージェントにLanguage Modelセレクターがあります。多くのエージェントはモデルエイリアスを参照するため、Model Aliasesの下にあるdefault/code、default/universal、default/code-completion、default/summarize、default/fastを設定すれば、複数のエージェントをまとめて切り替えられます。
  6. Theia Coderにチャットメッセージを送り、ファイルに関わる作業を依頼します。このIDEのエージェントはツール呼び出しとワークスペース内のコンテンツを活用するため、挨拶ではなく、何かを読み取ったり編集したりする初回実行のほうが多くのことを確認できます。同じビューのToken Usageでは、そのターンのトークン消費量も確認できます。

Theia IDEのAI機能ページの「OpenAI Compatible Models」セクションで2026年9月21日に確認しました。サードパーティの設定は変更されます。ここに記載されたフィールド名が表示内容と一致しなくなった場合は、このページではなく、そのページを正しい情報源としてください。

クライアントをデバッグする前に確認すること

1回のリクエストで、失敗の原因がエンドポイント、キー、設定ファイルのどれかを特定できます。これがJSONを返すなら、同じベースURLとキーがTheia IDEで機能します。

# 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で、入力 / 出力の順です。

モデル IDKunavo 入力 / 出力Theia IDEでの位置付け
claude-sonnet-5$1.40 / $7.00Theia Coderとデフォルトのcodeエイリアス — ファイルを編集するモデル
claude-opus-5$3.50 / $17.50Plan ModeのArchitect。誤った計画が大きな損失につながる場面
claude-haiku-4-5$0.70 / $3.50default/fast、default/summarize、default/code-completion — チャットでの命名、ルックアップ、コンテキスト圧縮、入力中の補完
gpt-5-6-sol$2.00 / $12.00別系統モデルからのセカンドオピニオン — エントリをもう1つ追加し、同じURLとキーを使用
請求は月額料金なしの前払い残高からトークン単位で行われます — 請求を参照してください。繰り返し送られるコンテキスト(エディターやチャットクライアントが送る内容の大半)では、プロンプトキャッシュのほうがモデル選択より請求額を大きく左右します。

Theiaがこのプロバイダーについて説明している内容

Theia自身のページにある「LLM Providers Overview」表では、各プロバイダーを3つの軸で評価しています。これはTheiaがTheiaについて述べている内容で、上記の日付にその表から転記したものです。Kunavoによるテスト結果ではありません。また、「モデルIDに必要な条件」という列だけが、このページで記載した内容です。

Theiaの表の記載OpenAI CompatibleモデルIDに必要な条件
ストリーミングはい(状態:公開)追加設定は不要です。Readmeには同じオブジェクトのenableStreamingが記載されており、デフォルトはtrueです。ターンが停止してストリームを切り分けたい場合は、falseに設定してください。
ツール呼び出しはい(状態:公開)ツールに対応したモデルIDが必要です。ファイルの編集、コマンドの実行、MCPサーバーの操作を行うエージェントはすべてツール呼び出しを使うため、ツールに対応していないIDでは通常のチャットしかできません。
構造化出力はい(状態:公開)設定時に追加で必要なものはありませんが、1つのエンドポイントの背後にある異なる系統のID間で最も違いが出やすい項目です。

Theiaは、この表の2段落上で注意点も述べています。このページ全体の誠実な前提として、繰り返す価値があります。すべてのモデルが「そのまま動作するとは限らず、特定のカスタマイズや最適化が必要になる場合があります」。

実際に費用がかかるもの

Theia IDEはオープンソースで、無料でダウンロードできます。また、AI機能自体に料金はかかりません。費用が発生するのはapiKey内のキーを保持する事業者が請求するモデル呼び出しです。モデルの選択よりも請求額に大きく影響する設定が2つあり、どちらもドキュメントに記載されています。

  1. Automatic Code Completionはデフォルトで有効になっており、ドキュメントでは「コーディング中に基盤となるLLMへ継続的にリクエストを送信する」と説明されています。これは1日に何千回も実行されるエージェントです。default/code-completionを低価格のIDに固定するか、'AIFeatures'=>'CodeCompletion'でエージェントを手動モードに切り替えて、Ctrl+Alt+Spaceで実行してください。
  2. 同じ設定グループにあるMax Context Linesは、各補完リクエストで周辺ファイルから取り込む量を制限します。その行はすべて、キー入力に応じて送られるリクエストごとに入力トークンとして課金されます。

チャットエージェントは対照的です。リクエスト回数は少ない一方、コンテキストははるかに大きく、同じワークスペースのファイルがターンごとに再送信されます。これがプロンプトキャッシュを使う場面です。詳しくは/docs/cachingをご覧ください。そのため、上のモデル表の2つの部分は、エージェントの賢さではなく、実行頻度で分けています。

接続できない場合

  1. 404 — urlです。Kunavoは/v1/chat/completionsを提供しているため、このフィールドには/v1のルートを指定します。オリジンだけの場合も、.../chat/completions全体を指定した場合も一致しません。
  2. 401 — キーの問題です。TheiaのReadmeには、apiKeyは「認可リクエストでBearerトークンとして送信される」と記載されており、これはsk-kn-キーが想定する動作とまったく同じです。文書に記載されたデフォルトの動作に注意してください。apiKeyがまったくない場合、Theiaはno-keyを送信するため、フィールドが欠落していると、キーが存在しないのではなく、キーが拒否されたように見えます。(trueは「グローバルのOpenAI APIキーを使用する」という意味であり、ここで意図する動作ではありません。)
  3. モデルIDが選択肢にない — この一覧はエンドポイントから取得するのではなく、独自のcustomOpenAiModelsエントリから作られるため、IDが見当たらない場合はオブジェクトがありません。idフィールドに指定した値がUIに表示されます。省略すると、モデル名が代わりに使われます。
  4. 最初のsystemメッセージが拒否または無視される — 原因はdeveloperMessageSettingsです。デフォルトはdeveloperで、OpenAI形式のロールです。OpenAI以外のベンダー向けにTheiaが示している例ではsystemを設定しているため、上の設定例もそうしています。user、mergeWithFollowingUserMessage、skipもドキュメントに記載された代替方法です。
  5. どこでも何も応答しない — Workspace Trustを確認してください。TheiaはすべてのAI機能をこれで制御しており、信頼されていないワークスペースではチャット入力とインライン補完が無効になり、AI Features are Restrictedというメッセージが表示されます。

よくある質問

Theia IDEでカスタムのOpenAI互換APIを使うにはどうすればよいですか?

Preferencesで「Enable AI-features => AI Enable」を有効にし、ai-features.openAiCustom.customOpenAiModels設定にエントリを追加します。各エントリはTheiaの例と同じ順序で、model、url、id、apiKey、developerMessageSettingsを持つオブジェクトです。必須なのはmodelとurlの組み合わせです。このリストは構造化設定のため、編集するにはIDEからsettings.jsonを開きます。その後、AI Configurationビューの「Agents」でモデルをエージェントに割り当てるか、モデルエイリアスのいずれかに割り当てます。

Theia IDEのurlフィールドには末尾に/v1が必要ですか?

KunavoのようなOpenAI互換エンドポイントでは、必要です。Theiaのドキュメントにはルールが文章で明記されていません。Readmeには、modelとurlが使用するエンドポイントとモデルを示すとだけ書かれています。しかし、同じページにあるOpenAI以外のベンダー向けの例では、エンドポイントのルートにサフィックスが付いています。"url": "https://api.mistral.ai/v1"と記載されています。そのため、https://api.kunavo.com/v1を使用してください。/v1がなかったり重複したりすると、認証エラーではなく404になります。これでキーの問題と見分けられます。

Theia IDEではAnthropicアカウントなしでClaudeモデルを使えますか?

はい、方法は2つあります。TheiaにはAnthropicキーを直接指定するAnthropicプロバイダーがあり、OpenAI形式のリクエストを設定した任意のurlへ送信し、モデルIDをそのまま渡すOpenAI Compatibleプロバイダーもあります。後者では、IDはIDE内ではなくそのエンドポイントで解決されるため、使用する認証情報はエンドポイントのものです。KunavoはOpenAI互換のインターフェースでClaude IDに応答します。このページではその組み合わせを説明しています。

Theiaの各エージェントには、どのモデルを割り当てればよいですか?

このIDE内でこれらのIDをベンチマークした人はいないため、順位ではなくエージェントの実行頻度で分けてください。Code Completionは入力中に継続的に実行され、コンテキストはMax Context Linesで制限されるため、低価格のIDが適しています。Theia Coderはファイルを編集するため、ツール呼び出しに対応したモデルが必要です。Architect in Plan Modeは、より高性能で高価なIDの価値が出る場面です。計画が悪いとセッション全体が無駄になるためです。default/code、default/code-completion、default/fastなどのモデルエイリアスを使うと、複数のエージェントをまとめて切り替えられます。

KunavoはTheia IDEでエンドポイントをテストしましたか?

いいえ。2026年9月21日に確認したのはTheia自身のドキュメントです。設定ID、フィールド名とその順序、ベースURLの形式を、theia-ide.org/docs/user_ai/と、そこからリンクされているai-openai Readmeから引用しました。KunavoではTheiaのセッション、インライン補完、ツールの一連のやり取りを実行しておらず、このクライアントの動作について主張するものではありません。ご自身で確認できるのは、エンドポイントとキーが機能するかどうかです。このページのcurlで確認できます。