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

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

API コール
[概要] タブで、サービスエンドポイントとトークンを取得します。

API リクエストを送信します。
サービスは基本モードまたは完全モードで呼び出せます。次の表に相違点を示します。
プロパティ
基本モード
完全モード
リクエストパス
<Endpoint>/<Endpoint>/run説明
アプリケーションフローの出力を直接返します。
アプリケーションフローのノードステータス、エラーメッセージ、出力メッセージを含む複雑な構造を返します。
シナリオ
アプリケーションフローの最終出力のみが必要で、内部処理やステータスは問いません。
シンプルなクエリや操作で、結果をすばやく取得したい場合に適しています。
各ノードのステータスや想定されるエラーメッセージなど、アプリケーションフローの実行プロセスを詳細に把握する必要がある場合に適しています。
アプリケーションフローの実行をデバッグ、監視、または分析する場合に適しています。
メリット
使い方が簡単です。複雑な構造を解析する必要はありません。
アプリケーションフローの実行プロセスを深く理解するための包括的な情報を提供します。
アプリケーションフローのトラブルシューティングとパフォーマンス最適化に役立ちます。
基本モード
完全モード
LangStudio はサーバーセントイベント (SSE) をサポートしています。リクエストを送信すると、サービスはアプリケーションフローの実行中に各ノードのステータス、エラーメッセージ、出力メッセージを出力できます。また、イベント内の
node_run_infosのコンテンツをカスタマイズすることもできます。このセクションでは、オンラインデバッグを例に説明します。エンドポイントに/runを追加してから、リクエストボディを編集する必要があります:
次の表に、リクエストボディ内のフィールドを示します。
フィールド
タイプ
デフォルト値
説明
inputs
Mapping[str, Any]
None
フローの入力データ辞書です。キーは、フローで定義されている入力フィールド名と一致する必要があります。フローに入力がない場合は、このフィールドを省略できます。
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" | リクエストヘッダー です。 |
"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 などの [Model Provider Name] を設定します。

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

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

トレースの表示
サービスを呼び出すと、トレースが自動的に生成されます。アプリケーションフローのパフォーマンスを評価するには、[トレーシング分析] タブで表示したいトレースを探し、[アクション] 列の [トレースの表示] をクリックします。

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