# SDK

> Используйте официальные SDK OpenAI и Anthropic. Поменяйте base URL и ключ.


Собственного SDK у NotHoly нет. Официальные SDK OpenAI и Anthropic работают после смены двух настроек.

| SDK | Base URL | Ключ |
|---|---|---|
| OpenAI (Python, JavaScript, Go и другие) | `https://api.notholy.com/v1` | `NOTHOLY_API_KEY` как API-ключ |
| Anthropic (Python, JavaScript) | `https://api.notholy.com` | `NOTHOLY_API_KEY` как API-ключ |

## OpenAI SDK

```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)
```

## Anthropic SDK

```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 : '');
```

## Что дальше

- [Переход с OpenAI и Anthropic](/ru/references/migration)
- [Интеграции](/ru/integrations/claude-code)
