LangBot Docs

コンテキスト API

コンテキストには、1 回のコンポーネント呼び出しに関するデータが含まれます。コンポーネントごとに受け取るコンテキストが異なるため、まず対象コンポーネントの入口を確認してください。

コンポーネントハンドラーの入口コンテキスト型
EventListenerhandler(event_context)EventContext
Commandsubcommand(context)ExecuteContext
Toolcall(params, session, query_id)独立したコンテキストオブジェクトなし
Runnerrun(ctx) または handler(ctx)RunnerContext
KnowledgeEngineingest(context)retrieve(context)IngestionContextRetrievalContext
KnowledgeRetrieverretrieve(context)RetrievalContext
Parserparse(context)ParseContext
Pagehandle_api(request)PageRequest

このページでは、コンテキストのデータとメソッドのみを説明します。モデル、ナレッジベース、ストレージなどの LangBot 機能には self.plugin を使用します。詳細は LangBot API を参照してください。プラットフォーム操作はプラットフォーム APIに記載しています。

EventContextExecuteContextSession には instance_uuidworkspace_uuidplacement_generation も含まれます。これらは現在の実行に対応するインスタンスとワークスペースを示すためのもので、プラグイン側の認可情報として使用しないでください。

EventListener

EventListener はパイプラインイベントを処理します。イベントハンドラーは EventContext を受け取ります。

event = event_context.event
sender_id = event.sender_id

コンテキストデータ

プロパティ説明
eventBaseEventModel現在のイベントオブジェクト。実際の型は登録したイベント型と一致します
event_namestr現在のイベントクラス名
query_idint現在のパイプラインリクエスト ID
query_uuidstr | None現在のパイプラインリクエストの安定した識別子
eidintPlugin Runtime 内の一時的なイベント番号。永続化しないでください
is_prevent_defaultboolデフォルト処理を停止済みか。変更には prevent_default() を使用します
is_prevent_postorderbool後続プラグインを停止済みか。変更には prevent_postorder() を使用します

イベントのフィールドと購読可能なイベントはパイプラインイベントを参照してください。

コンテキストメソッド

メソッド戻り値説明
await event_context.reply(message_chain, quote_origin=False)-現在のリクエストの会話に返信
await event_context.get_bot_uuid()str送信元 Bot の UUID を取得
await event_context.set_query_var(key, value)-現在のリクエストに変数を設定
await event_context.get_query_var(key)Anyリクエスト変数を 1 つ取得
await event_context.get_query_vars()dict[str, Any]すべてのリクエスト変数を取得
await event_context.create_new_conversation()dict[str, Any]現在のパイプライン会話をクリアし、後続リクエストで新しい会話を作成
await event_context.list_pipeline_knowledge_bases()list[dict[str, Any]]現在のパイプラインの Local Agent に設定されたナレッジベースを取得
await event_context.retrieve_knowledge(kb_id, query_text, top_k=5, filters=None)list[dict[str, Any]]現在のパイプラインに設定されたナレッジベースを検索
event_context.prevent_default()-現在のイベントのデフォルト処理を停止
event_context.prevent_postorder()-後続プラグインによる現在のイベント処理を停止

reply()MessageChain を受け取ります。リクエスト変数、返信、パイプラインのナレッジベース API には、関連付けられたパイプラインリクエストが必要です。retrieve_knowledge()kb_idlist_pipeline_knowledge_bases() の結果から指定します。

prevent_default() はデフォルトフローを停止できるイベントにのみ作用します。詳細はパイプラインイベントを参照してください。

Command

Command のサブコマンドハンドラーは ExecuteContext を受け取ります。

query = " ".join(context.crt_params)
session = context.session

コンテキストデータ

プロパティ説明
sessionSession現在のメッセージが属するセッション
command_textstrコマンド接頭辞を除いた完全なコマンド文字列
full_command_textstr接頭辞を含む完全なコマンド文字列
commandstrルートコマンド名
crt_commandstr現在実行中のサブコマンド名
paramslist[str]ルートコマンド以降のすべての引数
crt_paramslist[str]現在のサブコマンドで未処理の引数
privilegeint現在のユーザーのコマンド権限レベル
query_idint現在のパイプラインリクエスト ID
query_uuidstr | None現在のパイプラインリクエストの安定した識別子

SDK は現在のサブコマンドに入る前に context.shift() を呼び出します。コンポーネントから直接呼び出す必要はありません。

コンテキストメソッド

メソッド戻り値説明
await context.reply(message_chain, quote_origin=False)-現在のリクエストの会話に返信
await context.get_bot_uuid()str送信元 Bot の UUID を取得
await context.set_query_var(key, value)-現在のリクエストに変数を設定
await context.get_query_var(key)Anyリクエスト変数を 1 つ取得
await context.get_query_vars()dict[str, Any]すべてのリクエスト変数を取得
await context.create_new_conversation()dict[str, Any]現在のパイプライン会話をクリアし、後続リクエストで新しい会話を作成
await context.list_pipeline_knowledge_bases()list[dict[str, Any]]現在のパイプラインの Local Agent に設定されたナレッジベースを取得
await context.retrieve_knowledge(kb_id, query_text, top_k=5, filters=None)list[dict[str, Any]]現在のパイプラインに設定されたナレッジベースを検索

これらのリクエストメソッドは EventListener と同じ動作です。登録方法と戻り値は Command コンポーネントを参照してください。

Tool

Tool には独立したコンテキストオブジェクトがありません。call() の引数として呼び出し情報を受け取ります。

conversation_type = session.launcher_type.value
conversation_id = session.launcher_id
sender_id = session.sender_id
引数説明
paramsツールの JSON Schema に基づいてモデルまたは呼び出し元が生成した引数
session現在のセッションデータ
query_id現在のパイプラインリクエスト ID。リクエストコンテキストが必要な LangBot API にそのまま渡します

Session の主なプロパティは次のとおりです。

プロパティ説明
launcher_type会話種別:person または group
launcher_id個人チャットのユーザー ID またはグループ ID
sender_id現在のメッセージ送信者 ID
bot_uuid現在の Bot UUID
using_conversation現在のパイプライン会話
conversationsこの Session に保存されたパイプライン会話
use_prompt_name使用中のプロンプト名
create_timeupdate_timeSession の作成時刻と更新時刻

session はデータオブジェクトであり、reply() などのコンテキストメソッドはありません。ツールの戻り値は呼び出し元へ返され、チャットプラットフォームには自動送信されません。LangBot とプラットフォームの機能には self.plugin を使用します。API が sessionquery_id を要求する場合は、現在の呼び出しで受け取った値を渡してください。

Runner

独自の run(ctx) と Runner のイベントハンドラーは、どちらも RunnerContext を受け取ります。このコンテキストは現在の実行中だけ有効です。

text = ctx.input.to_text()
event_type = ctx.event.event_type

コンテキストデータ

プロパティ説明
run_idstr現在の実行 ID
triggerAgentTriggerトリガーの種類、発生元、時刻
eventAgentEventContextイベント ID、種類、発生元、時刻、元データを含む標準イベントエンベロープ
platform_eventプラットフォームイベント型イベント型に応じて解析されたプラットフォームイベント
conversationConversationContext | None現在の会話、スレッド、Bot、ワークスペースの識別子
actorActorContext | Noneイベントを発生させた主体
subjectSubjectContext | Noneイベントの対象となるメッセージやグループなど
inputAgentInput現在のテキスト、構造化コンテンツ、添付ファイル
deliveryDeliveryContext出力先とストリーミング、編集、リアクションの対応状況
resourcesAgentResources今回の実行で許可されたモデル、ツール、ナレッジベース、スキル、ストレージ
contextContextAccess会話カーソル、インライン方針、利用可能なコンテキスト API
stateAgentRunState実行開始時に読み込まれたスコープ別状態のスナップショット
runtimeAgentRuntimeContextLangBot バージョン、トレース ID、期限
configdict[str, Any]現在の Agent またはプラグインプロセッサーの設定
adapterAdapterContext | Noneエントリーアダプターの追加データ
variablesdict[str, Any]Runner テンプレートで使える公開リクエスト変数
metadatadict[str, Any]ホストが提供するその他のメタデータ

上表の安定したプロパティを優先してください。event.dataadapter.extra には、安定したフィールドに含まれない追加データが入ります。

返信とログ

メソッド戻り値説明
await ctx.get_bot_uuid()str送信元 Bot UUID を取得。関連する Bot がなければエラー
await ctx.reply(message_chain, quote_origin=False)Any文字列または MessageChain で現在のイベントに返信
ctx.reply_stream()非同期コンテキストマネージャー1 件の返信を完全なテキストで逐次更新
await ctx.log(text, level="info")-今回の実行ログへ記録。レベルは debuginfowarningerror

reply_stream().update(text) には、その時点の完全なテキストを渡します。プラットフォームがストリーミングに対応しない場合、終了時に完全なメッセージを 1 件送信します。デバッグモードでは送信をシミュレートします。

利用可能なツール

メソッド戻り値説明
await ctx.get_available_tools()list[dict[str, Any]]今回呼び出せるコンテキスト操作、プラットフォーム API、プラグインツール、MCP ツールを取得
await ctx.call_tool(tool_name, parameters=None)dict[str, Any]上記一覧のツールを呼び出す

get_available_tools() の各項目には namedescriptionparameterstypeoperations が含まれます。結果は現在の Agent またはプラグインプロセッサーの設定とイベント機能で絞り込まれています。一覧にないツールは ctx.call_tool() で呼び出せません。

Box と添付ファイル

Box の有効化、取得、再利用方針は Runner が決めます。リソースの取得には LangBot API、実行中の操作には以下を使います。

メソッド戻り値説明
await ctx.bind_box(box_id)BoxBindingBox を現在の実行にバインドし、box_idoutbox を返す。同じ実行内では変更不可
await ctx.import_box_attachments(attachment_ids=None)list[BoxFile]入力の ref を指定してインポート。省略時は全件。サンドボックスの path を返す
await ctx.export_box_files()list[BoxFile]現在の実行の outbox をファイルハンドルとしてエクスポート。メッセージは送信しない
await ctx.reply_files(file_ids)Anyエクスポートした ID で返信。返信ツールの権限制限が適用される

BoxFileidnametypesize、任意の path を含みます。入力の元 URL と内容は保持され、明示的にインポートして初めてファイルパスが生成されます。ハンドルは今回の実行でのみ有効で、重複送信できません。

ネイティブツールやファイル操作の前に Box をバインドします。Box を共有しても添付ディレクトリは実行ごとに分かれます。ctx.variables の公開リクエスト変数で再利用キーを計算できます。

Pipeline では ctx.delivery.automatic_replyTrue になり、RunnerResult.message_completed(ctx.run_id, message, file_ids=[...]) で添付を返せます。Agent とプラグインプロセッサーは ctx.reply_files() で明示的に送信します。

外部ランナーも AgentRunExternalTools で同じ手順を使用できます:langbot_get_box_statuslangbot_list_boxeslangbot_acquire_boxlangbot_bind_boxlangbot_import_box_attachmentslangbot_export_box_files。イベントへの返信権限がある場合は langbot_reply_files も利用できます。すべての呼び出しに現在の実行の権限が適用されます。

プロンプト、履歴、イベント

メソッド戻り値利用可否フィールド
await ctx.get_prompt()list[dict[str, Any]]prompt_get
await ctx.history_page(conversation_id=None, before_cursor=None, after_cursor=None, limit=50, direction="backward", include_attachments=False)HistoryPagehistory_page
await ctx.history_search(query, filters=None, top_k=10)HistorySearchResulthistory_search
await ctx.event_get(event_id)AgentEventRecordevent_get
await ctx.event_page(conversation_id=None, event_types=None, before_cursor=None, limit=50)EventPageevent_page
await ctx.steering_pull(mode="all", limit=None)SteeringPullResultsteering_pull

状態

メソッド戻り値説明
await ctx.state_get(scope, key)dict[str, Any]状態値を取得
await ctx.state_set(scope, key, value)dict[str, Any]JSON シリアライズ可能な状態値を保存
await ctx.state_delete(scope, key)dict[str, Any]状態値を削除
await ctx.state_list(scope, prefix=None, limit=100)dict[str, Any]指定スコープの状態キーを一覧表示

scopeconversationactorsubjectrunner のいずれかです。これらのメソッドには ctx.context.available_apis.statetrue である必要があります。

実行記録

メソッド戻り値利用可否フィールド
await ctx.run_get(run_id=None)AgentRunrun_get
await ctx.run_list(conversation_id=None, statuses=None, before_cursor=None, limit=50)RunPagerun_list
await ctx.run_events_page(run_id=None, before_cursor=None, after_cursor=None, limit=50, direction="forward")RunEventPagerun_events_page
await ctx.run_cancel(run_id=None, reason=None)AgentRunrun_cancel
await ctx.run_append_result(result)AgentRunEventrun_append_result
await ctx.run_finalize(run_id=None, status=None, reason=None)AgentRunrun_finalize

run_id=None は現在の実行を指します。通常のイベントハンドラーは SDK が自動的に完了します。独自の run(ctx)RunnerResult を yield する場合、同じ結果を run_append_result() で重複登録しないでください。

利用可否と権限

プロンプト、履歴、イベント、状態、実行記録の API が利用可能かどうかは ctx.context.available_apis で確認します。許可されたモデル、ツール、ナレッジベースはそれぞれ ctx.resources.modelsctx.resources.toolsctx.resources.knowledge_bases にあります。

Runner の実行中に self.plugin から呼び出すモデル、ツール、ナレッジベース、ストレージ、プラットフォーム API は、自動的に現在の実行へ関連付けられ、ctx.resources に基づいて再検証されます。run_id を渡す必要はありません。ハンドラー終了後にバックグラウンドタスクからこのコンテキストや実行に紐づく呼び出しを使用しないでください。

ctx.api は低レベルの実行スコーププロキシです。通常のコンポーネントコードでは、このページに記載した ctx メソッドと、LangBot API 用の self.plugin を使用してください。

データ専用コンテキスト

以下のコンポーネントが受け取るものはタスク入力であり、EventListener や Runner の実行コンテキストメソッドはありません。フィールド、戻り値、完全な例は各コンポーネントガイドに記載しています。

コンポーネントの入口主なデータコンポーネントガイド
KnowledgeEngine.ingest(context: IngestionContext)ファイル、対象ナレッジベース、作成設定、解析結果KnowledgeEngine
KnowledgeEngine.retrieve(context: RetrievalContext)クエリ、対象ナレッジベース、検索設定、フィルターKnowledgeEngine
KnowledgeRetriever.retrieve(context: RetrievalContext)クエリと外部ナレッジベース設定KnowledgeRetriever
Parser.parse(context: ParseContext)ファイル内容、ファイル名、MIME タイプ、メタデータParser
Page.handle_api(request: PageRequest)エンドポイント、HTTP メソッド、本文、ヘッダーPage

On this page