ドキュメント
エージェントフロー
インテグレーション
プロンプトプリプロセッサ
ジェネレーター
カスタム設定
プラグインの発行
テキスト埋め込み
トークン化
モデル情報
エージェントフロー
インテグレーション
プロンプトプリプロセッサ
ジェネレーター
カスタム設定
プラグインの発行
テキスト埋め込み
トークン化
モデル情報
インテグレーション
ステータスレポートと警告
プラグインサポートは現在プライベートベータ版です。こちらからベータ版に参加してください。
ツールの実行に時間がかかる場合があります。その場合、ユーザーに何が起こっているかを知ってもらうために、ステータスアップデートを提供すると役立ちます。それ以外の場合は、潜在的な問題についてユーザーに警告したい場合があります。
ステータスアップデートや警告を送信するには、ツール実装関数の2番目のパラメータにある status および warn メソッドを使用できます。
以下の例では、指定された秒数待機し、待機時間が10秒を超える場合はステータスアップデートと警告を提供するツールの実装方法を示しています。
import { tool, Tool, ToolsProviderController } from "@lmstudio/sdk";
import { z } from "zod";
export async function toolsProvider(ctl: ToolsProviderController) {
const tools: Tool[] = [];
const waitTool = tool({
name: `wait`,
description: "Wait for a specified number of seconds.",
parameters: { seconds: z.number().min(1) },
implementation: async ({ seconds }, { status, warn }) => {
if (seconds > 10) {
warn("The model asks to wait for more than 10 seconds.");
}
for (let i = 0; i < seconds; i++) {
status(`Waiting... ${i + 1}/${seconds} seconds`);
await new Promise((resolve) => setTimeout(resolve, 1000));
}
},
});
tools.push(waitTool);
return tools; // Return the tools array
}
注: ステータスアップデートと警告はユーザーにのみ表示されます。モデルにもこれらのメッセージを表示させたい場合は、ツールの戻り値の一部としてそれらを返す必要があります。
ツールが実行中の間に、ユーザーによって予測が中止される可能性があります。その場合、ツールの実装関数に渡される AbortSignal オブジェクトを処理することで、中止を適切に処理する必要があります。
import { tool, Tool, ToolsProviderController } from "@lmstudio/sdk";
import { z } from "zod";
export async function toolsProvider(ctl: ToolsProviderController) {
const tools: Tool[] = [];
const fetchTool = tool({
name: `fetch`,
description: "Fetch a URL using GET method.",
parameters: { url: z.string() },
implementation: async ({ url }, { signal }) => {
const response = await fetch(url, {
method: "GET",
signal, // <-- Here, we pass the signal to fetch to allow cancellation
});
if (!response.ok) {
return `Error: Failed to fetch ${url}: ${response.statusText}`;
}
const data = await response.text();
return {
status: response.status,
headers: Object.fromEntries(response.headers.entries()),
data: data.substring(0, 1000), // Limit to 1000 characters
};
},
});
tools.push(fetchTool);
return tools;
}
AbortSignal については、MDN ドキュメントで詳しく学ぶことができます。
このページのソースは GitHub で入手できます。