はじめに
Server-Sent Events のエンドポイント(Endpoint)は、クライアント側がサーバーのイベント配信と接続を確立するための窓口で、サーバーから送られるメッセージ(Messages)とイベント(Events)を受け取ります。 これらのメッセージには、Agent や Bot が送る内容、システムのイベント、エンドユーザーのメッセージなど、さまざまなものが含まれます。エンドポイントを呼び出すと、クライアントは接続を開いたままサーバーからのイベントを受け取り続けます。
Request
リクエストのイベントは 4 種類あります。
- 起動/リセット
- メッセージの送信
- ファイルのアップロード
- ファイルを添付してメッセージを送信
リクエストイベントの流れ
Response
イベントの種類は次のとおりです。
Event Types
| 名称 | 説明 |
|---|---|
| asgard.run.init | SSE サービスの初期化のイベント |
| asgard.message.start | 対話の開始(最初のテキストを含むことがあります) |
| asgard.message.delta | 対話の内容の更新(タイプライター風に 1 文字ずつ送られます) |
| asgard.message.complete | 対話の終了(完全なテキストと Template の形式) |
| asgard.run.done | SSE サービスのイベントの完了 |
| asgard.run.error | SSE サービスのイベントのエラー。エラーが起きたときだけ現れます |
| asgard.process.start | process の開始 |
| asgard.process.complete | process の完了 |
| asgard.tool_call.start | tool の開始。Toolset を使っているときだけ現れます |
| asgard.tool_call.complete | tool の完了。Toolset を使っているときだけ現れます |
イベントはまず初期化され、そのあとメッセージの送信が始まります。メッセージには開始、継続、完了の段階があり、継続の段階では完了するまで複数の delta が届くことがあります。順序は idx で確認できます。メッセージが完了してから、イベントの完了が続きます。
一般的な対話のイベントの流れ
Toolset を使う場合のイベントの流れ
Fact Fields
イベント内の各フィールドは次のとおりです。
| 名称 | 説明 |
|---|---|
| runInit | init が返す内容 |
| runDone | done が返す内容 |
| runError | error が返す内容 |
| messageStart | メッセージの開始。message オブジェクトが持つフィールドは: messageId, replyToCustomMessageId, text, payload, idx, template |
| messageDelta | メッセージの追加分。message オブジェクトが持つフィールドは: messageId, replyToCustomMessageId, text, payload, idx, template(省略時は null) idx はそのメッセージ断片の順序を示します。下の Delta の例を参照してください。 |
| messageComplete | メッセージの完了。message オブジェクトが持つフィールドは: messageId, replyToCustomMessageId, text, payload, idx, template |
| processStart | process の開始 |
| processComplete | process の完了 |
| toolCallStart | tool の開始。Toolset を使っているときだけ現れます |
| toolCallComplete | tool の完了。Toolset を使っているときだけ現れます |