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

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

継承元​

Service.constructor

プロパティ​

container​

readonly container: Container;

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

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

継承元​

Service.container


location​

readonly location: string | null;

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

自動探索されたファイルの絶対パス。明示登録の場合は null。

継承元​

Service.location


logger​

readonly logger: Logger;

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

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

継承元​

Service.logger


name​

readonly name: string;

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

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

継承元​

Service.name


store​

readonly store: ComponentStore<Component>;

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

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

継承元​

Service.store

アクセッサー​

client​

署名を取得する​

get client(): Client;

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

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

戻り値​

Client

継承元​

Service.client


config​

署名を取得する​

get config(): AiConfig;

定義: plugins/ai/src/AiService.ts:167

このクライアントの ai 設定。

戻り値​

AiConfig


memory​

署名を取得する​

get memory(): AiMemoryStore;

定義: plugins/ai/src/AiService.ts:175

会話履歴の置き場。memory.store を指定していればそれ、 指定していなければ Map ベースの既定実装です。

戻り値​

AiMemoryStore


services​

署名を取得する​

get services(): Services;

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

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

戻り値​

Services

継承元​

Service.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​

AiGenerateOptions

戻り値​

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?​

AiModelInput

戻り値​

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

継承元​

Service.onLoad


onUnload()​

onUnload(): void;

定義: plugins/ai/src/AiService.ts:593

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

戻り値​

void

上書き​

Service.onUnload


reply()​

reply(target, options): Promise<AiReplyResult>;

定義: plugins/ai/src/AiService.ts:323

Discord へ ストリーミング表示しながら 答えます。

  1. まだなら deferReply()(メッセージ宛なら仮のメッセージを送信)
  2. 生成しながら stream.intervalMs ごとに1回だけ編集 (前回と同じ内容ならスキップ・編集が飛行中ならスキップ)
  3. 途中経過が display.splitThreshold を超えたら 切り詰める (進捗表示なので分割はしません)
  4. 完了したら最終の内容へ編集し、超えていれば 分割して 追加送信

stream.enabled: false なら「完成してから1回だけ送る」動作になります。

display.splitThreshold を明示していない場合、分割位置は この呼び出しで実際に使う embeds から決まります。

生成の失敗は throw せず、応答へ表示します(すでに Discord の応答を 引き受けているため)。検知したい場合は aiError を購読するか、 戻り値の error を見てください。入力が長すぎる・クールダウン中・ モデル未設定といった 表示を引き受ける前の失敗 はそのまま throw するので、フレームワークの既定処理が返信します。

パラメータ​

target​

AiReplyTarget

options​

AiReplyOptions

戻り値​

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​

AiGenerateOptions

戻り値​

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> = {}

戻り値​

ToolSet


define()​

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

定義: src/service/Service.ts:47

サービスのメタデータを宣言します。省略可能です。

パラメータ​

options?​

ServiceOptions = {}

戻り値​

(_target, context) => void

継承元​

Service.define