# Módulo AI Client da Azion

import DocButton from '~/components/webkit/DocButton.vue';

A biblioteca **AI Client** da Azion fornece uma interface simples para interagir com a API de AI da Azion. Essa AI especializada possui conhecimento contextual sobre todos os produtos, serviços e tecnologias da Azion, permitindo respostas precisas e relevantes sobre a Azion Web Platform.

<DocButton href="/pt-br/documentacao/produtos/azion-lib/visao-geral/" label="Saiba mais sobre as Azion Libraries" kind="secondary" target="_blank" size="medium" />

Você pode interagir com a API usando um `client` ou chamando os métodos diretamente da biblioteca. Ao fazer chamadas diretas, você pode usar variáveis de ambiente para configurar o `client` sem passar o token e os parâmetros de depuração diretamente.

Aqui está um exemplo de como um arquivo `.env` com suas variáveis de ambiente pode ser configurado:

```sh
AZION_TOKEN=seu-token-da-api
AZION_DEBUG=true
```

| Variavel | Descrição |
|----------|-------------|
| `AZION_TOKEN` | Seu token da API Azion. |
| `AZION_DEBUG` | Ativa o modo de depuração (true/false). |

:::tip
Definir `AZION_DEBUG` como `true` ativa o modo de depuração. Este modo fornece logs detalhados das requisições e respostas da API.
:::

---

## Uso

### `createClient`

Cria um cliente da IA da Azion com métodos para interagir com os serviços de IA.

```typescript
import { createClient, AzionAIClient } from '@azion/ai';

const client: AzionAIClient = createClient({
    token: 'your-token-here', // Substitua com o seu token
    options: {
        // Adicione configurações opcionais aqui
    }
});
```

**Parâmetros**:

| Parâmetro | Tipo | Descrição |
|-----------|------|-------------|
| `config` | `Partial<{ token: string; options?: AzionClientOptions }>` | Configuração opcional para o cliente. |

**Retorno**:

| Tipo de retorno | Descrição |
|-------------|-------------|
| `AzionAIClient` | Um objeto cliente com métodos para interagir com os serviços de IA.|

### `chat`

Envia uma requisição de chat para o serviço de IA da Azion.

**Exemplo TypeScript**:

```typescript
import { chat } from 'azion/ai';
import Tipo { AzionAIRequest, AzionAIResponse, AzionAIResult } from '@azion/ai';

const request: AzionAIRequest = {
messages: [{ role: 'user', content: 'Explique o que é a Azion Web Platform.' }]
};
const { data: response, error }: AzionAIResult<AzionAIResponse> = await chat(request, { debug: true });
if (response) {
console.log('AI response:', response.choices[0].message.content);
} else {
console.error('Chat failed', error);
}
```

**Parâmetros**:

| Parâmetro | Tipo | Descrição |
|-----------|------|-------------|
| `request: AzionAIRequest` | `Partial<{ token: string; options?: OptionsParams }>` | Objeto de requisição contendo parâmetros do chat. |
| `options AzionClientOptions` | `Partial<{ token: string; options?: OptionsParams }>` | Opções adicionais do cliente. |

**Retorno**:

| Tipo de retorno | Descrição |
|-------------|-------------|
| `Promise<AzionAIResult<AzionAIResponse>>` | Uma promise que resolve para o resultado do chat ou um erro. |

### `streamChat`

Envia uma requisição de chat via streaming para o serviço de IA da Azion.

**Exemplo TypeScript**:

```typescript
import { streamChat } from 'azion/ai';
import Tipo { AzionAIRequest, AzionAIStreamResponse, AzionAIResult } from '@azion/ai';

const request: AzionAIRequest = {
messages: [{ role: 'user', content: 'List 5 use cases for Azion Functions.' }]
};
const stream = streamChat(request, { debug: true });
for await (const chunk: AzionAIResult<AzionAIStreamResponse> of stream) {
if (chunk.data) {
process.stdout.write(chunk.data.choices[0].delta.content || '');
} else {
console.error('Error:', chunk.error);
}
}
```

**Parâmetros**:

| Parâmetro | Tipo | Descrição |
|-----------|------|-------------|
| `request: AzionAIRequest` | `Partial<{ token: string; options?: OptionsParams }>` | Objeto de requisição contendo parâmetros do chat. |
| `options AzionClientOptions` | `Partial<{ token: string; options?: OptionsParams }>` | Opções adicionais do cliente. |

**Retorno**:

| Tipo de retorno | Descrição |
|-------------|-------------|
| `AsyncGenerator<AzionAIResult<AzionAIStreamResponse>>` | Um gerador assíncrono que produz resultados parciais do chat. |

---