すべてのプロダクト
Search
ドキュメントセンター

Platform For AI:アプリケーションフローのデプロイ

最終更新日:Nov 10, 2025

アプリケーションフローを開発した後、Elastic Algorithm Service (EAS) サービスとしてデプロイできます。 EAS は、自動スケーリングや包括的な O&M モニタリングなどの機能を提供します。 これにより、アプリケーションはビジネスの変化や成長に柔軟に対応できるようになり、システムの安定性とパフォーマンスが向上し、本番環境の要件をより適切に満たすことができます。

前提条件

アプリケーションフローを作成してデバッグしました。詳細については、「アプリケーションフローを開発する」をご参照ください。

アプリケーションフローのデプロイ

LangStudio に移動し、ワークスペースを選択します。 [アプリケーションフロー] タブで、デバッグ済みのアプリケーションフローをクリックし、右上隅にある [デプロイ] をクリックします。 デプロイする前に、ランタイムが開始されていることを確認してください。 次の表に、主要なパラメーターを示します。

image

パラメーター

説明

リソース情報

リソースの種類

パブリックリソース、または作成済みの 専用リソースグループ を選択します。

インスタンス

サービスインスタンスの数を構成します。 本番ステージでは、単一障害点のリスクを軽減するために、複数のインスタンスを構成します。

デプロイリソース

ビジネスフロースケジューリングにのみアプリケーションフローを使用する場合は、ビジネスフローの複雑さに基づいて適切な 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 が使用されます。

image

API 呼び出しを行う

  1. [概要] タブで、エンドポイントとトークンを取得します。

    image

  2. API リクエストを送信します。

    サービスは、シンプルモードまたはコンプリートモードで呼び出すことができます。 次の表に、2 つのモードの違いを示します。

    プロパティ

    シンプルモード

    コンプリートモード

    リクエストパス

    <Endpoint>/

    <Endpoint>/run

    機能の説明

    アプリケーションフローの出力結果を直接返します。

    アプリケーションフローのノードステータス、エラーメッセージ、出力メッセージを含む複雑な構造を返します。

    シナリオ

    • アプリケーションフローの最終的な出力結果のみが必要で、フローの内部処理やステータスは気にしません。

    • 結果をすばやく取得するための簡単なクエリまたは操作に適しています。

    • 各ノードのステータスや発生する可能性のあるエラーメッセージなど、アプリケーションフローの実行プロセスを詳細に理解する必要があります。

    • アプリケーションフローの実行のデバッグ、監視、または分析に適しています。

    利点

    使い方が簡単で、複雑な構造を解析する必要はありません。

    • アプリケーションフローの実行プロセスを深く理解するのに役立つ包括的な情報を提供します。

    • アプリケーションフローのパフォーマンスのトラブルシューティングと最適化に役立ちます。

    シンプルモード

    cURL コマンド

    デプロイされた EAS アプリケーションフローサービスは、cURL コマンドを使用したストリーミングまたは非ストリーミング呼び出しをサポートしています。 次の表に、リクエストとレスポンスの例を示します。

    ストリーミング

    非ストリーミング

    サンプルリクエスト

    curl -X POST \
         -H "Authorization: Bearer <your_token>" \
         -H "Content-Type: application/json" \
         -H "Accept: text/event-stream" \
         -d '{"question": "Where is the capital of France?"}' \
         "<your_endpoint>"
    curl -X POST \
         -H "Authorization: Bearer <your_token>" \
         -H "Content-Type: application/json" \
         -d '{"question": "Where is the capital of France?"}' \
         "<your_endpoint>"

    サンプルレスポンス

    event: Message
    data: {"answer": ""}
    
    event: Message
    data: {"answer": "The"}
    
    event: Message
    data: {"answer": " capital"}
    
    event: Message
    data: {"answer": " of"}
    
    event: Message
    data: {"answer": " France"}
    
    event: Message
    data: {"answer": " is"}
    
    event: Message
    data: {"answer": " Paris"}
    
    event: Message
    data: {"answer": "."}
    
    event: Message
    data: {"answer": ""}
    {"answer":"The capital of France is Paris."}

    次の表に、リクエストパラメーターを示します。

    パラメーター

    説明

    -H "Authorization: Bearer <your_token>"

    HTTP ヘッダー。<your_token>手順 1 で取得したトークンに置き換えます。

    -H "Accept: text/event-stream"

    クライアントが SSE リクエストを受け入れること、および返される情報が ストリーミング であることを示します。 注: ストリーミングは、LLM ノードがアプリケーションフローの出力ノードとして使用されている場合 (LLM ノードがエンドノードへの直接入力である場合) にのみサポートされます。

    -d '{"question": "Where is the capital of France?"}'

    リクエスト本文。キーと値のペアを含む JSON オブジェクトで、質問文字列です。 キーは、アプリケーションフローの「開始ノード」の「チャット入力」パラメーターフィールドと一致する必要があります。 この場合、デフォルトフィールドの question が使用されます。

    "<your_endpoint>"

    リクエストの宛先 URL。<your_endpoint>手順 1 で取得したエンドポイントに置き換えます。

    Python コード

    次の例は、requests ライブラリを使用してアプリケーションフローサービスに POST リクエストを送信する方法を示しています。ストリーミングまたは非ストリーミング呼び出しをサポートしています。 このライブラリがインストールされていることを確認してください。 インストールされていない場合は、pip install requests を実行してインストールします。

    ストリーミング

    非ストリーミング

    サンプルリクエスト

    import requests
    import json
    
    url = "http://<your-endpoint-here>"
    token = "<your-token-here>"
    data = {"question": "Where is the capital of France?"}
    
    # アプリケーションフローサービスのトークンを含むリクエストヘッダーを指定します。
    headers = {
        "Authorization": f"Bearer {token}",
        "Accept": "text/event-stream",
        "Content-Type": "application/json"
    }
    
    if __name__ == '__main__':
        with requests.post(url, json=data, headers=headers, stream=True) as r:
            for line in r.iter_lines(chunk_size=1024):
                print(line)
    
    import requests
    import json
    
    url = "http://<your-endpoint-here>"
    token = "<your-token-here>"
    data = {"question": "Where is the capital of France?"}
    
    # アプリケーションフローサービスのトークンを含むリクエストヘッダーを指定します。
    headers = {
        "Authorization": f"Bearer {token}",
        "Content-Type": "application/json"
    }
    
    response = requests.post(url, json=data, headers=headers)
    
    if response.status_code == 200:
        print("リクエストは成功しました。結果:")
        print(response.text)
    else:
        print(f"リクエストは失敗しました。状態コード: {response.status_code}")
    

    サンプルレスポンス

    event: Message
    data: {"answer": ""}
    
    event: Message
    data: {"answer": "The"}
    
    event: Message
    data: {"answer": " capital"}
    
    event: Message
    data: {"answer": " of"}
    
    event: Message
    data: {"answer": " France"}
    
    event: Message
    data: {"answer": " is"}
    
    event: Message
    data: {"answer": " Paris"}
    
    event: Message
    data: {"answer": "."}
    
    event: Message
    data: {"answer": ""}
    {"answer":"The capital of France is Paris."}

    次の表に、リクエストパラメーターを示します。

    パラメーター

    説明

    url

    リクエストの宛先 URL。<your-endpoint-here>手順 1 で取得したエンドポイントに置き換えます。

    token

    HTTP ヘッダー。<your-token-here>手順 1 で取得したトークンに置き換えます。

    data

    リクエスト本文。キーと値のペアを含む JSON オブジェクトで、質問文字列です。 キーは、アプリケーションフローの「開始ノード」の「チャット入力」パラメーターフィールドと一致する必要があります。 この場合、デフォルトフィールドの question が使用されます。

    "Accept": "text/event-stream"

    クライアントが SSE リクエストを受け入れること、および返される情報が ストリーミング であることを示します。 注: ストリーミングは、LLM ノードがアプリケーションフローの出力ノードとして使用されている場合 (LLM ノードがエンドノードへの直接入力である場合) にのみサポートされます。

    コンプリートモード

    Langstudio は、Server-Sent Events (SSE) をサポートしており、アプリケーションフローの実行時に各ノードのステータス、エラーメッセージ、および出力メッセージを出力できます。 また、イベント内の node_run_infos の内容をカスタマイズすることもできます。 次の例では、オンラインデバッグ を使用しています。 呼び出しアドレスに /run を追加してから、リクエスト本文を編集する必要があります。

    image

    次の表に、リクエスト本文のパラメーターを示します。

    フィールド名

    タイプ

    デフォルト値

    説明

    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 の異なるイベントに分割されます。

    RunStarted イベント

    • 定義: RunStarted イベントは、実行の開始を示します。 通常、実行の SSE ストリームの最初のイベントとして送信されます。

    • ペイロード例:

      data: {"event": "RunStarted", "run_id": "fb745e15-3b3b-4a10-9e0d-0bea08d47411", "timestamp": "2025-06-12T08:15:07.223611Z", "flow_run_info": {"run_id": "fb745e15-3b3b-4a10-9e0d-0bea08d47411", "status": "Running", "error": null, "otel_trace_id": ""}}
    • フィールドの説明:

      フィールド名

      タイプ

      説明

      event

      string

      イベントタイプ。RunStarted に固定。

      run_id

      string

      現在の実行の一意の識別子。

      timestamp

      string

      イベント発生のタイムスタンプ。ISO 8601 標準に準拠。

      flow_run_info

      object

      実行全体に関する最終的なステータス情報が含まれています。

      ∟ run_id

      string

      (flow_run_info 内) 実行の一意の識別子 (外側の run_id と同じ)。

      ∟ status

      string

      (flow_run_info 内) 実行の初期ステータス。Running に固定。

      ∟ error

      object または null

      (flow_run_info 内) 実行が失敗した場合、エラーメッセージオブジェクトが含まれます。それ以外の場合は null

      ∟ otel_trace_id

      string

      (flow_run_info 内) この実行に関連付けられた OpenTelemetry トレース ID (空またはゼロ値の場合があります)。

    NodeUpdated イベント

    • 定義: NodeUpdated イベントは、フロー内の 1 つ以上のノードのステータスまたは出力が変更されたことを示します。 実行中、このイベントは通常、ノードが実行を開始したとき (Running) または実行を完了したとき (Completed/Failed) に送信されます。 response_config が設定されている場合、このイベントにはノードの説明、表示名、および出力が含まれる場合もあります。注: リクエストの response_configexclude_nodes を指定すると、それらのノードの NodeUpdated イベントは返されません。

    • ペイロード例:

      data: {"event": "NodeUpdated", "run_id": "8f92b1a6-4d69-422a-a080-50713e488b56", "timestamp": "2025-04-25T08:57:15.208601Z", "node_run_infos": [{"node_name": "custom_python", "node": "custom_python", "status": "Running", "error": null, "duration": 0.0, "description": null, "display_name": null, "output": null}]}
      data: {"event": "NodeUpdated", "run_id": "8f92b1a6-4d69-422a-a080-50713e488b56", "timestamp": "2025-04-25T08:57:15.209621Z", "node_run_infos": [{"node_name": "custom_python", "node": "custom_python", "status": "Completed", "error": null, "duration": 0.001246, "description": null, "display_name": null, "output": {"text": "echo:hello", "input_length": 2}}]}
    • フィールドの説明:

      フィールド名

      タイプ

      説明

      event

      string

      イベントタイプ。NodeUpdated に固定。

      run_id

      string

      現在の実行の一意の識別子。

      timestamp

      string

      イベント発生のタイムスタンプ。ISO 8601 標準に準拠。

      node_run_infos

      array[object]

      1 つ以上のノード実行情報オブジェクトを含む配列。 各オブジェクトは、ステータスまたは出力が変更されたノードを表します。

      ∟ node_name

      string

      (node_run_infos 内) ノードの名前 (レガシーフィールド。node フィールドと同じ)。

      ∟ node

      string

      (node_run_infos 内) ノードの名前。

      ∟ status

      string

      (node_run_infos 内) ノードの現在のステータス。Running、Completed、Failed など。

      ∟ error

      object または null

      (node_run_infos 内) ノードの実行が失敗した場合、エラーメッセージオブジェクトが含まれます。それ以外の場合は null。

      ∟ duration

      float

      (node_run_infos 内) ノードの実行に費やされた時間 (秒単位)。 Running ステータスの場合、これは通常 0.0 です。

      ∟ description

      string または null

      (node_run_infos 内) ノードの説明。 リクエストで response_config.include_node_descriptiontrue の場合にのみ含まれます。それ以外の場合は null

      ∟ display_name

      string または null

      (node_run_infos 内) ノードの表示名。 リクエストで response_config.include_node_display_nametrue の場合にのみ含まれます。それ以外の場合は null

      ∟ output

      object または null

      (node_run_infos 内) ノードの出力データ。 ノードのステータスが Completed で、リクエストで response_config.include_node_outputtrue の場合にのみ含まれます。それ以外の場合は null

    RunOutput イベント

    • 定義: RunOutput イベントは、実行が最終出力を生成したことを示します。 通常、フロー実行の最後に RunTerminated イベントの前に発生します。

    • ペイロード例:

      data: {"event": "RunOutput", "run_id": "4c185c72-1bb0-4beb-a288-f7a73e37fc3b_llm_3ce063ad-bc9b-417d-9e68-08ce92c3db1b", "timestamp": "2025-04-30T11:55:24.745130Z", "outputs": {"answer": "What can"}, "output_metadata": {"answer": {"is_stream": true, "status": "Streaming"}}}
      
      data: {"event": "RunOutput", "run_id": "4c185c72-1bb0-4beb-a288-f7a73e37fc3b_llm_3ce063ad-bc9b-417d-9e68-08ce92c3db1b", "timestamp": "2025-04-30T11:55:24.829133Z", "outputs": {"answer": " I help you with?"}, "output_metadata": {"answer": {"is_stream": true, "status": "Streaming"}}}
      
      data: {"event": "RunOutput", "run_id": "4c185c72-1bb0-4beb-a288-f7a73e37fc3b_llm_3ce063ad-bc9b-417d-9e68-08ce92c3db1b", "timestamp": "2025-04-30T11:55:24.950055Z", "outputs": {"answer": ""}, "output_metadata": {"answer": {"is_stream": true, "status": "Streaming"}}}
      
      data: {"event": "RunOutput", "run_id": "4c185c72-1bb0-4beb-a288-f7a73e37fc3b_llm_3ce063ad-bc9b-417d-9e68-08ce92c3db1b", "timestamp": "2025-04-30T11:55:24.954983Z", "outputs": {}, "output_metadata": {"answer": {"is_stream": true, "status": "Finished"}}}
      
      data: {"event": "RunOutput", "run_id": "4c185c72-1bb0-4beb-a288-f7a73e37fc3b_python_oHG7_1c9fb0ac-0f45-4dbc-bf97-8e4175fd991c", "timestamp": "2025-04-30T11:55:24.957091Z", "outputs": {"python_output": "Hello: Hello! What can I help you with?"}, "output_metadata": {"python_output": {"is_stream": false, "status": "Finished"}}}
    • フィールドの説明:

      フィールド名

      タイプ

      説明

      event

      string

      イベントタイプ。RunOutput に固定。

      run_id

      string

      現在の実行の一意の識別子。

      timestamp

      string

      イベント発生のタイムスタンプ。ISO 8601 標準に準拠。

      outputs

      object

      フローの最終出力結果を含む辞書。 その具体的な構造は、フローの設計時に定義された出力によって異なります。

      output_metadata

      object

      フロー出力メタデータを含む辞書。 キーは出力名 (outputs のキーに対応) で、値はその出力のメタデータ ( is_streamstatus など) を含むオブジェクトです。

    RunTerminated イベント

    • 定義: RunTerminated イベントは、実行の終了を示します。 通常、実行の SSE ストリームの最後のイベントとして送信されます。

    • ペイロード例:

      data: {"event": "RunTerminated", "run_id": "8f92b1a6-4d69-422a-a080-50713e488b56", "timestamp": "2025-04-25T08:57:15.212791Z", "flow_run_info": {"run_id": "8f92b1a6-4d69-422a-a080-50713e488b56", "status": "Completed", "error": null, "otel_trace_id": "0x00000000000000000000000000000000"}}
    • フィールドの説明:

      フィールド名

      タイプ

      説明

      event

      string

      イベントタイプ。RunTerminate に固定。

      run_id

      string

      現在の実行の一意の識別子。

      timestamp

      string

      発生のタイムスタンプ。ISO 8601 標準に準拠。

      flow_run_info

      object

      実行全体に関する最終的なステータス情報が含まれています。

      ∟ run_id

      string

      (flow_run_info 内) 実行の一意の識別子 (外側の run_id と同じ)。

      ∟ status

      string

      (flow_run_info 内) 実行の最終ステータス。Completed、Failed、Canceled など。

      ∟ error

      object または null

      (flow_run_info 内) 実行が失敗した場合、エラーメッセージオブジェクトが含まれます。それ以外の場合は null

      ∟ otel_trace_id

      string

      (flow_run_info 内) この実行に関連付けられた OpenTelemetry トレース ID (空またはゼロ値の場合があります)。

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。<Endpoint>手順 1 で取得したエンドポイントに置き換えます。

--header "Authorization: Bearer $DASHSCOPE_API_KEY"

HTTP ヘッダー。$DASHSCOPE_API_KEY手順 1 で取得したトークンに置き換えます。

"model": "default"

モデル名。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 との統合を示します。

  1. Chatbox をダウンロードしてインストールします。

  2. ChatBox を開き、次のように モデルプロバイダー名 (LangStudio など) を構成します。

    image

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

    image

    次の表に、主要なパラメーターを示します。

    パラメーター

    説明

    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] を入力します。

  4. チャットダイアログボックスでデプロイされたサービスを呼び出します。

    image

トレースレコードの表示

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

image

トレースデータを使用すると、アプリケーションフロー内の各ノードの入出力情報 (ベクターデータベースのリコール結果や 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。 サービスリクエストごとに、システムはセッションに一意の識別子を自動的に割り当てて異なるセッションを区別し、レスポンスヘッダーの Chat-Session-Id フィールドを介して返します。

カスタムセッション ID がサポートされています。 一意性を確保するために、セッション ID は 32 ~ 255 文字の長さで、文字、数字、アンダースコア (_)、ハイフン (-)、コロン (:) を含めることができます。

Chat-User-Id

String

ユーザー ID。チャットが属するユーザーを識別します。 システムはユーザー ID を自動的に割り当てません。 カスタムユーザー ID がサポートされています。

-

チャット履歴 API

アプリケーションフローサービスは、チャット履歴データ管理 API 操作も提供しており、これらのデータを簡単に表示および削除できます。 {Endpoint}/openapi.json に GET リクエストを送信することで、完全な API スキーマを取得できます。 このスキーマは Swagger 標準に基づいて構築されています。 これらの API 操作をより直感的に理解し、探索するために、Swagger UI を使用して可視化操作を実行することをお勧めします。これにより、操作がよりシンプルで明確になります。