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.

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.

Chamadas de API
-
Na aba Overview, obtenha o endpoint e o token do service.

-
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>/runDescriçã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
Script Python
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_infosnos eventos. Esta seção usa a depuração online como exemplo. Adicione/runao final do endpoint e edite o corpo da requisição:
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.
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 |
|
--header "Authorization: Bearer $DASHSCOPE_API_KEY" |
Cabeçalho da requisição. Substitua |
|
"model": "default" |
Nome do modelo. O valor é fixo como |
|
"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.
Baixe e instale o Chatbox.
-
Abra o ChatBox e configure o Model Provider Name, como LangStudio.

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

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
/v1ao final do endpoint. Este tópico usa um endpoint de Internet como exemplo. O host da API é definido comohttp://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.
-
Chame o service LangStudio implantado na caixa de diálogo de chat.

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.

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 tabelalangstudio_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 |
É 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.