Aller au contenu principal

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