Skip to main content

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ètreTypeDescription
modelstringIdentifiant du modèle à utiliser (ex: "yodi-1")
promptstringLe texte d'entrée pour la génération

Paramètres optionnels​

ParamètreTypeDéfautDescription
max_tokensinteger100Nombre maximum de tokens à générer
temperaturefloat1.0Contrôle la créativité (0.0-2.0)
top_pfloat1.0Contrôle la diversité via nucleus sampling
top_kinteger50Limite les choix aux k tokens les plus probables
frequency_penaltyfloat0.0Réduit la répétition (-2.0 à 2.0)
presence_penaltyfloat0.0Encourage la nouveauté (-2.0 à 2.0)
stoparraynullSéquences d'arrêt personnalisées
streambooleanfalseStreaming 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​

ChampTypeDescription
idstringIdentifiant unique de la completion
objectstringType d'objet retourné
createdintegerTimestamp de création
modelstringModèle utilisé
choicesarrayListe des completions générées
usageobjectInformations sur l'utilisation des tokens

Raisons de fin (finish_reason)​

ValeurDescription
stopArrêt naturel ou séquence d'arrêt atteinte
lengthLimite de tokens atteinte
content_filterContenu 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

Prochaines étapes​