ドキュメント
エージェントフロー
インテグレーション
プロンプトプリプロセッサ
ジェネレーター
カスタム設定
プラグインの発行
テキスト埋め込み
トークン化
モデル情報
エージェントフロー
インテグレーション
プロンプトプリプロセッサ
ジェネレーター
カスタム設定
プラグインの発行
テキスト埋め込み
トークン化
モデル情報
インテグレーション
アボートの処理
ツールプロバイダーでユーザーが中断したツールの実行を安全に処理する
プラグインサポートは現在プライベートベータ版です。こちらからベータ版に参加してください。
ツールが実行中の間に、ユーザーが予測を中断する場合があります。その場合、ツールの実装関数に渡される2番目のパラメーターである 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 で利用可能です。