ドキュメント

インテグレーション

アボートの処理

ツールプロバイダーでユーザーが中断したツールの実行を安全に処理する

ベータ版機能

プラグインサポートは現在プライベートベータ版です。こちらからベータ版に参加してください。

ツールが実行中の間に、ユーザーが予測を中断する場合があります。その場合、ツールの実装関数に渡される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 で利用可能です。