Source: https://ailoot.ai/docs/fr-ch/connect/openai-sdk/
Canonical: https://ailoot.ai/docs/fr-ch/connect/openai-sdk/
Language: fr-ch

[Connexion](https://ailoot.ai/docs/fr-ch/) 

# SDK OpenAI

[Markdown](https://ailoot.ai/docs/fr-ch/connect/openai-sdk/index.md)

Les bibliothèques officielles OpenAI pour Python et Node.js fonctionnent avec Ailoot sans modifier le code : seuls l’adresse et la clé changent.

## [](https://ailoot.ai/docs/fr-ch/connect/openai-sdk/#install)Installation

```bash
pip install openai
```

```bash
npm install openai
```

## [](https://ailoot.ai/docs/fr-ch/connect/openai-sdk/#client)Connexion

Définissez l’adresse de base `https://api.ailoot.ai/v1`. Vous pouvez le faire dans le code ou via les variables `OPENAI_BASE_URL` et `OPENAI_API_KEY` — le code reste alors entièrement inchangé.

```python
from openai import OpenAI
import os

client = OpenAI(max_retries=0, 
    base_url="https://api.ailoot.ai/v1",
    api_key=os.environ["AILOOT_API_KEY"],
)

resp = client.chat.completions.create(
    model="claude-sonnet-5-5",
    messages=[{"role": "user", "content": "Explique en deux phrases ce qu’est une API."}],
)
print(resp.choices[0].message.content)
```

```js
import OpenAI from "openai";

const client = new OpenAI({ maxRetries: 0,
  baseURL: "https://api.ailoot.ai/v1",
  apiKey: process.env.AILOOT_API_KEY,
});

const resp = await client.chat.completions.create({
  model: "claude-sonnet-5-5",
  messages: [{ role: "user", content: "Explique en deux phrases ce qu’est une API." }],
});
console.log(resp.choices[0].message.content);
```

## [](https://ailoot.ai/docs/fr-ch/connect/openai-sdk/#responses)API Responses

Le nouveau format OpenAI. Disponible pour les modèles dont le catalogue indique le format Responses : 53 identifiants, dont Claude, GPT, DeepSeek, Qwen, Kimi et GLM.

```python
resp = client.responses.create(
    model="gpt-6.1-sol",
    instructions="Réponds de manière concise et pertinente.",
    input="Quelle est la différence entre TCP et UDP ?",
)
print(resp.output_text)
```

```js
const resp = await client.responses.create({
  model: "gpt-6.1-sol",
  instructions: "Réponds de manière concise et pertinente.",
  input: "Quelle est la différence entre TCP et UDP ?",
});
console.log(resp.output_text);
```

## [](https://ailoot.ai/docs/fr-ch/connect/openai-sdk/#tools)Outils (function calling)

```python
tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "Météo dans une ville",
        "parameters": {
            "type": "object",
            "properties": {"city": {"type": "string"}},
            "required": ["city"],
        },
    },
}]

import json

messages = [{"role": "user", "content": "Quel temps fait-il à Kazan ?"}]
# Désactivez les nouvelles tentatives automatiques : après un dépassement de délai, vérifiez d’abord le Request ID dans votre historique d’utilisation.
client = client.with_options(max_retries=0)
for turn in range(4):
    resp = client.chat.completions.create(
        model="claude-sonnet-5-5", messages=messages, tools=tools,
    )
    message = resp.choices[0].message
    messages.append(message.model_dump(exclude_none=True))
    if not message.tool_calls:
        print(message.content)
        break
    for call in message.tool_calls:
        if call.function.name != "get_weather":
            raise ValueError("Unexpected function")
        arguments = json.loads(call.function.arguments)
        # Remplacez par votre propre fonction météo ; cet exemple utilise explicitement des données de démonstration.
        result = {"city": arguments["city"], "temperature_c": 20, "demo": True}
        messages.append({"role": "tool", "tool_call_id": call.id,
                         "content": json.dumps(result, ensure_ascii=False)})
else:
    raise RuntimeError("Tool loop limit reached")
```

## [](https://ailoot.ai/docs/fr-ch/connect/openai-sdk/#embeddings)Embeddings

```python
emb = client.embeddings.create(
    model="nvidia/nemotron-3-embed-1b",
    input=["Premier document", "Deuxième document"],
)
print(len(emb.data), len(emb.data[0].embedding))
```

## [](https://ailoot.ai/docs/fr-ch/connect/openai-sdk/#vision)Images en entrée

```python
resp = client.chat.completions.create(
    model="gpt-6.1-sol",
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": "Que voit-on sur cette image ?"},
            {"type": "image_url", "image_url": {"url": "https://example.com/photo.jpg"}},
        ],
    }],
)
```

## [](https://ailoot.ai/docs/fr-ch/connect/openai-sdk/#errors)Gestion des erreurs

Les erreurs Ailoot utilisent le format OpenAI, de sorte que les exceptions standard du SDK permettent de les intercepter. Le message contient le Request ID.

```python
import openai

try:
    resp = client.chat.completions.create(model="claude-sonnet-5-5", messages=[{"role": "user", "content": "Bonjour"}])
except openai.APIStatusError as e:
    print(e.status_code, e.response.json()["error"]["code"])
    print(e.response.headers.get("x-request-id"))
```

```js
try {
  await client.chat.completions.create({ model: "claude-sonnet-5-5", messages: [{ role: "user", content: "Bonjour" }] });
} catch (err) {
  if (err instanceof OpenAI.APIError) {
    console.log(err.status, err.code, err.headers?.["x-request-id"]);
  }
}
```

Les SDK OpenAI et Anthropic relancent généralement les requêtes en cas d’erreur réseau ou de réponse 5xx. Pour les générations, désactivez ce comportement (`max_retries=0`) et vérifiez `X-Should-Retry` avant toute nouvelle tentative. Une réponse perdue ne signifie pas que la requête n’a pas été exécutée.

Encore des questions ? Envoyez le Request ID et une description : nous vous aiderons à l’analyser.[Contacter l’assistance](mailto:support@ailoot.ai)

## Ailoot · L’entreprise et son portefeuille de projets





Ailoot s’appuie sur une expérience opérationnelle éprouvée, une large clientèle, un service stable et un suivi continu des KPI.





L’entreprise et son portefeuille de projets : des millions de clients ; des ventes qui se chiffrent en milliards chaque mois.





Ailoot met cette expérience opérationnelle au service de l’accès API aux fonctions d’IA dans les produits des clients, leurs agents, applications et automatisations.
