AI SDK
このプラグインは統一されたAIモデル設定センターを提供し、すべての主要なAIモデルをサポートします。一度設定すれば、どこでも使用でき、API Keyを繰り返し設定する必要がありません。
注意:この機能は Eagle 5.0 Beta 以降でのみ使用できます(現在未リリース、詳細なリリース時期については Eagle 公式サイトをフォローしてください)。

AI SDK 依存プラグインの紹介
「AI SDK 依存プラグイン」は、ブラウザプラグイン開発者向けの開発ツールキットで、各主要 AI モデルをサポートする統一された AI モデル設定センターを提供し、一度設定すれば、どこでも使用できます。このツールキットにより、開発者は自分のプラグインでテキスト生成、構造化オブジェクト生成、ストリーミング処理などの AI 機能を簡単に実装できます。「AI SDK 依存プラグイン」を統合することで、開発者はプラグインの AI 処理機能をシームレスに拡張し、ユーザーにより知的で実用的な機能を提供できます。
統一設定センター:一度の設定で、どこでも使用
AI SDK プラグインは統一された AI モデル設定センターを提供し、以下をサポートします:
商用モデル:
OpenAI(GPT-4、GPT-4 Vision)
Anthropic Claude(Claude 3 Opus、Claude 3.5 Sonnet)
Google Gemini(Gemini Pro、Gemini Ultra)
DeepSeek(DeepSeek Chat、DeepSeek Coder)
Alibaba Qwen(通義千問)
ローカルモデル(完全オフライン実行):
Ollama(Llama 3、Mistral、Phi-3 などをサポート)
LM Studio(グラフィカルインターフェース、初心者向け)
一度設定すると、すべての AI 関連プラグインが直接使用でき、繰り返し設定する必要がありません。例えば:今日「AI 翻訳」と「AI リネーム」プラグインをインストールした場合、これらは自動的に SDK で入力した設定を共有し、それぞれが異なるモデルを選択することもでき、API Key を再度入力する必要がありません。

オープン開発環境
ai-sdk.dev 標準(AI SDK v5)に基づき、AI SDK プラグインは開発者にクリーンで安定したインフラストラクチャセットを提供します。開発者は API Key ストレージ、モデル切り替え、エラーリトライなどの基本設定の処理に時間を費やす必要がなく、プラグインのイノベーションに集中できます。唯一の違いは Provider の取得方法で、より良い安定性とユーザーエクスペリエンスを確保するために独自開発の Provider を使用しています。
バージョン互換性: このプラグインは AI SDK v5 をベースに構築されています。新しいバージョン(v6、v7など)の AI SDK に慣れている場合、一部の API や機能が異なる可能性があります。Eagle エコシステム内での正しい使用方法については、必ずこのドキュメントを参照してください。
AI SDK 依存プラグインのインストール
プラグインセンターに入る
AI SDK プラグインを検索して見つける
AI SDK プラグインをクリックしてインストール
AI SDK 依存プラグインの使用方法
プラグインで AI SDK 関連機能を使用したい場合は、プラグインの manifest.json
ファイルに dependencies
定義を追加する必要があります。これにより、Eagle システムはこのプラグインが追加の拡張機能を必要とすることを認識します。以下に示します:
{
"id": "LBCZE8V6LPCKD",
"version": "1.0.0",
"platform": "all",
"arch": "all",
"name": "ウィンドウプラグイン",
"logo": "/logo.png",
"keywords": [],
"dependencies": ["ai-sdk"],
"devTools": false,
"main":
{
"url": "index.html",
"width": 640,
"height": 480,
}
}
ウィンドウプラグインの例
eagle.extraModule.ai
を使用して AI SDK 依存プラグインが提供する機能を呼び出すことができます。以下は各種使用方法の例です:
generateText() - 基本テキスト生成
eagle.onPluginCreate(async (plugin) => {
// AI モジュールと Provider を取得
const ai = eagle.extraModule.ai;
const { openai, anthropic, gemini, deepseek, qwen, ollama, lmstudio } = await ai.getProviders();
const { generateText } = ai;
// 基本テキスト生成
const result = await generateText({
model: openai("gpt-5"),
prompt: "デジタルアートについてのクリエイティブな紹介を書いてください",
});
console.log(result.text);
});
generateObject() - 構造化オブジェクト生成
eagle.onPluginCreate(async (plugin) => {
const ai = eagle.extraModule.ai;
const { openai } = await ai.getProviders();
const { generateObject } = ai;
// 構造化データの生成
const result = await generateObject({
model: anthropic("claude-4-sonnet"),
schema: {
type: "object",
properties: {
tags: {
type: "array",
items: {
type: "object",
properties: {
name: { type: "string" },
reason: { type: "string" },
},
},
},
description: { type: "string" },
},
},
messages: [
{
role: "system",
content: "あなたは画像内容を正確に識別し、適切なタグと説明を提供できる専門的な画像分析エキスパートです。",
},
{
role: "user",
content: [
{
type: "text",
text: "この画像を分析し、5つの関連タグを提供してください。各タグには理由の説明が必要で、簡潔な画像の説明も提供してください。",
},
{
type: "image",
image: "https://example.com/sample-image.jpg",
},
],
},
],
});
console.log("タグ:", result.object.tags);
console.log("説明:", result.object.description);
});
streamText() - ストリーミングテキスト生成
eagle.onPluginCreate(async (plugin) => {
const ai = eagle.extraModule.ai;
const { openai } = await ai.getProviders();
const { streamText } = ai;
// ストリーミングテキスト生成、リアルタイム表示に適している
const { textStream } = await streamText({
model: gemini("gemini-2.0-flash-exp"),
prompt: "デジタルアートの発展史と主要な特徴について詳しく紹介してください",
});
// 生成されたテキストを段階的に受信し表示
for await (const textPart of textStream) {
console.log(textPart);
}
});
streamObject() - ストリーミングオブジェクト生成
eagle.onPluginCreate(async (plugin) => {
const ai = eagle.extraModule.ai;
const { openai } = await ai.getProviders();
const { streamObject } = ai;
// ストリーミング構造化オブジェクト生成
const { partialObjectStream } = await streamObject({
model: deepseek("deepseek-chat"),
schema: {
type: "object",
properties: {
analysis: {
type: "object",
properties: {
colors: {
type: "array",
items: { type: "string" }
},
style: { type: "string" },
mood: { type: "string" },
suggestions: {
type: "array",
items: { type: "string" }
}
}
}
},
},
messages: [
{
role: "system",
content: "あなたはアートワークの色彩、スタイル、感情、改善提案を深く分析できるアートクリティックです。",
},
{
role: "user",
content: "この芸術作品の色の組み合わせ、芸術スタイル、伝えられる感情を分析し、改善提案を提供してください。",
},
],
});
// 部分オブジェクトを段階的に受信
for await (const partialObject of partialObjectStream) {
console.log("現在の分析結果:", partialObject);
}
});
最終更新