Passer au contenu principal
L’API Paradigm est utilisée pour compléter son interface visuelle. Elle permet la création d’applications intelligentes, en s’appuyant sur la puissance des LLM pour interagir avec les utilisateurs de manière intuitive. C’est un outil supplémentaire pour les développeurs souhaitant personnaliser leurs appels LLM en jouant avec les paramètres utilisés, pour appeler des outils externes, ou pour intégrer des appels LLM automatiques au sein d’applications métier existantes.
Configuration d’Instance RequiseAvant d’utiliser les endpoints de l’API Paradigm, assurez-vous d’avoir configuré correctement votre environnement pour votre type d’instance (publique ou privée).Voir Configuration d’Instance pour les instructions de configuration.

Premiers pas

Configuration

Tout d’abord, configurez votre environnement avec votre clé API et l’URL de notre endpoint. Ceci est utilisé pour connecter vos requêtes à notre service.
Authentification & Configuration d’InstanceVeuillez noter que bien que l’exploration de la documentation ne nécessite pas d’authentification, vous aurez besoin d’identifiants API valides pour effectuer des requêtes réelles à nos services. Si vous n’avez pas les droits pour créer une clé API, demandez à l’administrateur de votre entreprise de vous les accorder ; si vous les avez, vous pouvez en créer une dans votre profil Paradigm !Pour les instances privées, assurez-vous de configurer l’URL de base correcte. Voir Configuration d’Instance pour plus de détails.
import os

# Récupérer la clé API depuis l'environnement
api_key = os.getenv("PARADIGM_API_KEY")
# Récupérer l'URL de base depuis l'environnement (par défaut vers l'instance publique)
base_url = os.getenv("PARADIGM_BASE_URL", "https://paradigm.lighton.ai/api/v2")

Création des Messages

Le cœur de votre requête est le tableau de messages, où chaque élément possède un rôle (“system”, “user”, “assistant” ou “tool”) et le contenu du message.
  • System : Définit le contexte de la conversation ou fournit des instructions à l’IA, guidant ses réponses. Idéal pour initialiser le chat avec le contexte ou les règles nécessaires.
  • User : Entrées de l’utilisateur humain interagissant avec l’IA. Ce rôle est utilisé pour les questions, déclarations ou commandes que les utilisateurs saisissent dans le chat.
  • Assistant : Réponses de l’IA conçues pour aider, répondre ou interagir avec l’utilisateur. Ce rôle est destiné au contenu généré par l’IA en réponse aux prompts utilisateur ou système.
  • Tool : Informations provenant d’outils externes pour fournir au LLM des informations externes (plus de détails à ce sujet plus tard).
Vous pouvez avoir des conversations de suivi en fournissant une liste de messages, comme dans le code ci-dessous :
import requests

messages = [
    {"role": "system", "content": "Vous êtes un assistant IA utile qui répond aux questions de l'utilisateur"},
    {"role": "user", "content": "Bonjour, je m'appelle Tom, comment allez-vous ?"},
    {"role": "assistant", "content": "Je suis Tom, je suis là pour vous aider. Que puis-je faire pour vous ?"},
    {"role": "user", "content": "Quel est mon nom ?"},
]

headers = {
    "Authorization": f"Bearer {api_key}",
    "Content-Type": "application/json"
}

response = requests.post(
    url,
    headers=headers,
    json={
        "model": "alfred-4.2",
        "messages": messages,
        "temperature": 0.7,
        "max_tokens": 150
    }
)
data = response.json()

assistant_reply = data["choices"][0]["message"]["content"]
print(assistant_reply)
Lors de l’utilisation de l’API LightOn, les développeurs peuvent personnaliser plusieurs paramètres clés des LLM pour adapter le comportement du modèle à des cas d’usage spécifiques. Ceux-ci incluent :
  • temperature : contrôle l’aléatoire de la sortie. Des valeurs plus basses (par ex. 0.2) rendent la réponse plus ciblée et prévisible, tandis que des valeurs plus élevées (par ex. 0.8 ou 1.0) encouragent des réponses plus créatives et diversifiées.
  • max_tokens : définit le nombre maximum de tokens que le modèle peut générer dans la réponse. Utile pour contrôler la longueur de sortie et éviter des réponses trop longues.
  • top_p (échantillonnage nucleus) : limite les choix du prochain token à une probabilité cumulative p. Par exemple, avec top_p=0.9, seuls les tokens les plus probables qui totalisent 90% de probabilité sont considérés. Souvent utilisé comme alternative ou complément à la température.
  • frequency_penalty : applique une pénalité aux tokens qui sont déjà apparus, réduisant la répétition. Les valeurs vont de 0.0 (pas de pénalité) à 2.0 (forte pénalité). Utile pour éviter les réponses redondantes.
  • presence_penalty : encourage le modèle à introduire de nouveaux sujets en pénalisant les tokens déjà mentionnés, augmentant la diversité du contenu. Varie également de 0.0 à 2.0.
  • stop : une liste de séquences de tokens où la génération doit s’arrêter. Par exemple, définir stop=["\n\n", "User:"] peut empêcher le modèle de continuer dans un nouveau prompt ou une nouvelle section.

Exemple de Streaming

Le streaming permet une livraison immédiate et incrémentale des réponses, parfait pour les interactions en direct. Avec stream=True, l’API envoie des parties de la réponse au fur et à mesure qu’elles sont générées. L’exemple ci-dessous affiche chaque partie dès son arrivée.
import requests
import json

messages = [
    {"role": "system", "content": "Vous êtes un assistant IA utile qui répond aux questions de l'utilisateur"},
    {"role": "user", "content": "Bonjour, je m'appelle Tom, comment allez-vous ?"},
    {"role": "assistant", "content": "Je suis Tom, je suis là pour vous aider. Que puis-je faire pour vous ?"},
    {"role": "user", "content": "Quel est mon nom ?"},
]

payload = {
    "model": "alfred-4.2",
    "messages": messages,
    "temperature": 0.7,
    "max_tokens": 150,
    "stream": True
}

headers = {
    "Authorization": f"Bearer {api_key}",
    "Content-Type": "application/json"
}

with requests.post(f"{base_url}/chat/completions", headers=headers, json=payload, stream=True) as r:
    for line in r.iter_lines():
        if not line:
            continue
        line = line.decode("utf-8").strip()
        if line.startswith("data: "):
            # Retirer le préfixe "data: "
            json_str = line[6:]
            # Vérifier le marqueur de fin
            if json_str == "[DONE]":
                break

            try:
                data = json.loads(json_str)
                content = data["choices"][0]["delta"].get("content", "")
                if content:
                    print(content, end="", flush=True)
            except (json.JSONDecodeError, KeyError, IndexError):
                continue

Bonnes Pratiques

  • Gardez le Contexte Pertinent : N’incluez que les messages qui aident la conversation.
  • Utilisez le Streaming pour les Chats en Direct : Définissez stream=True pour les interactions continues.
  • Adaptez le Modèle à votre Infrastructure : Les modèles que vous choisissez doivent refléter ceux déployés sur votre infrastructure.
  • Équilibrez Température et Tokens : Ajustez pour la créativité vs. la précision et la longueur de réponse.

Conclusion

Ce guide est votre point de départ pour intégrer les fonctionnalités de chat. Avec les bons paramètres et la bonne compréhension, vous pouvez créer des conversations IA engageantes. Bon codage !