OpenCode は、ターミナルで動作するオープン プログラミング エージェントです。プロジェクト ファイルの読み取り、コードの編集、コマンドとテストの実行、リポジトリの検索、git との連携を行います。 1 つのモデル プロバイダーに関連付けられていないため、ほぼすべての OpenAI 互換サービスに接続できます。
FreeLLMAPI は、OpenAI 互換の /v1 アドレスの下に数十の AI プロバイダーから無料プランを収集するオープンなセルフホスト ルーターです。 30 個のキー、30 個の制限、およびリクエストが失敗する可能性がある 30 個の場所の代わりに、1 つのローカル ゲートウェイと 1 つの統合キーがあります。ルーター自体が利用可能なモデルを選択し、エラー 429 または 5xx が発生した場合は次のモデルに切り替え、リクエストが無料料金の割り当てを超えないようにします。
この投稿では、FreeLLMAPI のインストール、プロバイダーの追加、ゲートウェイの OpenCode への接続について説明します。
必要なもの
機能するには次の 4 つのものが必要です。
- OpenCode がインストールされています。 エージェントがまだインストールされていない場合は、OpenCode と DeepSeek に関する別のメモでインストール手順について説明しました。
- FreeLLMAPI が実行されています。 最も簡単な方法は、デスクトップ アプリケーションまたは Docker コンテナをインストールすることです。
- Node.js 20.18 以降。 これは、OpenCode を構成する CLI ジェネレーターに必要です。 OpenCode 自体は Node なしでインストールできます。
- 少なくとも 1 つのプロバイダのキー。 Google AI Studio、Groq、Cerebras、Mistral、OpenRouter、NVIDIA、HuggingFace およびカタログのその他のサービスの無料プランが適しています。
FreeLLMAPI のインストール
プロジェクトには複数のインストール パスがあります。ご使用のシステムにとってより便利なものを選択してください。
デスクトップ アプリケーション
Windows と macOS の最も簡単なオプションは、リリース ページにある既製のインストーラーです。 Windows では .exe、macOS では Apple Silicon または Intel の場合は .dmg です。アプリケーションはトレイ内に存在し、ルーターとコントロール パネルをローカルで起動します。
デスクトップ バージョンにはパスワードは必要ありません。パネルは非表示のローカル アカウントを介して独自にログインします。必要な認証情報は、トレイ ポップアップ ウィンドウまたは [キー] ページ ヘッダーからの統合キーのみです。
アプリケーション データは 1 つのディレクトリにあります。
- Windows — %APPDATA%\FreeLLMAPI\
- macOS — ~/Library/Application Support/FreeLLMAPI/
- Linux — ~/.config/FreeLLMAPI/
Docker
Docker がすでにインストールされている場合は、1 つのコマンドでサーバーが起動されます。スクリプトは ~/freellmapi ディレクトリを作成し、暗号化キーを生成し、イメージをダウンロードしてコンテナを起動します。
curl -fsSL https://freellmapi.co/install.sh | bash
スクリプトを再度実行しても安全です。.env ファイルと暗号化キーが保存され、コンテナーが最新バージョンに更新されます。 Windows では、このメソッドは WSL または任意の bash 環境で機能します。
起動後、次の場所でパネルが開きます。
http://localhost:3001
サーバーをインストールするには、電子メールとパスワードを使用してアカウントを作成する必要があります。パスワードを忘れた場合、リセット コードがコンテナ ログに出力されます。
docker compose logs -f freellmapi
Docker Compose
構成を git に保持し、起動を手動で管理したい場合は、通常の Compose で十分です。 macOS および Linux の場合:
git clone https://github.com/tashfeenahmed/freellmapi.git
cd freellmapi
ENCRYPTION_KEY="$(openssl rand -hex 32)"
printf "ENCRYPTION_KEY=%s\nPORT=3001\n" "$ENCRYPTION_KEY" > .env
docker compose up -d
Windows PowerShell の場合:
git clone https://github.com/tashfeenahmed/freellmapi.git
cd freellmapi
$Bytes = New-Object Byte[] 32
[Security.Cryptography.RandomNumberGenerator]::Create().GetBytes($Bytes)
$ENCRYPTION_KEY = -join ($Bytes | ForEach-Object { "{0:x2}" -f $_ })
"ENCRYPTION_KEY=$ENCRYPTION_KEY`nPORT=3001" | Out-File -Encoding utf8 .env
docker compose up -d
ENCRYPTION_KEY キーは必須です。SQLite データベース内のプロバイダー キーを暗号化するために使用されます。その場で変更することはできません。古いシークレットは復号化されなくなります。ローテーションの場合、プロジェクトには別のコマンドrotate-encryption-keyがあります。
ソースから実行
開発またはデバッグの場合、Node.js を通じてプロジェクトを実行できます。
git clone https://github.com/tashfeenahmed/freellmapi.git
cd freellmapi
npm install
ENCRYPTION_KEY="$(node -e 'console.log(require("crypto").randomBytes(32).toString("hex"))')"
printf "ENCRYPTION_KEY=%s\nPORT=3001\n" "$ENCRYPTION_KEY" > .env
npm run dev
このモードでは、API とパネルはポート 3001 で起動され、Vite インターフェイスは 5173 で起動されます。
初回起動キーとプロバイダー キー
パネルを開き、[キー] ページに移動して、使用するサービスのキーを追加します。各プロバイダーのインターフェイスには、登録へのリンクとキーを取得する場所のヒントが含まれています。 Google AI Studio や Groq など、1 つか 2 つから始めるだけで十分です。
追加されると、キーはヘルスチェックを受けます。プロバイダーがエラーで応答した場合、キーはリストに残りますが、異常としてマークされます。再度チェックするか、削除することができます。
次に、モデル ページに移動して、利用可能なモデルを確認する必要があります。ここでは、ルーティング戦略とフォールバック チェーン (エラーや制限が発生した場合にルーターが進むチェーン) の順序も設定できます。 自動 モデルは、ルーター自体によって選択が行われることを意味します。これに加えて、auto:fast、auto:smart などのオプションや、特定のタスク用の名前付きプロファイルも利用できます。
チェーン内にツールをサポートするモデルがあるかどうかを確認することも重要です。 OpenCodeはツール呼び出しを積極的に利用しており、この機能が無いモデルではファイルの読み込みやコマンドの実行が正常に行えません。
統合キーは、キー ページ、またはデスクトップ アプリケーションのトレイで取得されます。プレフィックスが付いた文字列のように見えます。
freellmapi-...
OpenCode で示されるのは、個々のプロバイダーのキーではなく、このキーです。
OpenCode に接続
FreeLLMAPI には、実行中のゲートウェイからモデル ディレクトリを読み取り、既存の構成のバックアップ コピーを作成し、それにプロバイダーを慎重に追加する構成ジェネレーターがあります。
まずは環境変数に統一キーを設定しましょう。ジェネレーターは個別のフラグの代わりにそれを読み取るため、シークレットはコマンド履歴に残りません。
macOS および Linux の場合:
export FREELLMAPI_API_KEY=freellmapi-YOUR_KEY
Windows PowerShell の場合:
$env:FREELLMAPI_API_KEY="freellmapi-YOUR_KEY"
では、正確に何が記録されるかを見てみましょう。
npx freellmapi setup-opencode --url http://localhost:3001 --dry-run
diff に問題がない場合は、フラグを指定せずにコマンドを繰り返します。
npx freellmapi setup-opencode --url http://localhost:3001
ジェネレーターはグローバルな OpenCode 構成を書き込みます。
~/.config/opencode/opencode.json
freellmapi プロバイダーは、@ai-sdk/openai-compatibility パッケージ、ベース アドレス http://localhost:3001/v1、およびライブ カタログからのモデルのマップとともに表示されます。デフォルトのモデルはfreellmapi/autoになります。
キー自体はファイルには含まれません。構成には置換 {env:FREELLMAPI_API_KEY} が含まれています。したがって、変数はエージェントの起動時に設定されたままにする必要があります。
opencode
この方法は、シークレットが構成内に保存されず、git 内にも保存されないため、便利です。 CI および 1 回限りの実行の場合、これはキーをファイルに保存するよりも正確です。
手動設定
ジェネレーターを実行したくない場合は、opencode.json にプロバイダーを手動で記述することができます。最小のオプションは次のようになります。
{
"$schema": "https://opencode.ai/config.json",
"model": "freellmapi/auto",
"provider": {
"freellmapi": {
"npm": "@ai-sdk/openai-compatible",
"name": "FreeLLMAPI",
"options": {
"baseURL": "http://localhost:3001/v1",
"apiKey": "{env:FREELLMAPI_API_KEY}"
},
"models": {
"auto": {
"name": "FreeLLMAPI Auto Router",
"limit": { "context": 1048576, "output": 65536 }
}
}
}
}
}
最上位のモデル フィールドは重要です。これがないと、OpenCode は引き続き以前のモデルを使用するか、新規インストールで何も選択されない可能性があります。コンテキストと出力制限を発明するのではなく、ゲートウェイ応答から取得することをお勧めします。
curl http://localhost:3001/v1/models
手動で切り替える必要がある場合は、特定の識別子をモデル リストに追加できます。ただし、日常の作業では自動で十分です。ルーター自体がライブ モデルを選択し、制限に達すると切り替えます。
使用方法
オープンコードを起動すると、おなじみのコマンドでモデルのリストが開きます。
/models
FreeLLMAPI プロバイダーと自動モデルが含まれます。その後は通常どおり作業が進みます。タスクを説明し、@ でファイルを指定し、Tab キーで計画モードを切り替え、/undo コマンドで編集内容をロールバックします。新しいプロジェクトの場合、/init を実行してエージェントに AGENTS.md を作成させると便利です。
いくつかの実践的なヒント:
- ルーティング。 ルーチンの場合は、自動のままにします。速度が必要な場合は、品質が auto:smart またはカタログの特定の強力なモデルであれば、auto:fast を試してください。
- 診断 各ゲートウェイの応答には、実際にリクエストを処理したプロバイダーとモデルの名前を含む X-Routed-Via ヘッダーが含まれています。ルーターがタスクを送信した場所が表示されます。
- 分析。 [分析] ページのパネルには、リクエストの量、成功、p50/p95 遅延、プロバイダーごとのトークン消費量が表示されます。
- 対話の継続性。 会話の途中でモデルを切り替える場合、ゲートウェイはコンテキストの転送に関する短いメモを追加できます。変数 FREELLMAPI_CONTEXT_HANDOFF=on_model_switch によって有効になります。
OpenCode がコンテナー内で実行され、FreeLLMAPI がホスト上で実行されている場合、localhost はコンテナー自体を指します。この場合、host.docker.internal またはベース URL のコンテナーからアクセスできる別のアドレスを使用する必要があります。
注意すべきこと
FreeLLMAPI は有料モデルの代替品ではなく、SLA のあるサービスでもありません。これは、無料プランを 1 つのきちんとしたゲートウェイにバンドルする方法です。したがって、いくつかの制限があります。
- 品質は変動します。 無料料金が終了し、1 日あたりの割り当て量が使い果たされ始める夕方遅くに、ルーターは性能の低いモデルに切り替わる可能性があります。割り当ては通常、UTC の午前 0 時にリセットされます。
- レイテンシは変動します。 プロバイダーごとに対応が異なるため、バックアップ モデルに切り替えると、リクエストに著しく時間がかかる場合があります。
- フラッグシップ モデルはありません。 優れたモデルはありますが、トップエンドではありません。無料プランで利用できます。複雑なアーキテクチャの場合、これは検討する価値があります。
- ゲートウェイは実行されている必要があります。 アプリケーションまたはコンテナが停止している場合、OpenCode は応答を受け取りません。トレイ内のアプリケーションを自動起動するか、コンテナ ポリシーを再起動すると、この問題は解決します。
- プロジェクトは 1 人のユーザー向けに設計されています。 プロバイダー キーはローカルに保存され、暗号化されていますが、複数人でパネルを共有することは、このツールのシナリオではありません。統合キーと .env は、通常のシークレットと同じ方法で保護する必要があります。
そして、もう 1 つのニュアンスがあります。モデル カタログは自動的に更新されますが、無料インストールではカタログのスナップショットが約 30 日遅れて受信されます。プレミアム有料プランではアップデートが高速化されますが、プロジェクトに慣れる必要はありません。ルーター自体は無料でオープンなままです。
リンク
https://github.com/tashfeenahmed/freellmapi
https://freellmapi.co/
https://freellmapi.co/models
https://github.com/tashfeenahmed/freellmapi/releases/latest
https://github.com/tashfeenahmed/freellmapi/blob/main/docs/en/install/01-install.md
https://github.com/tashfeenahmed/freellmapi/blob/main/docs/en/clients/01-agent-clients.md
https://github.com/tashfeenahmed/freellmapi/blob/main/cli/README.md
https://opencode.ai/
https://opencode.ai/docs/
https://opencode.ai/docs/providers/
ソース
https://github.com/tashfeenahmed/freellmapi
https://github.com/tashfeenahmed/freellmapi/blob/main/README.ru.md
https://github.com/tashfeenahmed/freellmapi/blob/main/docs/en/install/01-install.md
https://github.com/tashfeenahmed/freellmapi/blob/main/docs/en/clients/01-agent-clients.md
https://github.com/tashfeenahmed/freellmapi/blob/main/docs/en/clients/02-supported-agents.md
https://github.com/tashfeenahmed/freellmapi/blob/main/cli/README.md
https://opencode.ai/docs/providers/
Leave a Reply