クラス: AiService
定義: plugins/ai/src/AiService.ts:160
AI 機能のエントリポイント。this.services.ai で参照できます。
const answer = await this.services.ai.ask("この Bot の作者は?");
await this.services.ai.reply(interaction, { prompt: query, history: interaction.channelId });
どのメソッドも、省略した項目は ai({ ... }) の設定へフォールバックします。
拡張
コンストラクター
コンストラクター
new AiService(): AiService;
戻り値
AiService
継承元
プロパティ
container
readonly container: Container;
定義: src/component/Component.ts:30
フレームワーク共有サービスを持つコンテナ。
継承元
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
フレームワーククライアント。
戻り値
継承元
config
署名を取得する
get config(): AiConfig;
定義: plugins/ai/src/AiService.ts:167
このクライアントの ai 設定。
戻り値
memory
署名を取得する
get memory(): AiMemoryStore;
定義: plugins/ai/src/AiService.ts:175
会話履歴の置き場。memory.store を指定していればそれ、
指定していなければ Map ベースの既定実装です。
戻り値
services
署名を取得する
get services(): Services;
定義: src/component/Component.ts:50
ロード済みサービスへのアクセス(services/ から自動収束)。
import せずに this.services.<名前> で参照できます。
戻り値
継承元
メソッド
ask()
ask(prompt, options?): Promise<string>;
定義: plugins/ai/src/AiService.ts:218
一問一答。本文だけを返します。
パラメータ
prompt
string
options?
AiCallOptions = {}
戻り値
Promise<string>
forget()
forget(key): Promise<boolean>;
定義: plugins/ai/src/AiService.ts:587
そのキーの会話履歴を消します。消すものがあったかを返します。
reply() / generate() の history に渡したのと同じキーを渡してください。
パラメータ
key
string
戻り値
Promise<boolean>
generate()
generate(options): Promise<GenerateTextResult<ToolSet, Context, Output<any, any, any>>>;
定義: plugins/ai/src/AiService.ts:227
generateText の薄いラッパ。結果をそのまま返します。
history を指定した場合は、終わったあとに履歴へ追記します。
パラメータ
options
戻り値
Promise<GenerateTextResult<ToolSet, Context, Output<any, any, any>>>
history()
history(key): Promise<ModelMessage[]>;
定義: plugins/ai/src/AiService.ts:576
そのキーの会話履歴を古い順に返します。キーは呼び出し側が決めます
(チャンネル ID にすればチャンネル単位、"<チャンネル>:<ユーザー>"
にすればユーザー単位)。
memory.maxMessages を超える分と、memory.enabled: false のときは空です。
パラメータ
key
string
戻り値
Promise<ModelMessage[]>
model()
model(id?): Promise<LanguageModel>;
定義: plugins/ai/src/AiService.ts:189
モデル指定を解決します。省略すると ai({ model }) の既定を使い、
それも無ければ ModelNotConfiguredError を投げます。
パラメータ
id?
戻り値
Promise<LanguageModel>
object()
object<SCHEMA>(
schema,
prompt,
options?): Promise<InferSchema<SCHEMA>>;
定義: plugins/ai/src/AiService.ts:258
generateObject で構造化データを取り出します。
型パラメーター
SCHEMA
SCHEMA extends FlexibleSchema
パラメータ
schema
SCHEMA
prompt
string
options?
AiCallOptions = {}
戻り値
Promise<InferSchema<SCHEMA>>
onLoad()?
optional onLoad(): unknown;
定義: src/component/Component.ts:55
初期化後・ストア追加前に呼ばれます。
戻り値
unknown
継承元
onUnload()
onUnload(): void;
定義: plugins/ai/src/AiService.ts:593
ストアから取り除かれるときに呼ばれます(クライアント終了時を含む)。
戻り値
void
上書き
reply()
reply(target, options): Promise<AiReplyResult>;
定義: plugins/ai/src/AiService.ts:323
Discord へ ストリーミング表示しながら 答えます。
- まだなら
deferReply()(メッセージ宛なら仮のメッセージを送信) - 生成しながら
stream.intervalMsごとに1回だけ編集 (前回と同じ内容ならスキップ・編集が飛行中ならスキップ) - 途中経過が
display.splitThresholdを超えたら 切り詰める (進捗表示なので分割はしません) - 完了したら最終の内容へ編集し、超えていれば 分割して 追加送信
stream.enabled: false なら「完成してから1回だけ送る」動作になります。
display.splitThreshold を明示していない場合、分割位置は
この呼び出しで実際に使う embeds から決まります。
生成の失敗は throw せず、応答へ表示します(すでに Discord の応答を
引き受けているため)。検知したい場合は aiError を購読するか、
戻り値の error を見てください。入力が長すぎる・クールダウン中・
モデル未設定といった 表示を引き受ける前の失敗 はそのまま throw
するので、フレームワークの既定処理が返信します。
パラメータ
target
options
戻り値
Promise<AiReplyResult>
stream()
stream(options): Promise<StreamTextResult<ToolSet, Context, Output<any, any, any>>>;
定義: plugins/ai/src/AiService.ts:245
streamText の薄いラッパ。結果をそのまま返します。
履歴の追記は行いません — いつ生成が終わるかは、ストリームを
読んでいる呼び出し側にしか判らないためです。追記したい場合は
this.services.ai.memory.append(key, ...) を使うか、
表示まで面倒を見る AiService.reply を使ってください。
パラメータ
options
戻り値
Promise<StreamTextResult<ToolSet, Context, Output<any, any, any>>>
tools()
tools(context?): ToolSet;
定義: plugins/ai/src/AiService.ts:207
登録済みの AiTool から ToolSet を作ります。
tools.enabled: false なら空です。
パラメータ
context?
Partial<AiToolContext> = {}
戻り値
define()
static define(options?): (_target, context) => void;
サービスのメタデータを宣言します。省略可能です。
パラメータ
options?
ServiceOptions = {}
戻り値
(_target, context) => void