# SDK-uri (/ro/docs/sdks)

Clienții oficiali TypeScript și Python pentru gateway-ul codai — zero dependențe, tipizați, cu extensiile codai încorporate.

Ambele SDK-uri sunt învelișuri subțiri, fără dependențe, peste [API-ul HTTP al gateway-ului](../gateway/index.mdx). Există ca să nu-ți scrii singur parsarea SSE, asamblarea tool call-urilor, reîncercările sau header-ele `X-Codai-*` — și ca extensiile codai (sesiuni, mod agent, compactare, best-of) să fie o opțiune la distanță, nu un header de reținut.

| | TypeScript | Python |
| --- | --- | --- |
| Pachet | [`codai-sdk`](https://www.npmjs.com/package/codai-sdk) 0.2.3 | [`codai-sdk`](https://pypi.org/project/codai-sdk/) 0.1.1 |
| Import | `import { Codai } from 'codai-sdk'` | `from codai import Codai` |
| Runtime | Node 18+, runtime-uri edge cu `fetch` | Python 3.9+ |
| Dependențe | niciuna | niciuna (stdlib `urllib`) |
| Streaming | iterator async + metadate `.final` | generator de delta-uri de text |
| Reîncercări | `429` / `5xx`, backoff exponențial, 2 implicit | la fel |

## Instalare [#instalare]

<Tabs items={['pnpm', 'npm', 'pip', 'uv']}>
<Tab value="pnpm">

```bash
pnpm add codai-sdk
```

</Tab>
<Tab value="npm">

```bash
npm install codai-sdk
```

</Tab>
<Tab value="pip">

```bash
pip install codai-sdk
```

</Tab>
<Tab value="uv">

```bash
uv add codai-sdk
```

</Tab>
</Tabs>

## Tur de treizeci de secunde [#tur-de-treizeci-de-secunde]

<Tabs items={['TypeScript', 'Python']}>
<Tab value="TypeScript">

```ts
import { Codai } from 'codai-sdk';

const codai = new Codai({ apiKey: process.env.CODAI_API_KEY!, sessionId: 'my-project' });

const res = await codai.chat({ messages: [{ role: 'user', content: 'salut' }] });
console.log(res.content, res.routedTo);

for await (const delta of codai.chatStream({ messages: [{ role: 'user', content: 'bună' }] })) {
  process.stdout.write(delta);
}

const run = await codai.agents.run({ task: 'Rezumă structura repo-ului.' });
if (res.requestId) await codai.feedback(res.requestId, 1);
```

</Tab>
<Tab value="Python">

```python
import os
from codai import Codai

client = Codai(api_key=os.environ["CODAI_API_KEY"], session_id="my-project")

result = client.chat([{"role": "user", "content": "salut"}])
print(result.content, result.routed_to)

for delta in client.chat_stream([{"role": "user", "content": "bună"}]):
    print(delta, end="")

run = client.agents_run("Rezumă structura repo-ului.")
if result.request_id:
    client.feedback(result.request_id, 1)
```

</Tab>
</Tabs>

## Ce acoperă ambii clienți [#ce-acoperă-ambii-clienți]

| Suprafață | TypeScript | Python |
| --- | --- | --- |
| Chat (`/v1/chat/completions`) | `chat()` | `chat()` |
| Chat în streaming | `chatStream()` | `chat_stream()` |
| Agent server-side (`/v1/agents/run`) | `agents.run()` | `agents_run()` |
| Feedback (`/v1/feedback`) | `feedback()` | `feedback()` |
| Modele (`/v1/models`) | `models()` | `models()` |
| Tokeni efemeri (`/v1/tokens`) | `mintToken()` | `mint_token()` |
| Embeddings (`/v1/embeddings`) | `embeddings()` | `embeddings()` |
| Speech-to-text | `audio.transcribe()` | `transcribe()` |
| Text-to-speech | `audio.speech()` | `speech()` |

Anthropic Messages, Responses API, WebSocket-urile realtime, endpoint-ul de chitanță și protocolul de sesiuni partajate **nu** sunt încă învelite — le apelezi direct sau prin SDK-urile OpenAI / Anthropic, așa cum arată [startul rapid al gateway-ului](../gateway/index.mdx#folosești-deja-un-sdk).

## Memoria și skill-urile sunt server-side [#memoria-și-skill-urile-sunt-server-side]

Uneltele de memorie (`memory_recall`, `memory_remember`) și skill-urile (`use_skill`) sunt native în gateway: când trimiți un `sessionId` stabil, modelul le poate invoca în timpul cererii și gateway-ul le execută. Nu ai nimic de apelat din SDK dincolo de activarea unei sesiuni.

<Cards>
  <Card title="Ghid TypeScript" href="./typescript.mdx" description="Configurare, streaming cu .final, tool calls, agenți, audio, erori, migrare de la openai." />
  <Card title="Ghid Python" href="./python.mdx" description="Start rapid, fiecare metodă, tabelul de extensii, tratarea erorilor." />
</Cards>
