mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-10-30 04:15:45 +08:00
* 重构文档结构:移除 docs 目录,调整文件组织结构 * Reorder "插件 SDK API" section in docs.json * Refactor and clarify various documentation sections * Refine warnings and info boxes across multiple docs * Refactor and simplify Japanese documentation content * Update package.json to include mintlify as a dependency and add pnpm-lock.yaml for dependency management * Update blog link and add description in docs.json --------- Co-authored-by: Junyan Chin <[email protected]>
308 lines
10 KiB
Plaintext
308 lines
10 KiB
Plaintext
---
|
|
title: "パイプラインイベントとAPI"
|
|
---
|
|
|
|
LangBotプラグインはパイプラインイベントを登録して処理できます。使用方法については、[コンポーネント: イベントリスナー](/ja/plugin/dev/components/event-listener)を参照してください。
|
|
|
|
## イベント一覧
|
|
|
|
一部のイベントには`設定可能な属性`があり、プラグインコードで変更して、その後のLangBot処理で使用できます。
|
|
|
|
### \*MessageReceived
|
|
|
|
グループチャットまたはプライベートチャットでメッセージを受信したときにトリガーされます。
|
|
|
|
```python
|
|
class PersonMessageReceived(BaseEventModel):
|
|
"""プライベートチャットメッセージを受信したとき"""
|
|
|
|
event_name: str = "PersonMessageReceived"
|
|
|
|
launcher_type: str
|
|
"""起動元オブジェクトタイプ(person)"""
|
|
|
|
launcher_id: typing.Union[int, str]
|
|
"""送信者ID"""
|
|
|
|
sender_id: typing.Union[int, str]
|
|
"""送信者ID、プライベートチャットの場合はlauncher_idと同じ"""
|
|
|
|
message_event: platform_events.PersonMessage
|
|
"""元のメッセージイベントオブジェクト。送信者情報を含みます。"""
|
|
|
|
message_chain: platform_message.MessageChain = pydantic.Field(
|
|
serialization_alias="message_chain"
|
|
)
|
|
"""メッセージチェーン"""
|
|
|
|
|
|
class GroupMessageReceived(BaseEventModel):
|
|
"""グループチャットメッセージを受信したとき"""
|
|
|
|
event_name: str = "GroupMessageReceived"
|
|
|
|
launcher_type: str
|
|
"""起動元オブジェクトタイプ(group)"""
|
|
|
|
launcher_id: typing.Union[int, str]
|
|
"""グループID"""
|
|
|
|
sender_id: typing.Union[int, str]
|
|
"""送信者ID"""
|
|
|
|
message_event: platform_events.GroupMessage
|
|
"""元のメッセージイベントオブジェクト。グループと送信者情報を含みます。"""
|
|
|
|
message_chain: platform_message.MessageChain = pydantic.Field(
|
|
serialization_alias="message_chain"
|
|
)
|
|
"""メッセージチェーン"""
|
|
```
|
|
|
|
### \*NormalMessageReceived
|
|
|
|
グループチャットまたはプライベートチャットメッセージを受信し、LLMで処理する必要があるメッセージ(コマンドでないメッセージ)であると判定されたときにトリガーされます。
|
|
|
|
```python
|
|
class PersonNormalMessageReceived(BaseEventModel):
|
|
"""処理すべきプライベートチャット通常メッセージが判定されたときにトリガーされる"""
|
|
|
|
event_name: str = "PersonNormalMessageReceived"
|
|
|
|
launcher_type: str
|
|
"""起動元オブジェクトタイプ(person)"""
|
|
|
|
launcher_id: typing.Union[int, str]
|
|
"""起動元オブジェクトID"""
|
|
|
|
sender_id: typing.Union[int, str]
|
|
"""送信者ID、プライベートチャットの場合はlauncher_idと同じ"""
|
|
|
|
text_message: str
|
|
"""メッセージテキスト"""
|
|
|
|
message_event: platform_events.PersonMessage
|
|
"""元のメッセージイベントオブジェクト。送信者情報を含みます。"""
|
|
|
|
message_chain: platform_message.MessageChain = pydantic.Field(
|
|
serialization_alias="message_chain"
|
|
)
|
|
"""メッセージチェーン"""
|
|
|
|
# ========== 設定可能な属性 ==========
|
|
|
|
user_message_alter: typing.Optional[provider_message.ContentElement] = None
|
|
"""変更されたメッセージテキスト、langbot_plugin.api.entities.builtin.provider.message.ContentElement型"""
|
|
|
|
reply_message_chain: typing.Optional[platform_message.MessageChain] = None
|
|
"""直接返信メッセージチェーン、デフォルト動作を防止した場合のみ有効"""
|
|
|
|
|
|
class GroupNormalMessageReceived(BaseEventModel):
|
|
"""処理すべきグループチャット通常メッセージが判定されたときにトリガーされる"""
|
|
|
|
event_name: str = "GroupNormalMessageReceived"
|
|
|
|
launcher_type: str
|
|
"""起動元オブジェクトタイプ(group)"""
|
|
|
|
launcher_id: typing.Union[int, str]
|
|
"""グループID"""
|
|
|
|
sender_id: typing.Union[int, str]
|
|
"""送信者ID"""
|
|
|
|
text_message: str
|
|
"""メッセージテキスト"""
|
|
|
|
message_event: platform_events.GroupMessage
|
|
"""元のメッセージイベントオブジェクト。グループと送信者情報を含みます。"""
|
|
|
|
message_chain: platform_message.MessageChain = pydantic.Field(
|
|
serialization_alias="message_chain"
|
|
)
|
|
"""メッセージチェーン"""
|
|
|
|
# ========== 設定可能な属性 ==========
|
|
|
|
user_message_alter: typing.Optional[provider_message.ContentElement] = None
|
|
"""変更されたメッセージテキスト、langbot_plugin.api.entities.builtin.provider.message.ContentElement型"""
|
|
|
|
reply_message_chain: typing.Optional[platform_message.MessageChain] = None
|
|
"""直接返信メッセージチェーン、デフォルト動作を防止した場合のみ有効"""
|
|
```
|
|
|
|
### \*CommandSent
|
|
|
|
<Warning>
|
|
使用は推奨されなくなりました。代わりに[コンポーネント: Command](/ja/plugin/dev/components/command)を使用してください。
|
|
</Warning>
|
|
|
|
グループチャットまたはプライベートチャットでコマンドを受信したときにトリガーされます。
|
|
|
|
```python
|
|
class PersonCommandSent(BaseEventModel):
|
|
"""処理すべきプライベートチャットコマンドが判定されたときにトリガーされる"""
|
|
|
|
event_name: str = "PersonCommandSent"
|
|
|
|
launcher_type: str
|
|
|
|
launcher_id: typing.Union[int, str]
|
|
|
|
sender_id: typing.Union[int, str]
|
|
|
|
command: str
|
|
"""コマンドテキスト"""
|
|
|
|
params: list[str]
|
|
"""コマンドパラメータ"""
|
|
|
|
text_message: str
|
|
"""メッセージテキスト"""
|
|
|
|
is_admin: bool
|
|
"""管理者かどうか"""
|
|
|
|
|
|
class GroupCommandSent(BaseEventModel):
|
|
"""処理すべきグループチャットコマンドが判定されたときにトリガーされる"""
|
|
|
|
event_name: str = "GroupCommandSent"
|
|
|
|
launcher_type: str
|
|
|
|
launcher_id: typing.Union[int, str]
|
|
|
|
sender_id: typing.Union[int, str]
|
|
|
|
command: str
|
|
"""コマンドテキスト"""
|
|
|
|
params: list[str]
|
|
"""コマンドパラメータ"""
|
|
|
|
text_message: str
|
|
"""メッセージテキスト"""
|
|
|
|
is_admin: bool
|
|
"""管理者かどうか"""
|
|
```
|
|
|
|
### NormalMessageResponded
|
|
|
|
メッセージがLLMレスポンスを受信したときにトリガーされます。
|
|
|
|
```python
|
|
class NormalMessageResponded(BaseEventModel):
|
|
"""通常メッセージに返信するときにトリガーされる"""
|
|
|
|
event_name: str = "NormalMessageResponded"
|
|
|
|
launcher_type: str
|
|
|
|
launcher_id: typing.Union[int, str]
|
|
|
|
sender_id: typing.Union[int, str]
|
|
|
|
session: provider_session.Session
|
|
"""セッションオブジェクト"""
|
|
|
|
prefix: str
|
|
"""返信メッセージプレフィックス"""
|
|
|
|
response_text: str
|
|
"""返信メッセージテキスト"""
|
|
|
|
finish_reason: str
|
|
"""レスポンス終了理由"""
|
|
|
|
funcs_called: list[str]
|
|
"""呼び出された関数のリスト"""
|
|
|
|
# ========== 設定可能な属性 ==========
|
|
|
|
reply_message_chain: typing.Optional[platform_message.MessageChain] = None
|
|
"""返信メッセージコンポーネントリスト、デフォルト動作を防止した場合のみ有効"""
|
|
```
|
|
|
|
### PromptPreProcessing
|
|
|
|
LLMレスポンスコンテキスト(プロンプト)を構築するときにトリガーされます。
|
|
|
|
```python
|
|
class PromptPreProcessing(BaseEventModel):
|
|
"""セッション内のプロンプトを前処理するときにトリガーされる"""
|
|
|
|
event_name: str = "PromptPreProcessing"
|
|
|
|
session_name: str
|
|
"""セッション名、形式は person_1234567890 または group_1234567890"""
|
|
|
|
# ========== 設定可能な属性 ==========
|
|
|
|
default_prompt: list[typing.Union[provider_message.Message, provider_message.MessageChunk]]
|
|
"""この会話のシナリオプリセット(システムプロンプト)、変更可能、langbot_plugin.api.entities.builtin.provider.message.Messageまたはlangbot_plugin.api.entities.builtin.provider.message.MessageChunk型"""
|
|
|
|
prompt: list[typing.Union[provider_message.Message, provider_message.MessageChunk]]
|
|
"""この会話の既存メッセージレコード、変更可能、langbot_plugin.api.entities.builtin.provider.message.Messageまたはlangbot_plugin.api.entities.builtin.provider.message.MessageChunk型"""
|
|
```
|
|
|
|
## イベントコンテキストAPI
|
|
|
|
```python
|
|
...
|
|
@self.handler(events.PersonMessageReceived)
|
|
async def handler(event_context: context.EventContext):
|
|
...
|
|
```
|
|
|
|
イベント処理メソッドには`EventContext`オブジェクトが渡され、イベントコンテキスト情報が含まれます。このオブジェクトには[リクエストAPI](/ja/plugin/dev/apis/common)とイベントコンテキスト固有のAPIの両方があります。以下は、イベントコンテキスト固有のAPIのリストです:
|
|
|
|
### 元のイベント属性の取得
|
|
|
|
`event_context.event`属性は元のイベントオブジェクトであり、元のイベントの属性を取得できます。型はリッスンされているイベントの型です。
|
|
|
|
例えば、リッスンされているイベントが`GroupMessageReceived`の場合:
|
|
|
|
```python
|
|
event = event_context.event
|
|
print(event.launcher_type) # 起動元オブジェクトタイプ(group)
|
|
print(event.launcher_id) # グループID
|
|
print(event.sender_id) # 送信者アカウントID
|
|
print(event.message_chain) # メッセージチェーン
|
|
```
|
|
|
|
### デフォルト動作を防止
|
|
|
|
```python
|
|
def prevent_default(self):
|
|
"""デフォルト動作を防止する"""
|
|
|
|
# 使用例
|
|
event_context.prevent_default()
|
|
```
|
|
|
|
このメソッドを呼び出すと、このイベントのデフォルトの後続動作が防止され、パイプラインは直接終了します。
|
|
|
|
<Info>
|
|
- PersonMessageReceived
|
|
- GroupMessageReceived
|
|
- PersonNormalMessageReceived
|
|
- GroupNormalMessageReceived
|
|
- PersonCommandSent
|
|
- GroupCommandSent
|
|
- NormalMessageResponded
|
|
</Info>
|
|
|
|
### 後続実行を防止
|
|
|
|
```python
|
|
def prevent_postorder(self):
|
|
"""後続実行を防止する"""
|
|
|
|
# 使用例
|
|
event_context.prevent_postorder()
|
|
```
|
|
|
|
このメソッドを呼び出すと、後続のプラグインがこの時点で実行されなくなります。 |