拡張機能
拡張機能とは?
Section titled “拡張機能とは?”拡張機能は、ExtensionAPIを受け取り、以下のことができる関数(またはモジュール)です。
- 追加のツールを登録する
- エージェントイベントにサブスクライブする
- コンテキストのためにエージェントの名前にアクセスする
拡張機能を使用すると、再利用可能なエージェント機能をモジュールとしてパッケージ化できます。
インライン拡張機能
Section titled “インライン拡張機能”import { Agent } from "@schift-io/sdk";import type { ExtensionAPI } from "@schift-io/sdk";
const loggingExtension = (api: ExtensionAPI) => { api.on("tool_call", (event) => { console.log(`[${api.agentName}] calling ${event.toolName}`); });
api.on("agent_end", (event) => { console.log(`[${api.agentName}] done in ${event.totalDurationMs}ms`); });};
const agent = new Agent({ name: "My Agent", instructions: "...", extensions: [loggingExtension], transport: schift.transport,});モジュール拡張機能
Section titled “モジュール拡張機能”拡張機能はファイルパスからも読み込むことができます。モジュールはdefaultまたはinit関数をエクスポートする必要があります。
import type { ExtensionAPI } from "@schift-io/sdk";
export default function init(api: ExtensionAPI) { api.registerTool({ name: "track_event", description: "Track an analytics event", parameters: { type: "object", properties: { event: { type: "string", description: "Event name" }, }, required: ["event"], }, handler: async (args) => { await sendToAnalytics(String(args.event)); return { success: true, data: { tracked: true } }; }, });}const agent = new Agent({ extensions: ["./extensions/analytics.ts"], ...});ExtensionAPI
Section titled “ExtensionAPI”| メソッド / プロパティ | 説明 |
|---|---|
registerTool(tool) | エージェントが利用可能なツールを登録します |
on(type, handler) | エージェントイベントにサブスクライブします。解除関数を返します |
off(type, handler) | イベントのサブスクリプションを解除します |
agentName | エージェントの表示名(読み取り専用) |
拡張機能は最初のagent.run()呼び出し時に一度だけ読み込まれます。拡張機能によって登録されたツールは、エージェントのライフタイム全体で利用可能です。