# openai-free 🤖

A free OpenAI-compatible API client that doesn't require API keys.

## Installation

```bash
npm install openai-free
```

## Basic Usage

```javascript
const OpenAI = require('openai-free');
const openai = new OpenAI();

async function chat() {
    try {
        const response = await openai.chat.completions.create({
            messages: [
                { role: 'user', content: 'Hello!' }
            ]
        });
        
        console.log(response.choices[0].message.content);
    } catch (error) {
        console.error('Error:', error.message);
    }
}

chat();
```

## API Methods

### Chat Completion
```javascript
const response = await openai.chat.completions.create({
    messages: [
        { role: 'user', content: 'What is JavaScript?' }
    ]
});
```

### List Models
```javascript
const models = await openai.models.list();
console.log(models.data);
```

### Get Model Info
```javascript
const modelInfo = await openai.models.retrieve('gpt-4o');
console.log(modelInfo);
```

## Available Models

- `gpt-4o` (default)
- `gpt-4o-mini`

## Parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `messages` | Array | `[]` | Array of message objects |
| `model` | String | `'gpt-4o'` | Model ID |
| `temperature` | Number | `0.5` | Response randomness (0-1) |
| `max_tokens` | Number | `4000` | Maximum response length |
| `top_p` | Number | `1` | Nucleus sampling (0-1) |
| `frequency_penalty` | Number | `0` | Repetition reduction (0-2) |
| `presence_penalty` | Number | `0` | Topic control (0-2) |
| `stream` | Boolean | `false` | Stream response |

## Custom Configuration

```javascript
const openai = new OpenAI({
    baseURL: 'your-custom-url' // Optional: Override default API endpoint
});
```

## Error Handling

```javascript
try {
    const response = await openai.chat.completions.create({
        messages: [{ role: 'user', content: 'Hello!' }]
    });
} catch (error) {
    console.error('Error:', error.message);
}
```

## 🐛 Bug Reports

Found a bug? Please open an issue with:
1. Bug description
2. Steps to reproduce
3. Expected vs actual behavior

## 📝 License

MIT © [Jr Busaco (JrDev06)](https://www.facebook.com/jr.busaco.271915)

## 👨‍💻 Author

**Jr Busaco (JrDev06)**
- Facebook: [@jr.busaco.271915](https://www.facebook.com/jr.busaco.271915)

---

💡 Need help? Feel free to reach out on Facebook or open an issue.
