Démarrage rapide — Python et TypeScript
Installez le SDK et réalisez votre premier échange dans le langage de votre choix.
Mise à jour et versions
Les SDK installés ne se mettent pas à jour automatiquement. Exécutez les commandes depuis votre projet, puis redémarrez ou redéployez votre application.- Python
- TypeScript
Dans un projet uv qui utilise déjà La mise à jour respecte la contrainte de Si vous utilisez pip plutôt que uv, dans l’environnement virtuel de votre application :Avec pip, mettez aussi à jour votre fichier de dépendances ou votre verrouillage selon votre outil : cette commande ne les réécrit pas.
zelinqa, mettez à jour le verrouillage et l’environnement, puis affichez la version installée :pyproject.toml. Si elle fixe une version exacte, changez-la explicitement. Par exemple, pour choisir 1.0.1 :Vérifier avant de déployer
- Lisez le changelog et les changements du SDK.
- Testez une conversation complète sur un domaine de démonstration : démarrage, réponse libre ou choix selon votre usage, progression et arrêt. Testez aussi la reprise et les erreurs que votre application gère.
- Versionnez le manifeste et le verrouillage (
pyproject.toml+uv.lock, oupackage.json+package-lock.json) pour déployer les mêmes dépendances que celles testées. En production, évitez une mise à jour non contrôlée vers la dernière version.
Clés et permissions
Créez une clé dans Zelinqa Studio pour un domaine publié. Une clé est liée à ce domaine et à des permissions :
La clé runtime ne donne pas accès à la configuration. Vous pouvez créer plusieurs clés pour un même domaine, avec les seules permissions utiles à chaque service. Pour plusieurs domaines, utilisez une clé par domaine.
En Python,
ZelinqaClient() lit ZELINQA_API_KEY. Pour la configuration, ZelinqaConfigurationClient() cherche d’abord ZELINQA_CONFIGURATION_API_KEY, puis ZELINQA_API_KEY. En TypeScript, fournissez explicitement apiKey au constructeur. L’URL par défaut est https://api.zelinqa.ai ; une URL HTTP locale peut être passée pour le développement, pas pour une clé réelle sur un réseau non fiable.
Cycle d’une conversation
start_session/startSessioncrée une session sur la version publiée active.session.next()renvoie la première décision, sans réponse précédente.- Votre application affiche
candidates[0].textet recueille la réponse réelle. session.answer(...)rattache cette réponse à la décision en attente et renvoie la décision suivante. Ne rappelez pasnext()juste pour obtenir cette question.session.refresh()relit l’état ;session.submit_feedback(...)enregistre un résultat métier réellement observé.
user_text / userText). Pour une question fermée ou semi-ouverte, choice_labels / choiceLabels accepte les libellés exacts affichés ; les identifiants des choix sont résolus localement. Une semi-ouverte peut ajouter free_text / freeText. Pour une absence de réponse ou un refus réels, utilisez asked_no_answer ou refused sans texte. Les choix seuls et ces deux issues ne nécessitent pas d’analyse par modèle ; le texte libre peut en nécessiter une.
Le handle conserve state_version. Utilisez-le séquentiellement : deux mutations concurrentes de la même session peuvent produire un conflit. Après une interruption ou un ZelinqaStateVersionConflictError, relisez l’état et réconciliez la réponse avant de réessayer ; ne la rejouez pas à l’aveugle. Une session déjà ouverte reste attachée à sa version publiée même après une nouvelle publication.
Autres opérations
Une publication est asynchrone : vérifiez le statut terminal de compilation avant de considérer la nouvelle version active. Les erreurs HTTP ont des classes typées, notamment pour l’authentification, les permissions, les données invalides, les conflits et la limitation de débit. Les SDK réessaient les erreurs transitoires avec une clé d’idempotence stable par appel logique ; un conflit métier n’est pas masqué.
Pour les options, les modèles de réponse et les exemples de configuration, consultez les guides Python et TypeScript, ou la référence API.