Todos os produtos
Search
Central de documentação

Platform For AI:Implantar um fluxo de aplicação

Última atualização: Aug 21, 2026

Após desenvolver um fluxo de aplicação, implante-o como um service do Elastic Algorithm Service (EAS). O EAS oferece recursos como dimensionamento automático e monitoramento abrangente de services. Esses recursos ajudam sua aplicação a se adaptar a mudanças nos negócios, melhoram a estabilidade e o desempenho do sistema e atendem às demandas de um ambiente de produção.

Pré-requisitos

Crie e depure um fluxo de aplicação. Para mais informações, consulte Develop an application flow.

Implantar um fluxo de aplicação

Acesse o LangStudio e selecione um workspace. Na aba Application Flow, clique no fluxo de aplicação depurado e, em seguida, clique em Deploy no canto superior direito. A implantação do fluxo de aplicação só é possível se o runtime estiver iniciado. A tabela a seguir descreve os principais parâmetros.

image

Parâmetro

Descrição

Implantação de recursos

Tipo de recurso

Selecione um public resource group ou um dedicated resource group criado anteriormente.

Instâncias

Configure o número de instâncias de service. Em ambientes de produção, configure múltiplas instâncias de service para reduzir o risco de ponto único de falha.

Recursos de implantação

Se o fluxo de aplicação for usado apenas para agendamento de fluxo de negócios, selecione recursos de CPU adequados à complexidade do fluxo. Recursos de CPU geralmente são mais econômicos que recursos de gpu. Após a implantação, haverá cobrança de taxa de recursos do EAS. Para mais informações sobre faturamento, consulte Billing of Elastic Algorithm Service (EAS).

Virtual Private Cloud (VPC): O fluxo de aplicação é implantado como um service do EAS. Para garantir que os clientes acessem o service online do EAS após a implantação, selecione uma VPC para conectar o cliente ao service. Os services do EAS não acessam a rede pública por padrão. Caso seu service do EAS precise acessar a rede pública, configure uma VPC com capacidade de acesso à rede pública. Para mais informações, consulte Access public or private resources from EAS.

Nota

Se o fluxo de aplicação incluir uma conexão com banco de dados vetorial, como Milvus, garanta que a VPC configurada seja a mesma da instância do banco de dados vetorial ou assegure que as duas redes estejam conectadas.

Histórico de chat

Ativar histórico de chat

Este parâmetro aplica-se apenas a fluxos de aplicação baseados em chat. Quando ativado, o service armazena e transmite o histórico de conversas de múltiplas rodadas. Use esse recurso em conjunto com o parâmetro de cabeçalho da requisição do service.

Armazenamento do histórico de chat

O armazenamento local não suporta implantação com múltiplas instâncias. Se você implantar o service para uso em produção, utilize armazenamento externo, como o apsaradb rds. Para mais informações, consulte Appendix: Chat history.

Importante

O armazenamento local não suporta implantação com múltiplas instâncias nem dimensionamento horizontal de uma única instância para múltiplas instâncias. Caso contrário, o recurso de histórico de chat pode não funcionar corretamente.

Tracing Analysis: Quando ativado, permite view trace details após a implantação do service para avaliar o desempenho do fluxo de aplicação.

Funções e permissões: No fluxo de aplicação, se você utilizar um banco de dados vetorial Faiss (é necessário selecionar um banco de dados vetorial Faiss ou Milvus para knowledge base management) ou o componente "Alibaba Cloud IQS-Standard Search" (usado pelo modelo IQS Web Search Chat Assistant), selecione uma função conforme necessário.

Para mais informações sobre as configurações de parâmetros, consulte Custom deployment.

Depuração online

Chamar o service

Depuração online

Após a implantação bem-sucedida do service, você será redirecionado para o console do PAI-EAS. Na aba Online Debugging, configure e envie uma requisição. A chave no corpo da requisição deve ser igual ao valor do parâmetro "Conversation Input" no nó Start do fluxo de aplicação. Este tópico utiliza o campo padrão question.

image

Chamadas de API

  1. Na aba Overview, obtenha o endpoint e o token do service.

    image

  2. Envie uma requisição de API.

    É possível chamar o service no modo básico ou completo. A tabela a seguir descreve as diferenças.

    Propriedade

    Modo básico

    Modo completo

    Caminho da requisição

    <Endpoint>/

    <Endpoint>/run

    Descrição

    Retorna diretamente a saída do fluxo de aplicação.

    Retorna uma estrutura complexa que inclui o status dos nós, mensagens de erro e mensagens de saída do fluxo de aplicação.

    Cenários

    • Indicado quando você precisa apenas da saída final do fluxo de aplicação e não se importa com o processamento interno ou status.

    • Ideal para consultas ou operações simples visando obter resultados rapidamente.

    • Recomendado quando é necessário entender detalhadamente o processo de execução do fluxo de aplicação, incluindo o status de cada nó e possíveis mensagens de erro.

    • Adequado para depuração, monitoramento ou análise da execução do fluxo de aplicação.

    Vantagens

    Simples de usar, sem necessidade de analisar estruturas complexas.

    • Fornece informações abrangentes para ajudar a compreender profundamente o processo de execução do fluxo de aplicação.

    • Facilita a solução de problemas e a otimização do desempenho do fluxo de aplicação.

    Modo básico

    Comando cURL

    Os services de fluxo de aplicação implantados no EAS suportam chamadas com streaming e sem streaming usando comandos curl. Veja a seguir exemplos de requisição e resposta:

    Tipo de exemplo

    Streaming

    Sem streaming

    Exemplo de requisição

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

    Exemplo de resposta

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

    A tabela a seguir descreve os parâmetros da requisição.

    Parâmetro

    Descrição

    -H "Authorization: Bearer <your_token>"

    Cabeçalho da requisição. Substitua <your_token> pelo token obtido na Etapa 1.

    -H "Accept: text/event-stream"

    Indica que o cliente aceita requisições Server-Sent Events (SSE) e que a resposta é um stream. Observação: Chamadas com streaming são suportadas apenas quando um nó LLM é o nó de saída do fluxo de aplicação. A entrada direta para o nó final deve ser um nó LLM.

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

    Corpo da requisição. É um objeto JSON contendo um par chave-valor correspondente à string da pergunta. A chave deve corresponder ao parâmetro "Conversation Input" no nó Start do fluxo de aplicação. Este tópico usa o campo padrão question.

    "<your_endpoint>"

    URL de destino da requisição. Substitua <your_endpoint> pelo endpoint obtido na Etapa 1.

    Script Python

    O exemplo a seguir mostra como usar a biblioteca requests para enviar uma requisição POST ao service de fluxo de aplicação. A requisição pode ser com streaming ou sem streaming. Certifique-se de que a biblioteca esteja instalada. Caso contrário, execute o comando pip install requests para instalá-la.

    Tipo de exemplo

    Streaming

    Sem streaming

    Exemplo de requisição

    import requests
    import json
    
    url = "http://<your-endpoint-here>"
    token = "<your-token-here>"
    data = {"question": "Where is the capital of France?"}
    
    # Set the request header, including your token.
    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?"}
    
        # Set the request header, including your token.
        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}")
        

    Exemplo de resposta

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

    A tabela a seguir descreve os parâmetros da requisição.

    Parâmetro

    Descrição

    url

    URL de destino da requisição. Substitua <your-endpoint-here> pelo endpoint obtido na Etapa 1.

    token

    Cabeçalho da requisição. Substitua <your-token-here> pelo token obtido na Etapa 1.

    data

    Corpo da requisição. É um objeto JSON contendo um par chave-valor correspondente à string da pergunta. A chave deve corresponder ao parâmetro "Conversation Input" no nó Start do fluxo de aplicação. Este tópico usa o campo padrão question.

    "Accept": "text/event-stream"

    Indica que o cliente aceita requisições SSE e que a resposta é um stream. Observação: Chamadas com streaming são suportadas apenas quando um nó LLM é o nó de saída do fluxo de aplicação. A entrada direta para o nó final deve ser um nó LLM.

    Modo completo

    O LangStudio suporta Server-Sent Events (SSE). Ao enviar uma requisição, o service pode gerar o status de cada nó, mensagens de erro e mensagens de saída durante a execução do fluxo de aplicação. Também é possível personalizar o conteúdo de node_run_infos nos eventos. Esta seção usa a depuração online como exemplo. Adicione /run ao final do endpoint e edite o corpo da requisição:

    image

    A tabela a seguir descreve os campos no corpo da requisição.

    Campo

    Tipo

    Valor padrão

    Descrição

    inputs

    Mapping[str, Any]

    None

    Dicionário de dados de entrada para o fluxo. As chaves devem corresponder aos nomes dos campos de entrada definidos no fluxo. Se o fluxo não tiver entradas, ignore este campo.

    stream

    bool

    True

    Controla o formato da resposta. Valores válidos:

    • True: Responde com um stream SSE. O Content-Type no cabeçalho da resposta é text/event-stream. Os dados são retornados no formato DataOnly e divididos em diferentes eventos: RunStarted, NodeUpdated, RunOutput e RunTerminated. Para mais informações, consulte as seções a seguir.

    • False: Responde com um único objeto JSON. O Content-Type no cabeçalho da resposta é application/json. Para mais informações, consulte a resposta em Online debugging.

    response_config

    Dict[str, Any]

    -

    Controla os detalhes dos nós incluídos na resposta com streaming quando stream está definido como True.

    ∟ include_node_description

    bool

    False

    (Em response_config) Especifica se as descrições dos nós devem ser incluídas no stream de eventos SSE.

    ∟ include_node_display_name

    bool

    False

    (Em response_config) Especifica se os nomes de exibição dos nós devem ser incluídos no stream de eventos SSE.

    ∟ include_node_output

    bool

    False

    (Em response_config) Especifica se as saídas dos nós devem ser incluídas no stream de eventos SSE.

    ∟ exclude_nodes

    List[str]

    []

    (Em response_config) Lista de nomes de nós a serem excluídos do stream de eventos SSE.

    Os dados retornados são divididos em diferentes eventos: RunStarted, NodeUpdated, RunOutput e RunTerminated.

    Evento RunStarted

    • Definição: O evento RunStarted marca o início da execução de um fluxo. Geralmente, é o primeiro evento enviado no stream SSE de uma execução.

    • Exemplo de payload:

      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": ""}}
    • Descrição dos campos:

      Campo

      Tipo

      Descrição

      event

      string

      Tipo de evento. O valor é fixo como RunStarted.

      run_id

      string

      Identificador exclusivo da execução atual do fluxo.

      timestamp

      string

      Timestamp do evento, no formato ISO 8601.

      flow_run_info

      object

      Contém as informações de status final de toda a execução do fluxo.

      ∟ run_id

      string

      (Em flow_run_info) Identificador exclusivo da execução do fluxo. É o mesmo que o run_id externo.

      ∟ status

      string

      (Em flow_run_info) Status inicial da execução do fluxo. O valor é fixo como Running.

      ∟ error

      object or null

      (Em flow_run_info) Se a execução do fluxo falhar, este campo contém um objeto de mensagem de erro. Caso contrário, o valor é null.

      ∟ otel_trace_id

      string

      (Em flow_run_info) ID de rastreamento OpenTelemetry associado a esta execução de fluxo. O valor pode estar vazio ou ser zero.

    Evento NodeUpdated

    • Definição: O evento NodeUpdated indica que o status ou a saída de um ou mais nós no fluxo foi alterado. Durante a execução de um fluxo, esse evento é normalmente enviado quando um nó começa a executar (Running) ou conclui a execução (Completed ou Failed). Se response_config estiver definido, este evento também pode incluir a descrição do nó, o nome de exibição e a saída. Observação: Se você especificar exclude_nodes no response_config da requisição, os eventos NodeUpdated para os nós especificados não serão retornados.

    • Exemplo de payload:

      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}}]}
    • Descrição dos campos:

      Campo

      Tipo

      Descrição

      event

      string

      Tipo de evento. O valor é fixo como NodeUpdated.

      run_id

      string

      Identificador exclusivo da execução atual do fluxo.

      timestamp

      string

      Timestamp do evento, no formato ISO 8601.

      node_run_infos

      array[object]

      Array que contém um ou mais objetos de informações de execução de nó. Cada objeto representa um nó cujo status ou saída foi alterado.

      ∟ node_name

      string

      (Em node_run_infos) Nome do nó. Este é um campo legado e equivale ao campo node.

      ∟ node

      string

      (Em node_run_infos) Nome do nó.

      ∟ status

      string

      (Em node_run_infos) Status atual do nó, como Running, Completed ou Failed.

      ∟ error

      object or null

      (Em node_run_infos) Se a execução do nó falhar, este campo contém um objeto de mensagem de erro. Caso contrário, o valor é null.

      ∟ duration

      float

      (Em node_run_infos) Tempo gasto na execução do nó, em segundos. Para o status Running, o valor é tipicamente 0.0.

      ∟ description

      string or null

      (Em node_run_infos) Descrição do nó. Este campo é incluído apenas quando response_config.include_node_description está definido como true na requisição. Caso contrário, o valor é null.

      ∟ display_name

      string or null

      (Em node_run_infos) Nome de exibição do nó. Este campo é incluído apenas quando response_config.include_node_display_name está definido como true na requisição. Caso contrário, o valor é null.

      ∟ output

      object or null

      (Em node_run_infos) Dados de saída do nó. Este campo é incluído apenas quando o status do nó é Completed e response_config.include_node_output está definido como true na requisição. Caso contrário, o valor é null.

    Evento RunOutput

    • Definição: O evento RunOutput indica que a execução do fluxo gerou sua saída final. Ele ocorre tipicamente antes do evento RunTerminated, no final da execução do fluxo.

    • Exemplo de payload:

      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"}}}
    • Descrição dos campos:

      Campo

      Tipo

      Descrição

      event

      string

      Tipo de evento. O valor é fixo como RunOutput.

      run_id

      string

      Identificador exclusivo da execução atual do fluxo.

      timestamp

      string

      Timestamp do evento, no formato ISO 8601.

      outputs

      object

      Dicionário que contém a saída final do fluxo. A estrutura depende das saídas definidas no design do fluxo.

      output_metadata

      object

      Dicionário que contém os metadados de saída do fluxo. As chaves são os nomes das saídas, correspondendo às chaves em outputs. Os valores são objetos que contêm os metadados da saída, como is_stream e status.

    Evento RunTerminated

    • Definição: O evento RunTerminated marca o fim da execução de um fluxo. Geralmente, é o último evento enviado no stream SSE de uma execução.

    • Exemplo de payload:

      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"}}
    • Descrição dos campos:

      Nome do campo

      Tipo

      Descrição

      event

      string

      Tipo de evento definido como RunTerminate.

      run_id

      string

      Identificador exclusivo da execução atual do fluxo.

      timestamp

      string

      Timestamp do evento, no formato ISO 8601.

      flow_run_info

      object

      Contém as informações de status final de toda a execução do fluxo.

      ∟ run_id

      string

      (Em flow_run_info) Identificador exclusivo da execução do fluxo. É o mesmo que o run_id externo.

      ∟ status

      string

      (Em flow_run_info) Status final da execução do fluxo, como Completed, Failed ou Canceled.

      ∟ error

      object or null

      (Em flow_run_info) Se a execução do fluxo falhar, este campo contém um objeto de mensagem de erro. Caso contrário, o valor é null.

      ∟ otel_trace_id

      string

      (Em flow_run_info) ID de rastreamento OpenTelemetry associado a esta execução de fluxo. O valor pode estar vazio ou ser zero.

Chamadas compatíveis com OpenAI

Um fluxo de aplicação de chat implantado, ou ChatFlow, suporta chamadas compatíveis com OpenAI. Outros clientes que suportam OpenAI também podem utilizar o service.

Usando a API OpenAI

Esta seção fornece um exemplo de chamada com streaming usando um comando curl. Veja a seguir exemplos de requisição e resposta:

Exemplo de requisição:

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
}'

A tabela a seguir descreve os parâmetros da requisição.

Parâmetro

Descrição

--location '<Endpoint>/v1/chat/completions'

URL de destino da requisição. Substitua <Endpoint> pelo endpoint obtido na Etapa 1 das chamadas de API.

--header "Authorization: Bearer $DASHSCOPE_API_KEY"

Cabeçalho da requisição. Substitua $DASHSCOPE_API_KEY pelo token obtido na Etapa 1 das chamadas de API.

"model": "default"

Nome do modelo. O valor é fixo como default.

"stream":true

Especifica se a resposta é um stream. Observação: Chamadas com streaming são suportadas apenas quando um nó LLM é o nó de saída do fluxo de aplicação. A entrada direta para o nó final deve ser um nó LLM.

Exemplo de resposta:

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]

Integração com outras aplicações cliente

Esta seção utiliza a aplicação ChatBox v1.13.4 na plataforma Windows como exemplo.

  1. Baixe e instale o Chatbox.

  2. Abra o ChatBox e configure o Model Provider Name, como LangStudio.

    image

  3. Selecione o provedor de modelo configurado e defina os parâmetros de requisição do service.

    image

    A tabela a seguir descreve os principais parâmetros.

    Parâmetro

    Descrição

    API Mode

    O valor é fixo como OpenAI API Compatible.

    API Key

    Token do service LangStudio implantado. Para mais informações sobre como obter o token, consulte a Etapa 1 das chamadas de API.

    API Host

    Endpoint do service LangStudio implantado. Para mais informações sobre como obter o endpoint, consulte a Etapa 1 das chamadas de API. Adicione o sufixo /v1 ao final do endpoint. Este tópico usa um endpoint de Internet como exemplo. O host da API é definido como http://langstudio-20250319153409-xdcp.115770327099****.cn-hangzhou.pai-eas.aliyuncs.com/v1.

    API Path

    O valor é fixo como /chat/completions.

    Model

    Clique em New e insira um model ID personalizado, como qwen3-8b.

  4. Chame o service LangStudio implantado na caixa de diálogo de chat.

    image

Visualizar rastreamentos

Após chamar o service, um rastreamento é gerado automaticamente. Na aba Tracing Analysis, localize o rastreamento desejado e clique em View Trace na coluna Actions para avaliar o desempenho do fluxo de aplicação.

image

Os dados de rastreamento permitem visualizar a entrada e a saída de cada nó no fluxo de aplicação, como os resultados de recuperação do banco de dados vetorial ou a entrada e saída do nó LLM.

Apêndice: Histórico de chat

Para fluxos de aplicação baseados em chat, o LangStudio fornece um recurso para armazenar o histórico de conversas de múltiplas rodadas. Você pode usar armazenamento local ou externo para salvar o histórico de chat.

Tipos de armazenamento

  • Armazenamento local: O service usa o disco local para criar automaticamente um banco de dados SQLite chamado chat_history.db na instância do EAS onde o fluxo de aplicação está implantado. Esse banco de dados salva o histórico de chat. O caminho de armazenamento padrão é /langstudio/flow/. Observação: O armazenamento local não suporta implantação com múltiplas instâncias. Verifique regularmente o uso do disco local. Também é possível usar as operações de API fornecidas para consultar e excluir dados do histórico de chat. Se a instância do EAS for removida, o histórico de chat relacionado também será excluído.

  • Armazenamento externo: O apsaradb rds for MySQL é suportado. Ao implantar o service, configure uma conexão com uma instância do apsaradb rds for MySQL para armazenar o histórico de chat. Para mais informações sobre a configuração, consulte Database connection configuration. O service cria automaticamente tabelas com o nome do service como sufixo no banco de dados apsaradb rds for MySQL configurado. Por exemplo, a tabela langstudio_chat_session_<service_name> armazena sessões de chat, e a tabela langstudio_chat_history_<service_name> armazena mensagens do histórico de chat.

Suporte a sessão e usuário

Cada requisição de chat para o service de fluxo de aplicação é stateless. Se você quiser que múltiplas requisições sejam tratadas como a mesma conversa, configure manualmente o cabeçalho da requisição. Para mais informações sobre como fazer chamadas de API, consulte API calls.

Cabeçalho da requisição

Tipo de dado

Descrição

Observações

Chat-Session-Id

String

ID da sessão. Para cada requisição de service, o sistema atribui automaticamente um identificador exclusivo à sessão para distingui-la de outras sessões. O ID é retornado no campo Chat-Session-Id do cabeçalho da resposta.

É possível usar um ID de sessão personalizado. Para garantir unicidade, o ID da sessão deve ter entre 32 e 255 caracteres e pode conter letras maiúsculas, letras minúsculas, dígitos, sublinhados (_), hífens (-) e dois pontos (:).

Chat-User-Id

String

ID do usuário. Identifica o usuário ao qual o chat pertence. O sistema não atribui automaticamente um ID de usuário. É possível usar um ID de usuário personalizado.

-

API de histórico de chat

O service de fluxo de aplicação também fornece operações de API para gerenciar dados do histórico de chat. Use essas operações de API para visualizar e excluir os dados. Para obter o esquema completo da API, envie uma requisição GET para {Endpoint}/openapi.json. O esquema baseia-se no padrão Swagger. Para melhor compreensão e exploração dessas operações de API, utilize o Swagger UI para visualização. Isso simplifica as operações e melhora a clareza.