アプリケーションフローを開発した後、Elastic Algorithm Service (EAS) サービスとしてデプロイできます。 EAS は、自動スケーリングや包括的な O&M モニタリングなどの機能を提供します。 これにより、アプリケーションはビジネスの変化や成長に柔軟に対応できるようになり、システムの安定性とパフォーマンスが向上し、本番環境の要件をより適切に満たすことができます。
前提条件
アプリケーションフローを作成してデバッグしました。詳細については、「アプリケーションフローを開発する」をご参照ください。
アプリケーションフローのデプロイ
LangStudio に移動し、ワークスペースを選択します。 [アプリケーションフロー] タブで、デバッグ済みのアプリケーションフローをクリックし、右上隅にある [デプロイ] をクリックします。 デプロイする前に、ランタイムが開始されていることを確認してください。 次の表に、主要なパラメーターを示します。

パラメーター | 説明 |
リソース情報 | |
リソースの種類 | パブリックリソース、または作成済みの 専用リソースグループ を選択します。 |
インスタンス | サービスインスタンスの数を構成します。 本番ステージでは、単一障害点のリスクを軽減するために、複数のインスタンスを構成します。 |
デプロイリソース | ビジネスフロースケジューリングにのみアプリケーションフローを使用する場合は、ビジネスフローの複雑さに基づいて適切な CPU リソース を選択できます。 GPU リソースと比較して、CPU リソースは通常、費用対効果が高くなります。 デプロイ後、リソースに対して課金されます。詳細については、「EAS の課金」をご参照ください。 |
VPC: アプリケーションフローは実際には EAS サービスとしてデプロイされます。 クライアントが正常にアクセスできるように、仮想プライベートクラウド (VPC) を選択します。 EAS サービスはデフォルトではインターネットにアクセスできないことに注意してください。 インターネットにアクセスするには、インターネット経由でアクセスできる VPC を構成します。詳細については、「ネットワーク接続を構成する」をご参照ください。 説明 アプリケーションフローにベクターデータベース接続 (Milvus など) が含まれている場合は、構成された VPC がベクターデータベースインスタンスが存在する VPC であるか、2 つの VPC が接続されていることを確認してください。 | |
履歴 | |
履歴の有効化 | このパラメーターは、チャットタイプのアプリケーションフローにのみ適用されます。 有効にすると、システムは複数ラウンドのチャット履歴を保存および送信できます。 この機能は、リクエストヘッダーパラメーターと組み合わせて使用する必要があります。 |
履歴ストレージ | ローカルストレージはマルチインスタンスデプロイメントをサポートしていません。 本番環境用のサービスをデプロイする場合は、ApsaraDB RDS などの外部ストレージを使用してください。 詳細については、「付録: チャット履歴」をご参照ください。 重要 ローカルストレージを使用する場合、マルチインスタンスデプロイメントはサポートされておらず、単一インスタンスから複数インスタンスへのスケールアウトもサポートされていません。 そうしないと、チャット履歴機能が正しく動作しない可能性があります。 |
トレースを有効にする: 有効にすると、トレースレコードを表示して、デプロイ後にアプリケーションフローの効果を評価できます。 | |
ロールと権限: アプリケーションフローで、Faiss ベクタデータベース (ナレッジベースを作成 するときに Faiss または Milvus ベクタデータベースを選択) または「Alibaba Cloud IQS Search」(IQS ウェブ検索ベースのチャットボット テンプレートで必要) を使用する場合は、適切なロールを選択する必要があります。 | |
パラメーター構成の詳細については、「コンソールでのカスタムデプロイメントのパラメーター」をご参照ください。
オンラインデバッグ
サービスを呼び出す
オンラインデバッグ
デプロイが成功すると、PAI-EAS にリダイレクトされます。 [オンラインデバッグ] タブで、リクエストを構成して送信します。 リクエスト本文のキーは、アプリケーションフローの開始ノードのチャット入力パラメーターの値と同じである必要があります。 このトピックでは、デフォルトフィールドのquestion が使用されます。

API 呼び出しを行う
[概要] タブで、エンドポイントとトークンを取得します。

API リクエストを送信します。
サービスは、シンプルモードまたはコンプリートモードで呼び出すことができます。 次の表に、2 つのモードの違いを示します。
プロパティ
シンプルモード
コンプリートモード
リクエストパス
<Endpoint>/<Endpoint>/run機能の説明
アプリケーションフローの出力結果を直接返します。
アプリケーションフローのノードステータス、エラーメッセージ、出力メッセージを含む複雑な構造を返します。
シナリオ
アプリケーションフローの最終的な出力結果のみが必要で、フローの内部処理やステータスは気にしません。
結果をすばやく取得するための簡単なクエリまたは操作に適しています。
各ノードのステータスや発生する可能性のあるエラーメッセージなど、アプリケーションフローの実行プロセスを詳細に理解する必要があります。
アプリケーションフローの実行のデバッグ、監視、または分析に適しています。
利点
使い方が簡単で、複雑な構造を解析する必要はありません。
アプリケーションフローの実行プロセスを深く理解するのに役立つ包括的な情報を提供します。
アプリケーションフローのパフォーマンスのトラブルシューティングと最適化に役立ちます。
シンプルモード
コンプリートモード
Langstudio は、Server-Sent Events (SSE) をサポートしており、アプリケーションフローの実行時に各ノードのステータス、エラーメッセージ、および出力メッセージを出力できます。 また、イベント内の
node_run_infosの内容をカスタマイズすることもできます。 次の例では、オンラインデバッグ を使用しています。 呼び出しアドレスに/runを追加してから、リクエスト本文を編集する必要があります。
次の表に、リクエスト本文のパラメーターを示します。
フィールド名
タイプ
デフォルト値
説明
inputs
Mapping[str, Any]
なし
入力データ辞書。 キーは、アプリケーションフローで定義された入力フィールド名と一致する必要があります。 フローに入力がない場合、このフィールドは無視されます。
stream
bool
True
レスポンス形式を制御します。 デフォルト値: 動的。 有効な値:
True: SSE ストリーミングで応答します。 レスポンスヘッダーの Content-Type は
text/event-streamで、データは DataOnly 形式で返され、RunStarted、NodeUpdated、RunOutput、RunTerminated の異なるイベントに分割されます。 詳細については、以下の表を参照してください。False: 単一の JSON 本文で応答します。 レスポンスヘッダーの Content-Type は
application/jsonです。 オンラインデバッグ のレスポンス情報を参照できます。
response_config
Dict[str, Any]
-
ストリーミングレスポンス (stream=True の場合) に含まれる詳細なノード情報を制御します。
∟ include_node_description
bool
False
(response_config 内) SSE イベントストリームにノードの説明を含めるかどうか。
∟ include_node_display_name
bool
False
(response_config 内) SSE イベントストリームにノードの表示名を含めるかどうか。
∟ include_node_output
bool
False
(response_config 内) SSE イベントストリームにノードの出力を含めるかどうか。
∟ exclude_nodes
List[str]
[]
(response_config 内) SSE イベントストリームから除外するノード名のリスト。
返されるデータは、RunStarted、NodeUpdated、RunOutput、RunTerminated の異なるイベントに分割されます。
OpenAI 互換呼び出しメソッド
デプロイされたチャットタイプのアプリケーションフローは、OpenAI 互換呼び出しをサポートしており、OpenAI をサポートするクライアントで使用できます。
OpenAI API ベースのメソッド
この例では、cURL コマンドを使用したストリーミング呼び出しを示します。 リクエストとレスポンスの例を次に示します。
サンプルリクエスト:
curl --location '<Endpoint>/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "default",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "Who are you?"
}
],
"stream":true
}'次の表に、リクエストパラメーターを示します。
パラメーター | 説明 |
--location '<Endpoint>/v1/chat/completions' | リクエストの宛先 URL。 |
--header "Authorization: Bearer $DASHSCOPE_API_KEY" | HTTP ヘッダー。 |
"model": "default" | モデル名。 |
"stream":true | 返される情報が ストリーミング であるかどうかを指定します。 注: ストリーミングは、LLM ノードがアプリケーションフローの出力ノードとして使用されている場合 (LLM ノードがエンドノードへの直接入力である場合) にのみサポートされます。 |
サンプルレスポンス:
data: {"choices":[{"delta":{"content":"","role":"assistant"},"index":0,"logprobs":null,"finish_reason":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen-plus","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}
data: {"choices":[{"finish_reason":null,"delta":{"content":"I am"},"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen-plus","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}
data: {"choices":[{"delta":{"content":"a large"},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen-plus","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}
data: {"choices":[{"delta":{"content":"language model"},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen-plus","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}
data: {"choices":[{"delta":{"content":"created by Alibaba Cloud"},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen-plus","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}
data: {"choices":[{"delta":{"content":". I am called Qwen."},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen-plus","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}
data: {"choices":[{"delta":{"content":""},"finish_reason":"stop","index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen-plus","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}
data: [DONE]他のクライアントとの統合
この例では、Windows プラットフォームでの ChatBox v1.13.4 との統合を示します。
Chatbox をダウンロードしてインストールします。
ChatBox を開き、次のように モデルプロバイダー名 (LangStudio など) を構成します。

構成済みのモデルプロバイダーを選択し、サービスリクエストパラメーターを構成します。

次の表に、主要なパラメーターを示します。
パラメーター
説明
API モード
OpenAI API Compatibleに固定。API キー
デプロイされたサービスのトークンに設定します。詳細については、「概要タブでエンドポイントとトークンを取得する」をご参照ください。
API ホスト
デプロイされたサービスのエンドポイント (「概要タブでエンドポイントとトークンを取得する」を参照) に設定し、最後に
/v1サフィックスを追加します。 この例では、インターネットエンドポイントを使用しています。 したがって、API ホストはhttp://langstudio-20250319153409-xdcp.115770327099****.cn-hangzhou.pai-eas.aliyuncs.com/v1です。API パス
/chat/completionsに固定。モデル
[新規] をクリックし、qwen3-8b などのカスタム [モデル ID] を入力します。
チャットダイアログボックスでデプロイされたサービスを呼び出します。

トレースレコードの表示
サービスを呼び出すと、システムは自動的にトレースレコードを生成します。 [トレース分析] タブで、管理するトレースレコードを見つけ、[アクション] 列の [トレースを表示] をクリックします。

トレースデータを使用すると、アプリケーションフロー内の各ノードの入出力情報 (ベクターデータベースのリコール結果や LLM ノードの入出力情報など) を表示できます。
付録: チャット履歴
チャットベースのアプリケーションフローの場合、LangStudio は複数ラウンドの会話の履歴を保存する機能を提供します。 チャット履歴を保存するために、ローカルストレージまたは外部ストレージを使用することを選択できます。
ストレージの種類
ローカルストレージ: サービスはローカルディスクを使用して、アプリケーションフローがデプロイされている EAS インスタンスに chat_history.db という名前の SQLite データベースを自動的に作成し、チャット履歴を保存します。 デフォルトのストレージパスは
/langstudio/flow/です。 ローカルストレージはマルチインスタンスデプロイメントをサポートしていないことに注意してください。 ローカルディスクの使用量を定期的に確認してください。 また、以下に示す API を使用して、チャット履歴を表示または削除することもできます。 EAS インスタンスが削除されると、関連するチャット履歴もクリアされます。外部ストレージ: ApsaraDB RDS for MySQL をサポートしています。 外部ストレージを使用するには、サービスをデプロイするときに、チャット履歴を保存するための RDS MySQL 接続を構成する必要があります。 詳細については、「サービス接続構成 - データベース」をご参照ください。 サービスは、構成した RDS MySQL データベースにサービス名が付加されたテーブルを自動的に作成します。 たとえば、サービスは、チャットセッションを保存するために
langstudio_chat_session_<サービス名>テーブルを作成し、チャット履歴を保存するためにlangstudio_chat_history_<サービス名>テーブルを作成します。
セッションまたはユーザーサポート
アプリケーションフローへの各チャットリクエストはステートレスです。 複数のリクエストを同じ会話として扱う場合は、リクエストヘッダーを手動で構成する必要があります。 呼び出し方法については、「API 呼び出しを行う」をご参照ください。
リクエストヘッダー | データ型 | 説明 | 注記 |
Chat-Session-Id | String | セッション ID。 サービスリクエストごとに、システムはセッションに一意の識別子を自動的に割り当てて異なるセッションを区別し、レスポンスヘッダーの | カスタムセッション ID がサポートされています。 一意性を確保するために、セッション ID は 32 ~ 255 文字の長さで、文字、数字、アンダースコア (_)、ハイフン (-)、コロン (:) を含めることができます。 |
Chat-User-Id | String | ユーザー ID。チャットが属するユーザーを識別します。 システムはユーザー ID を自動的に割り当てません。 カスタムユーザー ID がサポートされています。 | - |
チャット履歴 API
アプリケーションフローサービスは、チャット履歴データ管理 API 操作も提供しており、これらのデータを簡単に表示および削除できます。 {Endpoint}/openapi.json に GET リクエストを送信することで、完全な API スキーマを取得できます。 このスキーマは Swagger 標準に基づいて構築されています。 これらの API 操作をより直感的に理解し、探索するために、Swagger UI を使用して可視化操作を実行することをお勧めします。これにより、操作がよりシンプルで明確になります。