> ## Documentation Index
> Fetch the complete documentation index at: https://docs.muffinscorp.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Biblioteca JavaScript/Node

> Integre a Muffins AI em seus projetos JavaScript/Node.js com exemplos práticos e configurações detalhadas.

## Visão Geral

A biblioteca JavaScript oficial da Muffins AI oferece integração simplificada com todos os recursos da plataforma. Compatível com Node.js e navegadores modernos.

## Pré-requisitos

<Info>
  Node.js v19+ ou navegador moderno (Chrome 112+, Firefox 108+, Edge 114+)
</Info>

1. **Conta Muffins AI**: [Crie uma conta](https://platform.muffinscorp.com/auth/sign-up)
2. **Chave de API**: Obtenha em [Painel de API](https://platform.muffinscorp.com/dashboard/api-keys)
3. **Ambiente Node.js** (opcional): [Guia de instalação](https://nodejs.org)

***

## Instalação

### Via npm/yarn

```bash theme={null}
npm install muffinscorp
# ou
yarn add muffinscorp
```

***

## Configuração Inicial

### 1. Autenticação

```javascript theme={null}
// CommonJS
const { MuffinsCorp } = require('muffinscorp');

// ES Modules
import { MuffinsCorp } from 'muffinscorp';

const client = new MuffinsCorp({
  apiKey: process.env.MUFFINS_API_KEY, // Recomendado
//  baseUrl: <string> Opcional caso tenha dominio personalizado
});
```

### 2. Variáveis de Ambiente (Node.js)

Crie um arquivo `.env`:

```env theme={null}
MUFFINS_AI_API_KEY=your_api_key_here
NODE_ENV=production
```

***

## Uso Básico

### Chat Completion

```javascript theme={null}
async function getChatResponse() {
  const response = await client.chat.create({
    model: 'chat-model-small',
    messages: [
      { role: 'system', content: 'You are a helpful assistant' },
      { role: 'user', content: 'Explain quantum computing' }
    ],
    temperature: 0.7,
    max_tokens: 500
  });

  console.log(response);
}

getChatResponse().catch(console.error);
```

### Streaming

```javascript theme={null}
const stream = await client.chat.create({
  model: 'chat-model-small',
  messages: [...],
  stream: true
});

for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content || '');
}
```

***

## Recursos Avançados

### 1. Gerenciamento de Modelos

```javascript theme={null}
// Listar modelos disponíveis
const models = await client.models.list();
   console.log("Available AI Models:");
   console.log(models);
```

### 2. Gerenciamento de Assinaturas

```javascript theme={null}
// Listar Planos de assinaturas disponíveis
const subscriptions = await client.subscriptions.list();
    console.log("Available Subscription Plans:");
    console.log(subscriptions);
```

### 3. Verificar creditos disponiveis

```javascript theme={null}
 const balance = await muffinsai.credits.getBalance();
    console.log("Current credit balance:");
    console.log(balance);
```

***

## Boas Práticas

1. **Tratamento de Erros**

```javascript theme={null}
try {
  const response = await client.chat.create(...);
} catch (error) {
  if (error instanceof MuffinsAPIError) {
    console.error(`API Error [${error.status}]: ${error.message}`);
    if (error.status === 429) {
      console.log('Retry after:', error.headers['retry-after']);
    }
  }
}
```

2. **Logging**

```javascript theme={null}
client.on('request', (req) => {
  console.log(`Request: ${req.method} ${req.url}`);
});

client.on('response', (res) => {
  console.log(`Response: ${res.status}`);
});
```

***

## Exemplo Completo (Aplicação Web)

```javascript theme={null}
import { MuffinsCorp } from 'muffinscorp';

const chatForm = document.getElementById('chat-form');
const chatHistory = document.getElementById('chat-history');

const client = new MuffinsCorp({
  apiKey: 'YOUR_API_KEY'
});

chatForm.addEventListener('submit', async (e) => {
  e.preventDefault();
  const userInput = e.target.elements.message.value;
  
  // Adiciona mensagem do usuário ao histórico
  chatHistory.innerHTML += `<div class="user-message">${userInput}</div>`;
  
  // Obtém resposta do assistente
  const response = await client.chat.create({
    model: 'chat-model-small',
    messages: [
      { role: 'system', content: 'You are a helpful assistant' },
      { role: 'user', content: userInput }
    ]
  });
  
  // Adiciona resposta ao histórico
  chatHistory.innerHTML += `<div class="assistant-message">${response}</div>`;
});
```

***

## Troubleshooting

| Erro             | Solução                                  |
| ---------------- | ---------------------------------------- |
| 401 Unauthorized | Verifique sua chave de API e permissões  |
| 429 Rate Limited | Implemente retry com backoff exponencial |
| ECONNRESET       | Verifique conexão de rede e timeout      |

Para mais ajuda, visite nosso [Centro de Suporte](mailto:ai.support@muffinscorp.com).
