Génération de texte
L'endpoint de génération de texte permet de créer du contenu textuel avec l'IA YODI.
Endpoint
POST https://api.yodi.tg/v1/completions
Paramètres de requête
Paramètres obligatoires
| Paramètre | Type | Description |
|---|---|---|
model | string | Identifiant du modèle à utiliser (ex: "yodi-1") |
prompt | string | Le texte d'entrée pour la génération |
Paramètres optionnels
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
max_tokens | integer | 100 | Nombre maximum de tokens à générer |
temperature | float | 1.0 | Contrôle la créativité (0.0-2.0) |
top_p | float | 1.0 | Contrôle la diversité via nucleus sampling |
top_k | integer | 50 | Limite les choix aux k tokens les plus probables |
frequency_penalty | float | 0.0 | Réduit la répétition (-2.0 à 2.0) |
presence_penalty | float | 0.0 | Encourage la nouveauté (-2.0 à 2.0) |
stop | array | null | Séquences d'arrêt personnalisées |
stream | boolean | false | Streaming des résultats en temps réel |
Exemple de requête
cURL
curl -X POST "https://api.yodi.tg/v1/completions" \
-H "Authorization: Bearer your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"model": "yodi-1",
"prompt": "Écris une introduction sur l'\''intelligence artificielle",
"max_tokens": 150,
"temperature": 0.7,
"stop": ["\n\n"]
}'
Python
import requests
url = "https://api.yodi.tg/v1/completions"
headers = {
"Authorization": "Bearer your_api_key_here",
"Content-Type": "application/json"
}
data = {
"model": "yodi-1",
"prompt": "Écris une introduction sur l'intelligence artificielle",
"max_tokens": 150,
"temperature": 0.7,
"stop": ["\n\n"]
}
response = requests.post(url, headers=headers, json=data)
result = response.json()
Python SDK
from yodi import Client
client = Client(api_key="your_api_key_here")
response = client.completions.create(
model="yodi-1",
prompt="Écris une introduction sur l'intelligence artificielle",
max_tokens=150,
temperature=0.7,
stop=["\n\n"]
)
print(response.choices[0].text)
JavaScript
const response = await fetch('https://api.yodi.tg/v1/completions', {
method: 'POST',
headers: {
'Authorization': 'Bearer your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'yodi-1',
prompt: 'Écris une introduction sur l\'intelligence artificielle',
max_tokens: 150,
temperature: 0.7,
stop: ['\n\n']
})
});
const data = await response.json();
console.log(data.choices[0].text);
JavaScript SDK
import { YodiClient } from 'yodi-sdk';
const client = new YodiClient({
apiKey: 'your_api_key_here'
});
const response = await client.completions.create({
model: 'yodi-1',
prompt: 'Écris une introduction sur l\'intelligence artificielle',
max_tokens: 150,
temperature: 0.7,
stop: ['\n\n']
});
console.log(response.choices[0].text);
Réponse
Structure de la réponse
{
"message": "SUCCESS",
"error": false,
"data": {
"id": "cmpl-abc123",
"object": "text_completion",
"created": 1693574400,
"model": "yodi-1",
"choices": [
{
"text": "L'intelligence artificielle (IA) représente l'une des révolutions technologiques les plus importantes de notre époque...",
"index": 0,
"logprobs": null,
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 12,
"completion_tokens": 45,
"total_tokens": 57
}
},
"status": 200
}
Champs de la réponse
| Champ | Type | Description |
|---|---|---|
id | string | Identifiant unique de la completion |
object | string | Type d'objet retourné |
created | integer | Timestamp de création |
model | string | Modèle utilisé |
choices | array | Liste des completions générées |
usage | object | Informations sur l'utilisation des tokens |
Raisons de fin (finish_reason)
| Valeur | Description |
|---|---|
stop | Arrêt naturel ou séquence d'arrêt atteinte |
length | Limite de tokens atteinte |
content_filter | Contenu filtré pour des raisons de sécurité |
Streaming
Activation du streaming
response = client.completions.create(
model="yodi-1",
prompt="Raconte-moi une histoire",
max_tokens=200,
stream=True
)
for chunk in response:
if chunk.choices[0].text:
print(chunk.choices[0].text, end='')
Format de réponse en streaming
data: {"message": "STREAM_CHUNK", "error": false, "data": {"id": "cmpl-abc123", "choices": [{"text": " Il", "index": 0}]}, "status": 200}
data: {"message": "STREAM_CHUNK", "error": false, "data": {"id": "cmpl-abc123", "choices": [{"text": " était", "index": 0}]}, "status": 200}
data: {"message": "STREAM_COMPLETE", "error": false, "data": null, "status": 200}
Paramètres avancés
Contrôle de la créativité
# Très créatif et varié
response = client.completions.create(
model="yodi-1",
prompt="Invente une histoire fantastique",
temperature=1.8,
top_p=0.9
)
# Très cohérent et prévisible
response = client.completions.create(
model="yodi-1",
prompt="Explique le théorème de Pythagore",
temperature=0.1,
top_k=10
)
Contrôle des répétitions
response = client.completions.create(
model="yodi-1",
prompt="Liste des avantages de l'IA",
frequency_penalty=0.5, # Réduit les répétitions
presence_penalty=0.3 # Encourage la nouveauté
)
Séquences d'arrêt
response = client.completions.create(
model="yodi-1",
prompt="Question: Qu'est-ce que l'IA?\nRéponse:",
stop=["Question:", "\n\n", "###"]
)
Cas d'usage courants
Génération d'articles
def generate_article(topic, keywords):
prompt = f"""
Écris un article de blog professionnel sur le sujet : {topic}
Mots-clés à intégrer : {', '.join(keywords)}
Structure souhaitée :
- Introduction accrocheuse
- 3-4 sections principales
- Conclusion avec call-to-action
Article :
"""
return client.completions.create(
model="yodi-1",
prompt=prompt,
max_tokens=1500,
temperature=0.7,
stop=["---"]
)
Résumé de texte
def summarize_text(text, max_length=100):
prompt = f"""
Résume le texte suivant en {max_length} mots maximum :
{text}
Résumé :
"""
return client.completions.create(
model="yodi-1",
prompt=prompt,
max_tokens=max_length * 2, # Approximation tokens/mots
temperature=0.3
)
Génération créative
def creative_writing(style, theme):
prompt = f"""
Écris un texte créatif dans le style {style} sur le thème {theme}.
Texte :
"""
return client.completions.create(
model="yodi-1",
prompt=prompt,
max_tokens=500,
temperature=1.2,
top_p=0.9
)
Gestion d'erreurs
from yodi.exceptions import YodiAPIError
try:
response = client.completions.create(
model="yodi-1",
prompt="Hello world",
max_tokens=100
)
except YodiAPIError as e:
if e.status_code == 400:
print(f"Paramètres invalides : {e.message}")
elif e.status_code == 429:
print("Limite de taux atteinte")
else:
print(f"Erreur API : {e}")
Limites et considérations
- Tokens maximum : Varie selon le modèle (voir Modèles)
- Limites de taux : Consultez Rate limits
- Coût : Facturation par token utilisé (Tarification)
- Filtrage de contenu : Certains contenus peuvent être filtrés