O PAI-EAS oferece uma solução completa para implantar modelos de linguagem grande (LLMs) populares, como DeepSeek e Qwen, com um único clique. Isso simplifica tarefas complexas, como configuração de ambiente, ajuste de desempenho e gerenciamento de custos.
Início rápido: Implante um modelo de código aberto
Este exemplo demonstra como implantar o modelo de código aberto Qwen3-8B. O mesmo processo se aplica a outros modelos suportados.
Etapa 1: Crie um service
Faça login no PAI console. Selecione uma região na parte superior da página. Em seguida, escolha o workspace desejado e clique em Elastic Algorithm Service (EAS).
Clique em Deploy Service. Na área Scenario-based Model Deployment, clique em LLM Deployment.
-
Configure os seguintes parâmetros principais:
Parâmetro
Valor
Model Settings
Selecione Public Model, pesquise e selecione Qwen3-8B.
Inference Engine
Escolha vLLM (Recomendado, compatível com a API OpenAI).
Deployment Template
Defina como Single-Node. O sistema preenche automaticamente os parâmetros recomendados, como tipo de instância e imagem, com base no modelo.
-
Clique em Deploy. A implantação do service leva cerca de 5 minutos. Quando o status do service mudar para Running, a implantação foi concluída com sucesso.
NotaSe a implantação do service falhar, consulte Service deployment and status issues para solucionar o problema.
Etapa 2: Verifique o service
Após a implantação, utilize a depuração online para confirmar se o service está funcionando corretamente.
Clique no nome do service para abrir sua página de detalhes e alterne para a aba Online Debugging.
-
Defina os seguintes parâmetros de requisição:
Parâmetro
Valor
Método de requisição
POST
Caminho da URL
Insira o caminho completo da URL no formato
/api/predict/{service_name}/v1/chat/completions, onde{service_name}é o nome do seu service implantado. Exemplo:/api/predict/llm_qwen3_8b_test/v1/chat/completions.Body
{ "model": "Qwen3-8B", "messages": [ {"role": "user", "content": "Hello!"} ], "max_tokens": 1024 }Headers
Garanta que a requisição inclua
Content-Type: application/json. Clique em Send Request. Você deve receber uma resposta contendo a resposta do modelo.
Se a requisição retornar um código de status 200 e uma resposta JSON do tipo chat.completion, o service está implantado e operando corretamente. O corpo da resposta contém a resposta do modelo no campo content.
Chame a API
Antes de chamar o service, acesse a aba View Endpoint Information na página de detalhes do service para obter o endpoint e o token.
Os exemplos a seguir mostram como chamar a API do service:
cURL
curl -X POST <EAS_ENDPOINT>/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: <EAS_TOKEN>" \
-d '{
"model": "<model_name>",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "hello"
}
],
"max_tokens":1024,
"temperature": 0.7,
"top_p": 0.8,
"stream":true
}'
No código acima, substitua os seguintes parâmetros:
Substitua
<EAS_ENDPOINT>e<EAS_TOKEN>pelo endpoint e token do seu service implantado.-
Troque
<model_name>pelo nome do modelo. Para vLLM ou SGLang, obtenha o nome do modelo por meio da API de lista de modelos em<EAS_ENDPOINT>/v1/models.curl -X GET <EAS_ENDPOINT>/v1/models -H "Authorization: <EAS_TOKEN>"
OpenAI SDK
Recomendamos o uso do SDK oficial para Python na interação com o service. Certifique-se de ter instalado o OpenAI SDK: pip install openai.
from openai import OpenAI
# 1. Configure the client.
# Replace <EAS_TOKEN> with the token of your deployed service.
openai_api_key = "<EAS_TOKEN>"
# Replace <EAS_ENDPOINT> with the endpoint of your deployed service.
openai_api_base = "<EAS_ENDPOINT>/v1"
client = OpenAI(
api_key=openai_api_key,
base_url=openai_api_base,
)
# 2. Get the model name.
# For BladeLLM, set model = "". BladeLLM does not require a model parameter
# and does not support getting the model name by using client.models.list().
# Set it to an empty string to meet the mandatory parameter requirement of the OpenAI SDK.
models = client.models.list()
model = models.data[0].id
print(model)
# 3. Send a chat request.
# Both streaming (stream=True) and non-streaming (stream=False) outputs are supported.
stream = True
chat_completion = client.chat.completions.create(
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "hello"},
],
model=model,
top_p=0.8,
temperature=0.7,
max_tokens=1024,
stream=stream,
)
if stream:
for chunk in chat_completion:
print(chunk.choices[0].delta.content, end="")
else:
result = chat_completion.choices[0].message.content
print(result)
Python requests
Caso prefira não adicionar uma dependência ao OpenAI SDK, utilize a biblioteca requests.
import json
import requests
# Replace <EAS_ENDPOINT> with the endpoint of your deployed service.
EAS_ENDPOINT = "<EAS_ENDPOINT>"
# Replace <EAS_TOKEN> with the token of your deployed service.
EAS_TOKEN = "<EAS_TOKEN>"
# Replace <model_name> with the model name. You can get it from the <EAS_ENDPOINT>/v1/models API.
# For BladeLLM, this API is not supported. You can omit the "model" field or set it to "".
model = "<model_name>"
url = f"{EAS_ENDPOINT}/v1/chat/completions"
headers = {
"Content-Type": "application/json",
"Authorization": EAS_TOKEN,
}
stream = True
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "hello"},
]
req = {
"messages": messages,
"stream": stream,
"temperature": 0.7,
"top_p": 0.8,
"max_tokens": 1024,
"model": model,
}
response = requests.post(
url,
json=req,
headers=headers,
stream=stream,
)
if stream:
for chunk in response.iter_lines(chunk_size=8192, decode_unicode=False):
msg = chunk.decode("utf-8")
# The following code processes Server-Sent Events (SSE) formatted streaming responses.
if msg.startswith("data:"):
info = msg[6:]
if info == "[DONE]":
break
else:
resp = json.loads(info)
if resp["choices"][0]["delta"].get("content") is not None:
print(resp["choices"][0]["delta"]["content"], end="", flush=True)
else:
resp = json.loads(response.text)
print(resp["choices"][0]["message"]["content"])
Crie uma web UI local
O Gradio é uma biblioteca de UI para Python que ajuda a construir rapidamente interfaces interativas para modelos. Siga estas etapas para executar uma web UI do Gradio localmente.
-
Baixe o código
-
Prepare o ambiente
É necessário Python 3.10 ou superior. Instale as dependências executando
pip install openai gradio. -
Inicie a aplicação web
No terminal, execute o comando abaixo. Substitua
<EAS_ENDPOINT>e<EAS_TOKEN>pelo endpoint e token do service implantado.python webui_client.py --eas_endpoint "<EAS_ENDPOINT>" --eas_token "<EAS_TOKEN>" Após a inicialização bem-sucedida, uma URL local será exibida (geralmente
http://127.0.0.1:7860). Abra essa URL em um navegador para acessá-la.
Integre com aplicações de terceiros
É possível integrar um service do PAI-EAS a diversos clientes e ferramentas de desenvolvimento compatíveis com a API OpenAI. As configurações essenciais são o endpoint e o token do service e o nome do modelo.
Dify
-
Instale o provedor de modelos compatível com a API OpenAI
Clique no seu avatar no canto superior direito e selecione Settings. No painel à esquerda, escolha Model Providers. Se OpenAI-API-compatible não estiver na Model List, localize-o na lista abaixo e clique em Install.
-
Adicione um modelo
Clique em Add Model no canto inferior direito do cartão OpenAI-API-compatible e configure os seguintes parâmetros:
Model type: Selecione LLM.
Model name: Para uma implantação vLLM, envie uma requisição GET para o endpoint
/v1/modelspara obter o nome. Neste exemplo, insira Qwen3-8B.API key: Insira o token do seu service PAI-EAS.
API endpoint URL: Insira o endpoint público do seu service PAI-EAS e adicione /v1 ao final.
-
Teste a integração
Na página principal do Dify, clique em Create Blank App, selecione o tipo Chatflow, insira um nome para a aplicação e outras informações, e então clique em Create.
Clique no nó LLM, selecione o modelo adicionado e defina o contexto e os prompts. Escolha Qwen3-8B CHAT na categoria OpenAI-API-compatible. No prompt SYSTEM, insira uma descrição de função e referencie a variável de contexto sys.query. Na área USER, adicione as variáveis sys.query e sys.files. Ajuste os parâmetros do modelo, como Max Tokens (o padrão é 512), Presence Penalty e Thinking Mode, conforme necessário.
-
Clique em Preview no canto superior direito e faça uma pergunta.
O bot processa a pergunta por meio do workflow e retorna uma resposta. O topo da área de conversa exibe um status de Deep thinking e o tempo decorrido.
Chatbox
Acesse o Chatbox para baixar e instalar o cliente para o seu dispositivo, ou clique em Launch Web App para usar a versão web. Este exemplo utiliza macOS M3.
Adicione um provedor de modelos. Clique em Settings, adicione um provedor de modelos, insira um nome como
paie selecione OpenAI API Compatible como modo de API.-
Selecione o provedor pai e configure os seguintes parâmetros:
API key: Insira o token do seu service PAI-EAS.
API host: Insira o endpoint público do seu service PAI-EAS e adicione /v1 ao final.
API path: Deixe este campo vazio.
Model: Clique em Get para adicionar o modelo. O mecanismo de inferência BladeLLM não suporta recuperação de modelos via API. Se estiver usando BladeLLM, adicione o modelo manualmente clicando em New.
-
Teste o chat. Clique em New Chat e selecione o service de modelo no canto inferior direito da caixa de entrada de texto.
O topo da interface de chat exibe o prompt do sistema, como
You are a helpful assistant.. Digite uma pergunta como "Who are you?" na caixa de texto e envie. A área de resposta do assistente mostra uma seção recolhida de Deep thinking com o tempo de raciocínio, seguida pela resposta do modelo.
Cherry Studio
-
Instale o cliente
Visite o Cherry Studio para baixar e instalar o cliente.
Você também pode baixá-lo em
https://github.com/CherryHQ/cherry-studio/releases. -
Configure o service de modelo
Clique no ícone de configurações no canto inferior esquerdo. Na seção Model Service, clique em Add. Em Provider name, insira um nome personalizado, como PAI, e defina o tipo de provedor como OpenAI. Clique em OK.
No campo API key, insira o token do seu service PAI-EAS. No campo API address, insira o endpoint público do seu service PAI-EAS.
Clique em Add e insira o nome do modelo no campo Model ID. Para implantações vLLM, obtenha o nome enviando uma requisição GET para a API
/v1/models. Por exemplo, insiraQwen3-8B. O nome diferencia maiúsculas de minúsculas. Para o API Address, insira a URL, mas omita o número da versão v1 no final. Se a URL terminar com o caractere#, o sistema força o uso do caminho/v1/chat/completions. Após a configuração, a seção Model identifica e lista automaticamente os modelos disponíveis, como Qwen3-8B.Clique em Test ao lado do campo de entrada API key para verificar a conectividade.
-
Teste rapidamente o modelo
Retorne à interface de chat, selecione o modelo na parte superior e inicie uma conversa.
Por exemplo, se você inserir Who are you? e o modelo Qwen3-8B responder com uma autoapresentação, isso indica que o modelo está implantado e funcionando corretamente.
LangChain
O LangChain é um framework Python comum para criar aplicações de LLM. Como um service do PAI-EAS é compatível com a API OpenAI, você pode chamar o service diretamente com langchain_openai.ChatOpenAI, por exemplo, para compor um modelo de prompt em uma cadeia.
-
Instale as dependências
pip install langchain langchain-openai -
Configure o modelo. Configure o
ChatOpenAIcom os seguintes parâmetros:base_url: Insira o endpoint público do seu service PAI-EAS e adicione /v1 ao final.
api_key: Insira o token do seu service PAI-EAS.
model: Insira o nome do modelo. Para uma implantação vLLM, envie uma requisição GET para o endpoint
/v1/modelspara obter o nome. Neste exemplo, insiraQwen3-8B.
from langchain_openai import ChatOpenAI llm = ChatOpenAI( base_url="<EAS_ENDPOINT>/v1", api_key="<EAS_TOKEN>", model="<model_name>" )ImportanteVocê deve adicionar
/v1aobase_url. Se você inserir o endpoint público do seu service PAI-EAS sem/v1, a chamada retornará 404. -
Invocação da cadeia. Componha o modelo com
ChatPromptTemplateusando o operador|:from langchain_core.prompts import ChatPromptTemplate prompt = ChatPromptTemplate.from_messages([ ("system", "You are a helpful assistant."), ("user", "{input}") ]) chain = prompt | llm response = chain.invoke({"input": "Who are you?"}) print(response.content)
Faturamento
Os custos incluem, mas não se limitam aos itens abaixo. Para mais informações, consulte Billing of PAI-EAS.
Taxas de computação: Representam o custo principal. Ao criar um service PAI-EAS, escolha recursos pay-as-you-go ou subscription conforme suas necessidades.
Taxas de armazenamento: Caso utilize um modelo personalizado, os arquivos do modelo ficam armazenados no Object Storage Service (OSS), o que gera taxas de armazenamento.
Uso em produção
Escolha o modelo certo
-
Defina o cenário da sua aplicação:
Conversa geral: Opte sempre por um modelo ajustado por instruções, e não por um modelo base, para garantir que o modelo compreenda e siga suas instruções.
Geração de código: Prefira modelos especializados em código, como a série
Qwen3-Coder, pois geralmente apresentam desempenho muito superior ao de modelos de uso geral em tarefas relacionadas a código.Tarefas específicas de domínio: Se sua tarefa for altamente especializada, como em finanças ou direito, considere buscar um modelo ajustado para esse domínio ou ajustar você mesmo um modelo de uso geral.
Equilibre desempenho e custo: Modelos maiores tendem a ser mais capazes, mas exigem mais recursos de computação e têm custos de inferência mais altos. Comece com um modelo menor, como um de 7B, para validação. Se o desempenho não atender às suas necessidades, teste um modelo maior.
Consulte benchmarks oficiais: Utilize rankings como OpenCompass e LMSys Chatbot Arena. Esses rankings avaliam modelos em múltiplas dimensões, incluindo raciocínio, codificação e matemática, oferecendo orientações valiosas para a seleção do modelo.
Escolha o mecanismo de inferência adequado
vLLM/SGLang: Sendo escolhas predominantes na comunidade de código aberto, oferecem amplo suporte a modelos, além de documentação e exemplos extensos da comunidade, facilitando a integração e a solução de problemas.
BladeLLM: Mecanismo de inferência desenvolvido pela equipe Alibaba Cloud PAI. É profundamente otimizado para modelos específicos, especialmente a série Qwen, podendo alcançar maior desempenho e menor uso de memória GPU.
Otimização de inferência
Deploy an LLM with intelligent routing: Distribui dinamicamente as requisições com base em métricas em tempo real, como throughput de tokens e uso de memória GPU. Essa abordagem equilibra o poder de computação e a alocação de memória entre as instâncias de inferência, sendo adequada para implantações com múltiplas instâncias e cargas de requisição distribuídas de forma desigual. Isso melhora a utilização dos recursos do cluster e a estabilidade do sistema.
Deploy Mixture of Experts (MoE) models by using expert parallelism and PD separation: Para modelos Mixture of Experts (MoE), esta abordagem utiliza técnicas como paralelismo de especialistas (EP) e separação Prefill-Decode (PD) para aumentar o throughput de inferência e reduzir os custos de implantação.
FAQ
P: O service está travado no estado Pending
Siga estas etapas para solucionar o problema:
Verifique o status da instância: Na página de lista de services, clique no nome do service para acessar a página de detalhes. Na seção Service Instance, verifique o status da instância. Se aparecer
insufficient resources, o grupo de recursos públicos atual não tem capacidade suficiente.-
Soluções (por ordem de prioridade):
Opção 1: Altere o tipo de instância. Retorne à página de implantação e selecione um modelo de GPU diferente.
Solução 2: Use recursos dedicados. Para Resource Type, selecione um grupo de recursos do EAS para utilizar recursos dedicados (o grupo de recursos deve ser criado antecipadamente).
-
Medidas preventivas:
Crie um grupo de recursos dedicado para evitar as limitações dos recursos públicos.
Durante horários de pico, realize testes em múltiplas regiões.
P: Erros de chamada
-
A chamada de API retorna o seguinte erro: Unsupported Media Type: Only 'application/json' is allowed
Certifique-se de que os cabeçalhos da requisição contenham
Content-Type: application/json. -
A chamada de API retorna o seguinte erro: The model '<model_name>' does not exist.
O mecanismo de inferência vLLM exige que o campo do modelo seja especificado corretamente. Obtenha o nome do modelo chamando o endpoint
/v1/modelscom uma requisição GET.
Para mais dúvidas, consulte EAS FAQ.