抽象 クラス: AiTool<TInput>
定義: plugins/ai/src/AiTool.ts:80
LLM から呼べる関数。ai/ ディレクトリに置くだけで自動ロードされ、
モデルへ渡されます。
中では他のコンポーネントと同じように this.services.* / this.container /
this.logger が使えます — これがこのプラグインの核心で、Bot の機能を
そのまま AI から呼べるようにするための入口です。
import { AiTool } from "@cc-discord-framework/ai";
import { z } from "zod";
const input = z.object({ 詳細: z.boolean().optional() });
@AiTool.define({ description: "このサーバーの情報を返します。", inputSchema: input })
export class ServerInfoTool extends AiTool<z.infer<typeof input>> {
override async execute(args, context) {
const guild = context.interaction?.guild;
return { name: guild?.name, members: guild?.memberCount };
}
}
ツール名はクラス名から導出されます(ServerInfoTool → server-info)。
@AiTool.define({ name: "..." }) で明示することもできます。
拡張
型パラメーター
TInput
TInput = unknown
コンストラクター
コンストラクター
new AiTool<TInput>(): AiTool<TInput>;
戻り値
AiTool<TInput>
継承元
プロパティ
container
readonly container: Container;
定義: src/component/Component.ts:30
フレームワーク共有サービスを持つコンテナ。
継承元
description
readonly description: string;
定義: plugins/ai/src/AiTool.ts:82
モデルへ渡す説明。
enabled
readonly enabled: boolean;
定義: plugins/ai/src/AiTool.ts:88
モデルへ渡すか。
guildOnly
readonly guildOnly: boolean;
定義: plugins/ai/src/AiTool.ts:91
サーバー内からの呼び出しでだけ使うか。
inputSchema
readonly inputSchema: FlexibleSchema<TInput>;
定義: plugins/ai/src/AiTool.ts:85
入力のスキーマ。
location
readonly location: string | null;
定義: src/component/Component.ts:39
自動探索されたファイルの絶対パス。明示登録の場合は null。
継承元
logger
readonly logger: Logger;
定義: src/component/Component.ts:36
このコンポーネント用の子ロガー({ store, component } が付与済み)。
継承元
name
readonly name: string;
定義: src/component/Component.ts:27
ストア内で一意なコンポーネント名。
継承元
store
readonly store: ComponentStore<Component>;
定義: src/component/Component.ts:33
このコンポーネントが属するストア。
継承元
アクセッサー
client
署名を取得する
get client(): Client;
定義: src/component/Component.ts:42
フレームワーククライアント。
戻り値
継承元
services
署名を取得する
get services(): Services;
定義: src/component/Component.ts:50
ロード済みサービスへのアクセス(services/ から自動収束)。
import せずに this.services.<名前> で参照できます。
戻り値
継承元
メソッド
execute()
abstract execute(input, context): unknown;
定義: plugins/ai/src/AiTool.ts:103
ツール本体。戻り値はそのままモデルへ返るので、JSON にできる形に
してください。投げた例外は握りつぶされず、ログと aiError を経由して
エラー内容がモデルへ返ります(ツール1つの失敗で会話全体が
止まらないようにするためです)。
パラメータ
input
TInput
context
戻り値
unknown
onLoad()?
optional onLoad(): unknown;
定義: src/component/Component.ts:55
初期化後・ストア追加前に呼ばれます。
戻り値
unknown
継承元
onUnload()?
optional onUnload(): unknown;
定義: src/component/Component.ts:58
ストアから取り除かれるときに呼ばれます(クライアント終了時を含む)。
戻り値
unknown
継承元
define()
static define<TInput>(options): (_target, context) => void;
定義: plugins/ai/src/AiTool.ts:93
型パラメーター
TInput
TInput
パラメータ
options
AiToolOptions<TInput>
戻り値
(_target, context) => void