Chat completion

Les grands modèles de langage (LLM) sont des systèmes d'IA qui génèrent du texte et participent à des interactions conversationnelles. Ils suivent des instructions et répondent naturellement aux prompts : des entrées comme des questions, des instructions ou des exemples de tâches. Le modèle traite le prompt et produit une sortie textuelle pertinente en guise de réponse.

chat_completions_graph

Les cas d'usage autour de la génération de texte comme les chat completions sont infinis et peuvent s'appliquer à une large gamme d'applications. Par exemple :

  • Chatbots
  • Classification
  • Extraction de données
  • Résumé de texte
  • Génération de code
  • Réponse à des questions

Et bien plus encore !

Chat completion

Chat completion

L'API Chat Completion accepte une liste de messages de chat en entrée et génère une réponse. Cette réponse prend la forme d'un nouveau message de chat avec le rôle « assistant » en sortie, le « content » de chaque réponse peut être soit une string, soit une list de morceaux avec différents types de morceaux pour différentes fonctionnalités. Consultez notre spécification API pour plus de détails.

Pour les requêtes de chat completion non streamées, vous fournissez une liste de messages et le modèle renvoie une seule réponse de complétion complète. Cette réponse contiendra la complétion complète jusqu'à ce que le modèle décide de s'arrêter ou que le nombre maximum de tokens soit atteint. Il est important de savoir que plus la sortie et la complétion complète sont longues, plus la latence est élevée.

Notez que le contenu de la réponse du modèle peut contenir des événements entrelacés au lieu d'une seule chaîne de caractères, tels que des citations et des appels d'outils.
Le contenu peut être soit une chaîne de caractères, l'usage le plus standard des LLM :

  • {'content': '...'}

...soit une liste de différents types de contenus :

  • {'content': [{'type': 'text', 'text': '...'}, {'type': '...', '...': [...]}, ...]}.
import os
from mistralai.client import Mistral

api_key = os.environ["MISTRAL_API_KEY"]
model = "mistral-large-latest"

client = Mistral(api_key=api_key)

chat_response = client.chat.complete(
    model = model,
    messages = [
        {
            "role": "user",
            "content": "How far is the moon from earth?",
        },
    ]
)
Messages de chat

Messages de chat

Les messages de chat sont une collection de prompts ou de messages, chaque message ayant un rôle spécifique qui lui est attribué, tel que « system », « user », « assistant » ou « tool ».

  • Un system message est un message optionnel qui définit le comportement et le contexte d'un assistant IA dans une conversation, comme modifier sa personnalité ou fournir des instructions spécifiques. Un message système peut inclure des instructions de tâche, des traits de personnalité, des informations contextuelles, des contraintes de créativité et d'autres directives pertinentes pour aider l'IA à mieux comprendre et répondre à l'entrée de l'utilisateur. Consultez la section sur les capacités de prompting pour des explications sur les capacités de prompting en général.
  • Un user message est un message envoyé du point de vue de l'humain dans une conversation avec un assistant IA. Il fournit généralement une demande, une question ou un commentaire auquel l'assistant IA doit répondre. Les prompts utilisateur permettent à l'humain d'initier et de guider la conversation, et ils peuvent être utilisés pour demander des informations, solliciter de l'aide, fournir des retours ou s'engager dans d'autres types d'interaction avec l'IA.
  • Un assistant message est un message envoyé par l'assistant IA à l'utilisateur. Il vise généralement à répondre à un message utilisateur précédent en suivant ses instructions, mais vous pouvez également le trouver au début d'une conversation, par exemple pour saluer l'utilisateur.
  • Un tool message n'apparaît que dans le contexte de l'appel de fonction, il est utilisé à l'étape finale de formulation de la réponse lorsque le modèle doit formater la sortie de l'appel d'outil pour l'utilisateur. Pour en savoir plus sur l'appel de fonction, consultez le guide.
Astuce

Quand utiliser un prompt user versus un message system puis un message user ?

  • Vous pouvez soit combiner votre message system et votre message user en un seul message user, soit les séparer en deux messages distincts.
  • Nous vous recommandons d'expérimenter les deux approches pour déterminer laquelle fonctionne le mieux pour votre cas d'usage spécifique.
Multi-tour

Multi-tour

Les chat completions peuvent être utilisées pour des conversations multi-tour. Cela signifie que vous pouvez envoyer plusieurs messages dans les deux sens entre l'utilisateur et l'assistant. C'est utile pour des applications comme les chatbots, où l'utilisateur peut avoir une conversation avec l'assistant.

Il est intéressant de noter que vous pouvez avoir différents événements entrelacés entre ces interactions, comme des appels d'outils pour l'appel de fonction, ou même des transferts lors de la gestion d'agents.

Astuce

si vous êtes intéressé par une façon simplifiée de gérer les conversations multi-tour, vous pouvez consulter nos API Agents et Conversations. La gestion des conversations multi-tour peut être complexe, et nos API sont conçues pour simplifier ce processus tout en vous fournissant des outils et connecteurs intégrés.

import os
from mistralai.client import Mistral

api_key = os.environ["MISTRAL_API_KEY"]
model = "mistral-medium-latest"

client = Mistral(api_key=api_key)

chat_response = client.chat.complete(
    model=model,
    messages=[
        {
            "role": "user",
            "content": "What is the capital of France?",
        },
        {
            "role": "assistant",
            "content": "The Capital of France is **Paris**.",
        },
        {
            "role": "user",
            "content": "Translate that to French.",
        },
    ],
)
Autres fonctionnalités utiles

Autres fonctionnalités utiles

Notre service de chat completion dispose également d'autres fonctionnalités qui peuvent être utilisées pour personnaliser vos requêtes.

  • Le flag prefix permet de préfixer du contenu à la réponse de l'assistant. Lorsqu'il est utilisé dans un message, il permet l'ajout d'un message d'assistant à la fin de la liste, qui sera préfixé à la réponse de l'assistant.
  • Le flag safe_prompt est utilisé pour forcer la modération de la chat completion contre les contenus sensibles (voir Guardrailing).
  • Une séquence stop permet de forcer le modèle à arrêter la génération après un ou plusieurs tokens ou chaînes choisis. La sortie ne contiendra pas la séquence d'arrêt.

Vous trouverez ci-dessous de courts exemples sur la façon de les utiliser.

Le flag prefix est utile pour forcer le modèle à commencer par une séquence de caractères spécifique, par exemple pour imposer un format particulier ou éviter les hallucinations. Le modèle répondra toujours en commençant par exactement la même chaîne en préfixe, puis continuera avec le reste de la réponse.

import os
from mistralai.client import Mistral

api_key = os.environ["MISTRAL_API_KEY"]
model = "mistral-medium-latest"

client = Mistral(api_key=api_key)

chat_response = client.chat.complete(
    model=model,
    messages=[
        {
            "role": "user",
            "content": "What is the capital of France?",
        },
        {
            "role": "assistant",
            "content": "The Capital of France is",
            "prefix": True,
        },
    ],
)
Pour aller plus loin

Pour aller plus loin

Ceci était une introduction simple à notre service de chat completion, cependant nous avons beaucoup plus à offrir et nous vous recommandons d'y jeter un œil ; des capacités de Vision, à l'appel de fonction, les sorties prédites, les sorties structurées et bien plus encore.