メインコンテンツまでスキップ
バージョン: v2.0

抽象 クラス: 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>

継承元​

Component.constructor

プロパティ​

container​

readonly container: Container;

定義: src/component/Component.ts:30

フレームワーク共有サービスを持つコンテナ。

継承元​

Component.container


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。

継承元​

Component.location


logger​

readonly logger: Logger;

定義: src/component/Component.ts:36

このコンポーネント用の子ロガー({ store, component } が付与済み)。

継承元​

Component.logger


name​

readonly name: string;

定義: src/component/Component.ts:27

ストア内で一意なコンポーネント名。

継承元​

Component.name


store​

readonly store: ComponentStore<Component>;

定義: src/component/Component.ts:33

このコンポーネントが属するストア。

継承元​

Component.store

アクセッサー​

client​

署名を取得する​

get client(): Client;

定義: src/component/Component.ts:42

フレームワーククライアント。

戻り値​

Client

継承元​

Component.client


services​

署名を取得する​

get services(): Services;

定義: src/component/Component.ts:50

ロード済みサービスへのアクセス(services/ から自動収束)。 import せずに this.services.<名前> で参照できます。

戻り値​

Services

継承元​

Component.services

メソッド​

execute()​

abstract execute(input, context): unknown;

定義: plugins/ai/src/AiTool.ts:103

ツール本体。戻り値はそのままモデルへ返るので、JSON にできる形に してください。投げた例外は握りつぶされず、ログと aiError を経由して エラー内容がモデルへ返ります(ツール1つの失敗で会話全体が 止まらないようにするためです)。

パラメータ​

input​

TInput

context​

AiToolContext

戻り値​

unknown


onLoad()?​

optional onLoad(): unknown;

定義: src/component/Component.ts:55

初期化後・ストア追加前に呼ばれます。

戻り値​

unknown

継承元​

Component.onLoad


onUnload()?​

optional onUnload(): unknown;

定義: src/component/Component.ts:58

ストアから取り除かれるときに呼ばれます(クライアント終了時を含む)。

戻り値​

unknown

継承元​

Component.onUnload


define()​

static define<TInput>(options): (_target, context) => void;

定義: plugins/ai/src/AiTool.ts:93

型パラメーター​

TInput​

TInput

パラメータ​

options​

AiToolOptions<TInput>

戻り値​

(_target, context) => void