---
name: azion-chame-um-modelo-no-ai-inference-a-partir-de-uma-function
description: >-
  Chame um modelo de chat no AI Inference a partir de uma function com Azion.AI.run e devolva a resposta do modelo à requisição que chegou à function.
---

# Chame um modelo no AI Inference a partir de uma function

Você chama um modelo de chat no AI Inference a partir de uma function com o binding `Azion.AI.run`, pelo Azion Console ou pela Azion CLI. Para transformar texto em vetores com um modelo de embedding, consulte [Gere embeddings de documentos em uma tabela vetorial com AI Inference](/pt-br/documentacao/guias/ai/agentes-e-rag/gerar-embeddings-de-documentos-em-uma-tabela-vetorial/).

A function envia um id de modelo e um body de requisição, espera o modelo e lê o texto gerado na resposta. A Azion não emite credencial para a chamada, então qualquer verificação de quem pode chegar ao modelo é código na function, antes da chamada.

---

## Pré-requisitos

- Uma aplicação com o Application Accelerator ativado, que o behavior **Run Function** exige. Para criar uma, consulte [Primeiros passos com Applications](/pt-br/documentacao/plataforma/applications/primeiros-passos/).
- O id do modelo a chamar, copiado da página dele em [Modelos de AI](/pt-br/documentacao/plataforma/ai-inference/modelos/). Os ids não seguem uma única forma, então um id derivado do nome do modelo pode estar errado.
- A [Azion CLI](/pt-br/documentacao/devtools/cli/) instalada e autorizada, para o procedimento pela CLI.

Com `azion dev`, `Azion.AI` é `undefined`, e uma chamada a `Azion.AI.run` lança `TypeError: Cannot read properties of undefined (reading 'run')`. Teste a chamada quando a function estiver rodando na aplicação.

Os exemplos chamam `Qwen/Qwen3-30B-A3B-Instruct-2507-FP8` a partir de uma function chamada `ai-chat`, em `POST /api/chat` de `www.example.com`. Substitua-os pelos seus valores.

---

## Crie a function que chama o modelo

`Azion.AI.run` recebe o id do modelo como primeiro argumento e o body da requisição como segundo, sem um campo `model`. O body exige `messages`, e cada mensagem carrega um role `system`, `user` ou `assistant`. `max_tokens` limita o que o modelo gera, e `stream: false` devolve a resposta inteira.

A function recusa um prompt vazio antes da chamada, porque cada chamada executa o modelo. Ela lê o texto com optional chaining em todos os níveis, então uma resposta sem algum nível resulta em `undefined`, e a function responde `502` em vez de falhar dentro da leitura:

```javascript
const MODEL = "Qwen/Qwen3-30B-A3B-Instruct-2507-FP8";

function json(body, status = 200) {
  return new Response(JSON.stringify(body), {
    status,
    headers: { "Content-Type": "application/json" }
  });
}

export default {
  async fetch(request, env, ctx) {
    if (request.method !== "POST") {
      return new Response("Method not allowed", { status: 405 });
    }
    const { prompt } = await request.json();
    if (typeof prompt !== "string" || prompt.trim() === "") {
      return json({ error: "prompt is required" }, 400);
    }

    const modelResponse = await Azion.AI.run(MODEL, {
      "stream": false,
      "max_tokens": 500,
      "messages": [
        { "role": "system", "content": "You are a helpful assistant." },
        { "role": "user", "content": prompt }
      ]
    });

    const text = modelResponse?.choices?.[0]?.message?.content;
    if (!text) {
      return json({ error: "the model returned no text" }, 502);
    }
    return json(modelResponse);
  },
};
```

**Console**

Para criar a function pelo Azion Console:

1. **Abra a página Functions**

   Acesse [Azion Console](https://console.azion.com/) > **Products Menu** > **Libraries** > **Functions**.

2. **Selecione + Function**

3. **Nomeie a function**

   Digite `ai-chat`.

4. **Cole o código acima na aba Code**

5. **Selecione Save**

A function é salva e fica disponível para ser instanciada em uma aplicação.

**CLI**

A CLI lê o código de um arquivo local. Para criar a function:

1. **Salve o código acima em index.js**

2. **Execute o comando de criação**

   ```bash
   azion create function --name ai-chat --code ./index.js --active true
   ```

3. **Leia a saída**

   O comando imprime o ID da nova function:

   ```text
   Created function with ID 56278
   ```

Registre o ID. A instância na aplicação o recebe.

A conta tem uma function `ai-chat` que envia cada prompt ao modelo e devolve a resposta do modelo.

---

## Execute a function e leia a resposta

A function roda quando uma instância dela está na aplicação e uma regra seleciona essa instância. Crie a instância como [Primeiros passos com Functions](/pt-br/documentacao/plataforma/functions/primeiros-passos/) descreve, com o nome `ai-chat`. Crie a regra como [Execute uma função em um caminho e reverta-o](/pt-br/documentacao/guias/desenvolvimento-de-aplicacoes/functions-e-runtime/executar-uma-funcao-em-um-caminho-e-reverter/) descreve, com o caminho `/api/chat` e o método `POST`. Regras novas podem levar alguns minutos para se propagar.

Para enviar um prompt à function:

```bash
curl -s -X POST https://www.example.com/api/chat \
  -H 'Content-Type: application/json' \
  -d '{"prompt":"Name the European capitals."}'
```

A function devolve o objeto `chat.completion` do modelo. O texto gerado fica em `choices[0].message.content`:

```json
{
  "id": "chatcmpl-example",
  "object": "chat.completion",
  "created": 1767268800,
  "model": "Qwen/Qwen3-30B-A3B-Instruct-2507-FP8",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "reasoning_content": null,
        "content": "Sure! Here is a list of some European capitals...",
        "tool_calls": []
      },
      "logprobs": null,
      "finish_reason": "stop",
      "stop_reason": null
    }
  ],
  "usage": {
    "prompt_tokens": 9,
    "total_tokens": 527,
    "completion_tokens": 518,
    "prompt_tokens_details": null
  },
  "prompt_logprobs": null
}
```

`usage.prompt_tokens` conta os tokens lidos da requisição, e `usage.total_tokens` soma a eles os tokens gerados. Leia os dois depois de uma mudança no prompt para ver o que a mudança consome. Uma requisição com `prompt` vazio responde `400` e não executa nenhum modelo.

Um `POST` para `/api/chat` devolve uma resposta que o modelo gerou no AI Inference.

---

## Próximos passos

- [Modelos de AI](/pt-br/documentacao/plataforma/ai-inference/modelos.md): Copie o id de outro modelo e confira o tamanho de contexto, os tipos de entrada e o tool calling dele.
- [Invocação de modelos](/pt-br/documentacao/plataforma/ai-inference/invocacao-de-modelos.md): Todos os campos que o body da requisição aceita e todos os campos da resposta.
- [Adicionar funcionalidades de IA a aplicações existentes](/pt-br/documentacao/casos-de-uso/construir-e-executar-workloads-de-ai/adicionar-funcionalidades-de-ia-a-aplicacoes-existentes.md): Uma rota de resumo cuja function chama um modelo do catálogo e armazena cada resumo em cache.
- [Governar o acesso a múltiplos modelos de IA](/pt-br/documentacao/casos-de-uso/construir-e-executar-workloads-de-ai/governar-o-acesso-a-multiplos-modelos-de-ia.md): Uma function de gateway que chama primeiro um modelo no AI Inference e um provedor em caso de falha.
