メインコンテンツまでスキップ
LLM を呼び出し、返答を生成しながらストリーミングでユーザーに送ります。

Stream LLM Completion

Stream LLM Completion は大規模言語モデルを呼び出し、自然言語をストリーミングで出力するプロセッサーです。

基本的な使い方​

Stream LLM Completion は設定された Prompt を指定の Completion Model に送り、応答が生成されるにつれて一文字ずつ表示されます。人が入力しているような見え方になります。メッセージの出力機能が内蔵されているため、別途 Push Message をつなぐ必要はありません。AI チャットボット、リアルタイムのサポート応答、対話的な質問応答など、自然な会話の感触が重要な場面で使います。

設定項目​

ノードのプロパティパネルです。

Stream LLM Completion Message のプロパティパネル

Name​

キャンバス上に表示される名前です。ワークフロー内でこのプロセッサーを識別するために使います。

Description​

このプロセッサーの用途を補足し、ワークフローの読みやすさを高めます。

Properties​

Completion Model(必須)​

使用する Completion Model リソースの名前です。あらかじめリソースを作成しておく必要があります。OpenAI GPT、Claude、Gemini などに対応しています。

Prompt(必須)​

モデルへ送る指示で、文脈と必要な記憶を与えます。

値の種類​

  • Literal: 指示をそのまま入力します
  • Expression: JavaScript の式で指示を組み立てます
  • Template: テンプレート構文と組み込み関数で指示を構成します

値の取得方法はExpression の概要 — 値の取得を参照してください。

Input​

このターンでモデルへ送るユーザーのメッセージです。空にすると、プロセッサーはチャネルが届けたメッセージ、つまり context の prevMessage を使います。

通常の対話ではこの項目を設定する必要はなく、ユーザーが実際に言ったことをそのまま使わせます。上書きするのは、入力に手を加えた場合です。たとえば前の文脈の要約を付けたり、より明確な問いに書き換えてからモデルへ渡す場合です。

MaxTokens(必須)​

プロンプトと応答を合わせた token の上限です。応答の長さとコストの両方を制御します。

Await​

モデルの出力が完了するまでワークフローが待つかどうかです。有効にすると応答全体を待ち、無効にするとモデルが最初の token を出した時点で先へ進みます。

Temperature​

(任意) モデルの温度で、回答のばらつきを制御します。高いほど多様に、低いほど一貫します。指定できる範囲は completion model によって異なるため、そのモデルの制限に従ってください。省略するとモデルの既定値が使われます。温度に対応しないモデルもあるため、その場合はこの項目を設定しないでください。

Effort​

推論の強度です。low、medium、high、xhigh、max、またはモデルに委ねる auto を指定できます。思考の深さと token の総消費量の両方を制御します。

未設定の場合はモデルの既定値が使われます。すべてのモデルがすべての段階に対応しているわけではなく、対応していない段階を送るとそのターンは失敗します。速度重視の Haiku 系など、このパラメータ自体を受け付けないモデルもあります。その場合は disabled を設定し、項目を送らないようにします。

MCP Servers​

(任意) モデルが利用できる toolset の名前で、ドロップダウンから選びます。toolset を設定すると、その配下のすべてのツールがモデルに与えられます。多くの場合、どのツールをいつ呼ぶべきかを prompt にも書いておくと、モデルが適切に選べます。

エディター上の表示は MCP Servers で、Workflow CRD を書くときの config キーは toolsets です。

(任意) OpenAI Web Search を有効にするかどうかです。対応する OpenAI のモデルでのみ使えます。有効にすると、モデルがウェブを検索して回答できます。(OpenAI の公式ドキュメントを参照してください。)

OpenAI Web Search Context​

(任意) 回答の生成を助けるためにウェブからどれだけ内容を取得するかです。'low'、'medium'、'high' から選べます。Enable OpenAI Web Search が有効なときにのみ設定できます。

Blob IDs​

モデルに解析させる画像やファイルの ID です。(+) をクリックして複数追加できます。視覚に対応した Completion Model でのみ利用できます。モデルはこの内容を解析して回答します。

Blob IDs

Semantic Layers​

モデルに掛ける意味モデルを JSON 配列で設定します。各要素の形は次のとおりです。

[
{
"name": "<CR name>",
"allowQuery": true,
"allowWrite": false,
"allowedCubes": ["orders", "order_items"]
}
]

下にある単数形の Semantic Layer と比べ、この項目は複数の意味モデルを同時に掛けられ、一度の LLM 呼び出しで複数のデータベースを横断して検索できます。新しいワークフローではこちらを使ってください。

Semantic Layers Data Visualization​

既定では無効です。有効にし、かつ意味モデルが少なくとも一つ設定されていると、モデルは show_result_set_table と show_vega_visualization という 2 つのツールを追加で得ます。直近の検索結果を UI の表または Vega v5 のグラフとして描画するためのものです。

これは任意で有効にする機能です。無効のままだと、検索結果はテキストだけで返ります。

Sandbox Blueprint​

この LLM 呼び出しのために Sandbox を用意する SandboxBlueprint の名前です。設定すると、システムは Sandbox が Ready になってからタスクを送り、モデルはその Sandbox に紐づく組み込みツール(bash、str_replace_editor)と、system prompt 内で見つかった Skills を利用できます。

空欄にすると、この呼び出しでは Sandbox を使いません。

Workflow CRD での設定​

- name: proc-agent-stream-msg
type: stream-llm-completion-message
labels:
display_name: Agent
description: EC 統括の主応答
configs:
- name: completionModel
value: cm-builtin-balanced
- name: prompt
template: |
あなたは EC 統括、EC 運営チームを支援する AI 協働エージェントです。
{{#if prevPayload.brand}}
対象のブランドは {{{prevPayload.brand.display_name}}} です。
{{/if}}
- name: maxTokens
value: "60000"
- name: await
value: "true"
- name: toolsets
value: "ts-ui-event"
- name: sandboxBlueprint
value: "sbp-ec-manager"

prompt はターンをまたいで安定する system prompt と人格の設定です。ユーザーのメッセージや対話履歴は入れません。それは input の役目です。template で書くと Handlebars の条件式が使え、payload の内容に応じて人格を組み立てられます。

toolsets はエディター上で MCP Servers と表示される項目で、値は Toolset 名をカンマで区切ったものです。

接続関係​

Success​

  • Await が有効: モデルが応答全体を生成し終えると、この接続点から次へ進みます
  • Await が無効: モデルが最初の token を出した時点で、直ちにこの接続点から次へ進みます

Failure​

モデルの呼び出しに失敗した場合、この接続点から続き、prevError 変数にエラー情報が入ります。

実際の例​

通常の会話応答です。Listen Message の後ろに置き、ユーザーの発話をモデルに渡して、返答をそのままストリーミングします。

項目値
Completion Modelプロジェクトに設定済みのモデル
Promptシステムプロンプト。例:あなたはサポート担当です。回答は簡潔に。
InputExpression:prevMessage
MaxTokens1024
Awaitオフ

Await がオフなら返答を送った時点でフローは先へ進みます。返答が終わってから何かする(例:DB への記録)場合にオンにします。

注意事項​

  • この processor 自身がユーザーへ返答を送るので、後ろに Push Message を置く必要はありません。
  • 返答は生成完了を待たず、逐次ストリーミングされます。
  • Await は返答全体を待つかどうかを決めます。オンなら後続ノードが完全な返答を受け取れ、オフならフローが先に進みます。