AI SDK
統一された AI モデル設定センターを提供し、主要な AI モデルをサポートします。一度設定すればどこでも利用可能で、API Key の重複設定は不要です。
注意:この機能は Eagle 4.0 Build20 以上のバージョンで利用可能です(現在未リリース、詳細なリリース日程は Eagle 公式サイトをご確認ください)
AI SDK 依存プラグインの概要

「AI SDK 依存プラグイン」はプラグイン開発者向けの開発ツールキットであり、統一された AI モデル設定センターを提供します。主要な AI モデルをサポートし、一度設定すればどこでも利用可能です。AI SDK を統合することで、開発者は自身のプラグインにテキスト生成、構造化オブジェクト生成、ストリーミング処理などの AI 機能を簡単に実装できます。
統一設定センター:一度の設定でどこでも利用可能
AI SDK プラグインは以下の 8 つの Provider をサポートしています:
商用モデル:
OpenAI(GPT-5.2、GPT-5、o3 など)
Anthropic Claude(Claude Sonnet 4.6、Claude Opus 4.6 など)
Google Gemini(Gemini 3 Pro、Gemini 3 Flash など)
DeepSeek(DeepSeek V3、DeepSeek R1 など)
Tongyi Qwen (通義千問)(Qwen3 シリーズ)
ローカルモデル(完全オフライン実行):
Ollama(Llama 4、Qwen3、Gemma 3 などをサポート)
LM Studio(GUI 搭載、初心者にも使いやすい)
OpenAI 互換プロトコル:
OpenAI Compatible — OpenAI API プロトコルに互換性のある任意のサービスエンドポイント(Groq、Together AI、Fireworks、vLLM など)に接続可能です。Base URL を入力するだけで利用でき、API Key は任意です。
今後のバージョンでさらに多くの主要モデルサービスプロバイダーのサポートを順次追加する予定です。
一度設定すれば、すべての AI 関連プラグインがそのまま利用でき、重複した設定は不要です。例えば、「AI 翻訳」と「AI リネーム」プラグインをインストールした場合、どちらも AI SDK で設定した内容を自動的に共有し、それぞれ異なるモデルを選択することもできます。API Key を再入力する必要はありません。
オープンな開発環境
ai-sdk.dev 標準(AI SDK v6)に基づき、AI SDK プラグインは開発者にクリーンで安定した基盤を提供します。開発者は API Key の保存、モデルの切り替え、エラー処理などの基本設定に手間をかける必要がなく、プラグインの機能革新に集中できます。唯一の違いは Provider の取得方法です——より良い安定性とユーザー体験を確保するため、独自開発の Provider を使用しています。
バージョン説明:このプラグインは AI SDK v6 をベースに構築されており、ai-sdk.dev の公式ドキュメントと同期しています。
インストールと設定
インストール手順
Eagle プラグインセンターを開きます
「AI SDK」プラグインを検索します
インストールをクリックします
インストール完了後、環境設定を開き、左側のサイドバーで「AI モデル」を見つけます
右側の設定エリアでモデルサービスプロバイダーを設定し、デフォルトモデル(言語モデル、ビジョンモデル)を設定します
ユーザーが AI SDK 依存のプラグインをインストールすると、Eagle は自動的に「AI SDK 依存プラグイン」のインストールを促します。そのため、開発者がインストール用のコードを別途記述する必要はなく、システムが関連する依存関係がインストールされていることを自動的に確認してからプラグインの実行を許可します。
manifest.json で依存関係を宣言する
プラグインの manifest.json に dependencies フィールドを追加します:
重要な設定は "dependencies": ["ai-sdk"] です。これにより Eagle はこのプラグインが AI SDK を必要とすることを認識します。
クイックスタート
AI SDK モジュールの取得:
推奨方法:デフォルトモデルを使用する
ユーザーは通常、環境設定の「AI モデル」で、好みの言語モデルとビジョンモデルを事前に選択しています。getDefaultModel() でユーザーの選択をそのまま継承するのが、最もシンプルで推奨される方法です:
🦄 ベストプラクティス: コード内に特定の Provider やモデル名をハードコーディングするのではなく、getDefaultModel("chat") でユーザーの好みのモデルを優先的に取得してください。これには 2 つの大きな利点があります:
開発が楽になる——モデルセレクターを自分で実装する必要がなく、AI SDK でのユーザーの設定をそのまま継承できます。
設定の問題を回避——コード内で
openai("gpt-5")を指定しても、ユーザーが OpenAI を設定していなければエラーになります。デフォルトモデルを使用すれば、ユーザーが既に設定・検証済みであることが保証されます。
特定の Provider を指定する
プラグインが特定の Provider を必要とする場合(例:OpenAI のみがサポートする機能)、直接指定することもできます:
コアコンセプト
Provider と Model の関係
AI SDK は二層構造を採用しています:Provider(プロバイダー)は API 接続と認証を管理し、Model(モデル)は実際に AI タスクを実行する単位です。
provider::model 形式
重要: Provider と Model の間はダブルコロン :: で区切ります。シングルコロンやスラッシュではありません。
この形式は getModel() や getDefaultModel() などのメソッドで使用されます。
同期 vs 非同期メソッド
AI SDK のメソッドは同期と非同期に明確に分類されています:
同期メソッド(await 不要):
getProviders()、getProvider()、getAvailableProviders()、getModel()getDefaultModel()
非同期メソッド(await が必要):
generateText()、generateObject()、streamText()、streamObject()Provider インスタンスの
verify()、getModels()、hasModel()
Model を取得する 3 つの方法
🦄 ベストプラクティス: プラグインに特別な要件(例:特定の Provider のみがサポートする機能)がない限り、getDefaultModel() でユーザーの好みのモデルを優先的に使用してください。
generateText() — 基本テキスト生成
指定したモデルを使用してテキスト応答を生成します。
基本的な使い方(prompt)
messages 配列の使用
messages を使用してシステムプロンプトとマルチターン会話を設定できます:
マルチモーダル(テキスト + 画像)
generateText の高度な使い方(maxTokens、temperature などのパラメータ)については、AI SDK 公式ドキュメントを参照してください。
generateObject() — 構造化オブジェクト生成
指定した Schema に従って AI に構造化 JSON オブジェクトを返させます。
Zod Schema の使用
JSON Schema の使用
画像分析の例
generateObject の高度な使い方については、AI SDK 公式ドキュメントを参照してください。
streamText() — ストリーミングテキスト生成
ストリーミング方式で AI の応答を段階的に受信します。リアルタイムで結果を表示する必要がある場面に適しています。
UI にリアルタイム表示する
streamText の高度な使い方については、AI SDK 公式ドキュメントを参照してください。
streamObject() — ストリーミングオブジェクト生成
ストリーミング方式で構造化オブジェクトを段階的に受信します。各イテレーションで現時点までに解析された部分オブジェクトを受け取ります。
🦄 ベストプラクティス: streamObject は UI 上で分析結果を段階的に表示する場面に適しており、AI の処理が完了する前からユーザーに部分的な結果を表示できます。
streamObject の高度な使い方については、AI SDK 公式ドキュメントを参照してください。
Provider 管理メソッド
以下のメソッドはすべて同期メソッドであり、await は不要です。
getProviders()
登録済みのすべての Provider の配列を取得します。
戻り値
ProviderFunction[]— すべての Provider の配列
注意: getProviders() が返すのは配列であり、オブジェクトではありません。以下の書き方は誤りです:
getProvider(providerName)
指定した名前の Provider を取得します。
providerNamestring — Provider 名(例:"openai"、"google")戻り値
ProviderFunction | undefined— 見つかった Provider。存在しない場合はundefinedを返します
特定の Provider を取得する場合、getProviders() よりも getProvider() を使用する方がコードが簡潔になります。ただし、ほとんどの場合は getDefaultModel() を直接使用するのがより良い選択です。
getAvailableProviders()
設定済み(ユーザーが設定を完了した)すべての Provider を取得します。
戻り値
ProviderFunction[]— 設定済みの Provider の配列
このメソッドと getProviders() の違い:getProviders() はすべての 8 つの Provider(未設定を含む)を返しますが、getAvailableProviders() はユーザーが設定を完了した Provider のみを返します。
getModel(providerAndModel)
provider::model 形式でモデルインスタンスを直接取得します。
providerAndModelstring —"provider::model"形式戻り値
Model—generateText()などのメソッドに直接渡せるモデルオブジェクト
注意: Provider と Model 名の区切りには必ず :: ダブルコロンを使用してください。そうしないとエラーがスローされます。
設定とリロード
open()
環境設定の「AI モデル」設定パネルを開きます。プラグインインターフェースに「モデル設定」ボタンを設置し、ユーザーがモデルサービスプロバイダーとデフォルトモデルを素早く設定できるようにするのに適しています。
戻り値
void
🦄 ベストプラクティス: getDefaultModel() が undefined を返す場合(ユーザーがまだデフォルトモデルを設定していない場合)、プラグインインターフェースにメッセージを表示し、open() を呼び出すボタンを提供して、ユーザーを設定完了に導いてください。
reload()
AI SDK の設定をリロードします。ユーザーが open() で設定パネルを開いて設定を変更した後、このメソッドを呼び出すことで最新の設定を読み取れます。
戻り値
void
open() はプログラムの実行をブロックしないため、ユーザーが設定を完了するタイミングをシステムは把握できません。モデルを使用する必要がある時に reload() を呼び出して、最新の設定を確実に読み取ることを推奨します。
デフォルトモデルメソッド
AI SDK はデフォルトモデルの設定と読み取りをサポートしており、ユーザーは環境設定の「AI モデル」で好みのモデルを統一的に指定できます。
getDefaultModel(type)
指定した型のデフォルトモデルを取得します。これは同期メソッドです。
typestring — モデルの型。選択可能な値:"chat"(言語モデル)または"image"(ビジョンモデル)戻り値
string | undefined— デフォルトモデルの"provider::model"文字列。未設定の場合はundefinedを返します
ユーザーは環境設定の「AI モデル」で言語モデル("chat")とビジョンモデル("image")をそれぞれ選択でき、プラグインは必要に応じてそれぞれを取得できます。
Provider インスタンスメソッド
getProvider() で取得した Provider インスタンスは、関数として呼び出して Model を取得できるほか、以下のメソッドも提供しています。
verify()
Provider の接続と認証が有効かどうかを検証します。ユーザーの現在の設定で正常に接続できるかを確認するために使用します。
戻り値
Promise<VerifyResult>— 検証結果オブジェクトokboolean — 検証が成功したかどうかerrorAPIError(オプション) — 失敗時のエラー詳細
注意: verify() が返すのは boolean ではなく、ok と error を含むオブジェクトです。
getModels()
この Provider で利用可能なすべてのモデルリストを取得します。
戻り値
Promise<string[]>— モデル ID の配列
このメソッドは Provider の API にリクエストを送信します。ユーザーが該当 Provider の設定を完了していることを確認してください。未設定の場合は APIError がスローされます。
hasModel(modelId)
この Provider に指定したモデルが含まれているかを確認します。
modelIdstring — モデル ID(例:"gpt-5")戻り値
Promise<boolean>— 存在するかどうか
Provider インスタンスプロパティ
以下は Provider インスタンスの読み取り専用プロパティです:
name string
name stringProvider の名前です。
baseURL string | undefined
baseURL string | undefined現在設定されている API エンドポイントです。
サポート対象 Provider 一覧
OpenAI
"openai"
商用(クラウド)
手動設定が必要
Anthropic
"anthropic"
商用(クラウド)
手動設定が必要
Google Gemini
"google"
商用(クラウド)
手動設定が必要
DeepSeek
"deepseek"
商用(クラウド)
手動設定が必要
Tongyi Qwen (通義千問)
"tongyi"
商用(クラウド)
https://dashscope.aliyuncs.com/compatible-mode/v1
Ollama
"ollama"
ローカル
http://localhost:11434/v1
LM Studio
"lmstudio"
ローカル
http://localhost:1234/v1
OpenAI Compatible
"openai-compatible"
カスタム(互換プロトコル)
手動設定が必要(API Key は任意)
OpenAI Compatible は、OpenAI API プロトコルを実装するすべてのサービスで動作します。ユーザーは Base URL を入力するだけで利用でき、API Key は任意です(一部のクラウドサービスでは必要ですが、ローカルサーバーでは通常不要です)。URL の末尾に /v1 が含まれていない場合、システムが自動的に追加します。
注意: Google Gemini の Provider 名は "google" であり、"gemini" ではありません。
エラー処理
APIError クラス
AI SDK は API リクエストが失敗した際に APIError をスローし、完全なエラー情報を含みます。
プロパティ
message
string
エラーメッセージ
status
number | undefined
HTTP ステータスコード(例:401、403、500)
statusText
string | undefined
HTTP ステータステキスト(例:"Unauthorized")
code
string | undefined
エラーコード(レスポンス内容から抽出)
provider
string | undefined
Provider 名
url
string | undefined
リクエスト URL
responseBody
unknown
サーバーが返した元のエラー内容
メソッド
toJSON()
完全なエラー詳細オブジェクトを返します(ログ記録に適しています)
toString()
エラーメッセージ文字列を返します
エラー処理の例
ネットワークエラー
Provider に接続できない場合(例:ローカルの Ollama が起動していない場合)も APIError が発生します:
ベストプラクティス
1. デフォルトモデルを優先的に使用する
これが最も重要な推奨事項です。コード内に特定の Provider やモデルをハードコーディングするのではなく、getDefaultModel() で AI SDK 設定インターフェースでのユーザーの好みを直接継承してください:
なぜモデルをハードコーディングすべきでないのか? コード内で ai.getProvider("openai")("gpt-5") を指定しても、ユーザーが OpenAI を設定していなければエラーになります。「Provider が未設定」というエッジケースを追加で処理する必要があり、これは面倒です。デフォルトモデルを使用すれば、ユーザーが既に設定・検証済みであることが保証され、大量の防御的コードを省けます。
2. verify() の結果を正しく処理する
3. ストリーミングは長文テキスト生成に適している
応答が長くなることが予想される場合、streamText() を使用するとより良いユーザー体験を提供できます:
完全な例
以下は AI SDK の主要な機能の正しい使い方を示す総合的なプラグインの例です:
API クイックリファレンス
AI SDK トップレベルメソッド
getProviders()
同期
ProviderFunction[]
すべての Provider を取得
getProvider(name)
同期
ProviderFunction | undefined
指定した Provider を取得
getAvailableProviders()
同期
ProviderFunction[]
設定済みの Provider を取得
getModel(provider::model)
同期
Model
モデルインスタンスを取得
getDefaultModel(type)
同期
string | undefined
デフォルトモデルを取得
open()
同期
void
環境設定のモデル設定パネルを開く
reload()
同期
void
最新の設定をリロード
generateText(options)
非同期
Promise<GenerateTextResult>
テキストを生成
generateObject(options)
非同期
Promise<GenerateObjectResult>
構造化オブジェクトを生成
streamText(options)
非同期
StreamTextResult
ストリーミングテキスト生成
streamObject(options)
非同期
StreamObjectResult
ストリーミングオブジェクト生成
Provider インスタンスメソッド
provider(modelId)
同期
Model
モデルを取得(関数呼び出し)
verify()
非同期
Promise<VerifyResult>
接続と認証を検証
getModels()
非同期
Promise<string[]>
モデルリストを取得
hasModel(modelId)
非同期
Promise<boolean>
モデルの存在を確認
Provider インスタンスプロパティ
name
string
Provider 名(読み取り専用)
baseURL
string | undefined
API エンドポイント(読み取り専用)
VerifyResult
ok
boolean
検証が成功したかどうか
error
APIError | undefined
失敗時のエラーオブジェクト
最終更新