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

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

最終更新日:Aug 22, 2026

アプリケーションフローを開発した後、Elastic Algorithm Service (EAS) サービスとしてデプロイできます。EAS は、自動スケーリングや包括的なサービス監視などの機能を提供します。これらの機能により、アプリケーションはビジネスの変化に適応し、システムの安定性とパフォーマンスを向上させ、本番環境の要求を満たすことができます。

前提条件

アプリケーションフローが作成され、デバッグ済みです。詳細については、「アプリケーションフローの開発」をご参照ください。

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

LangStudio に移動し、ワークスペースを選択します。[アプリケーションフロー] タブで、デバッグ済みのアプリケーションフローをクリックし、右上隅の [デプロイ] をクリックします。ランタイムが起動している場合にのみ、アプリケーションフローをデプロイできます。次の表に、主要なパラメーターを示します。

image

パラメーター

説明

リソースのデプロイ

リソースタイプ

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

インスタンス

サービスインスタンスの数を設定します。本番環境では、単一障害点のリスクを軽減するために、複数のサービスインスタンスを設定してください。

デプロイリソース

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

image

API コール

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

    image

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

    サービスは基本モードまたは完全モードで呼び出せます。次の表に相違点を示します。

    プロパティ

    基本モード

    完全モード

    リクエストパス

    <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>"

    リクエストヘッダーです。 <your_token> は、手順 1 で取得したトークンに置き換えてください。

    -H "Accept: text/event-stream"

    クライアントがサーバーセントイベント (SSE) リクエストを受け入れ、レスポンスが ストリーム であることを示します。注:ストリーミング呼び出しは、LLM ノードがアプリケーションフローの出力ノードである場合にのみサポートされます。エンドノードへの入力は、LLM ノードから直接行う必要があります。

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

    リクエストボディは、質問文字列であるキーと値のペアを含む JSON オブジェクトです。キーは、アプリケーションフローの開始ノードにある "Conversation Input" パラメーターと一致する必要があります。このトピックでは、デフォルトのフィールド 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("Request successful. Response:")
        print(response.text)
    else:
        print(f"Request failed. Status code: {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

    リクエストヘッダーです。 <your-token-here> は、手順 1 で取得したトークンに置き換えてください。

    data

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

    "Accept": "text/event-stream"

    クライアントが SSE リクエストを受け入れ、レスポンスが ストリーム であることを示します。注:ストリーミング呼び出しは、LLM ノードがアプリケーションフローの出力ノードである場合にのみサポートされます。エンドノードへの入力は、LLM ノードから直接行う必要があります。

    完全モード

    LangStudio はサーバーセントイベント (SSE) をサポートしています。リクエストを送信すると、サービスはアプリケーションフローの実行中に各ノードのステータス、エラーメッセージ、出力メッセージを出力できます。また、イベント内の node_run_infos のコンテンツをカスタマイズすることもできます。このセクションでは、オンラインデバッグを例に説明します。エンドポイントに /run を追加してから、リクエストボディを編集する必要があります:

    image

    次の表に、リクエストボディ内のフィールドを示します。

    フィールド

    タイプ

    デフォルト値

    説明

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

    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 or null

      (flow_run_info 内) フローの実行が失敗した場合、このフィールドにはエラーメッセージオブジェクトが格納されます。それ以外の場合、値は null です。

      ∟ otel_trace_id

      string

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

    NodeUpdated イベント

    • 定義: NodeUpdated イベントは、フロー内の 1 つ以上のノードのステータスまたは出力が変更されたことを示します。フローの実行中、このイベントは通常、ノードが実行を開始した (Running) とき、または実行を完了した (Completed または Failed) ときに送信されます。response_config が設定されている場合、このイベントにはノードの説明、表示名、出力を含めることもできます。注意: exclude_nodes をリクエストの response_config で指定した場合、指定されたノードの 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 or null

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

      ∟ duration

      float

      (node_run_infos 内) ノード実行にかかった時間です。単位は秒です。ステータスが Running の場合、値は通常 0.0 です。

      ∟ description

      string or null

      (node_run_infos 内) ノードの説明。このフィールドは、リクエストの response_config.include_node_description が true に設定されている場合にのみ含まれます。それ以外の場合、値は null になります。

      ∟ display_name

      string or null

      (node_run_infos 内) ノードの表示名です。このフィールドは、リクエストで response_config.include_node_display_name が true に設定されている場合にのみ含まれます。それ以外の場合、値は null です。

      ∟ output

      object or null

      (node_run_infos 内) ノードの出力データです。このフィールドは、ノードのステータスが [完了] で、かつリクエストで response_config.include_node_output が true に設定されている場合にのみ含まれます。それ以外の場合、値は 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_stream や status などの出力メタデータを含むオブジェクトです。

    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

      イベントタイプです。値は RunTerminated に固定されています。

      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 or 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> は、APIコールの手順1で取得したエンドポイントに置き換えてください。

--header "Authorization: Bearer $DASHSCOPE_API_KEY"

リクエストヘッダー です。$DASHSCOPE_API_KEY は、APIコールの手順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 などの [Model Provider Name] を設定します。

    image

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

    image

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

    パラメーター

    説明

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

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

    image

トレースの表示

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

image

トレースデータでは、ベクトルデータベースからの取得結果や 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 は、レスポンスヘッダーの Chat-Session-Id フィールドで返されます。

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

Chat-User-Id

String

ユーザー ID です。チャットが属するユーザーを識別します。システムはユーザー ID を自動的に割り当てません。カスタムのユーザー ID を使用できます。

-

チャット履歴 API

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