# SDK

> Usa gli SDK ufficiali di OpenAI e Anthropic. Cambia l'URL base e la chiave.


NotHoly non ha un SDK proprio. Gli SDK ufficiali di OpenAI e Anthropic funzionano dopo aver cambiato due impostazioni.

| SDK | URL base | Chiave |
|---|---|---|
| OpenAI (Python, JavaScript, Go e altri) | `https://api.notholy.com/v1` | `NOTHOLY_API_KEY` come chiave API |
| Anthropic (Python, JavaScript) | `https://api.notholy.com` | `NOTHOLY_API_KEY` come chiave API |

## SDK di OpenAI

```python test
import os
from openai import OpenAI

client = OpenAI(base_url="https://api.notholy.com/v1", api_key=os.environ["NOTHOLY_API_KEY"])

r = client.chat.completions.create(model="notholy-specter", messages=[{"role": "user", "content": "What is CWE-79?"}])
print(r.choices[0].message.content)
```

## SDK di Anthropic

```python test
import os
from anthropic import Anthropic

client = Anthropic(base_url="https://api.notholy.com", api_key=os.environ["NOTHOLY_API_KEY"])
m = client.messages.create(
    model="notholy-specter",
    max_tokens=512,
    messages=[{"role": "user", "content": "What is CWE-89?"}],
)
print(m.content[0].text)
```

```js test
import Anthropic from '@anthropic-ai/sdk';

const client = new Anthropic({ baseURL: 'https://api.notholy.com', apiKey: process.env.NOTHOLY_API_KEY });
const m = await client.messages.create({
  model: 'notholy-specter',
  max_tokens: 512,
  messages: [{ role: 'user', content: 'What is CWE-89?' }],
});
console.log(m.content[0].type === 'text' ? m.content[0].text : '');
```

## Prossimi passi

- [Migrare da OpenAI e Anthropic](/it/references/migration)
- [Integrazioni](/it/integrations/claude-code)
