Envoyer la conversation à OpenAI

Inscris-toi

(c'est gratuit !)

Un compte est nécessaire pour participer aux discussions.

Créer un compte

Dans cette partie, nous allons envoyer notre conversation à l'API d'OpenAI pour récupérer la réponse.

Utilisation de l'API

Pour générer une conversation avec OpenAI, nous allons utiliser l'objet ChatCompletion :

response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=conversation,
    stream=True
)

On indique le modèle (pour nos tests, on utilise "gpt-3.5-turbo" qui est rapide et très abordable) et les messages (la conversation générée avec notre fonction build_conversation_dict).

Le paramètre stream permet d'indiquer qu'on souhaite recevoir la réponse au fur et à mesure et non d'un coup.

Cela permet d'avoir un rendu interactif de la réponse côté front-end pour l'utilisateur.

Retourner la réponse dans un générateur

Pour retourner la réponse, nous avons besoin de créer un générateur.

Un générateur est similaire à une fonction, on utilise seulement l'instruction yield au lieu de return pour retourner des éléments.

Le générateur peut renvoyer des informations au fur et à mesure c'est donc parfait pour notre cas d'usage avec le paramètre stream.

def event_stream(conversation: list[dict]) -> str:
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=conversation,
        stream=True
    )

    for line in response:
        text = line.choices[0].delta.get('content', '')
        if len(text):
            yield text

On commence ici par créer le générateur comme on créerait une fonction normale avec notre conversation en paramètre :

def event_stream(conversation: list[dict]) -> str:

Une fois la requête effectuée à l'API d'OpenAI avec ChatCompletion.create, on passe à travers chaque élément de la réponse avec une boucle for et on retourne le message :

for line in response:
    text = line.choices[0].delta.get('content', '')
    if len(text):
        yield text

Test de la fonction

On peut désormais tester nos deux fonctions bout à bout dans un interpéteur Python :

conversation = build_conversation_dict(messages=["Bonjour, comment ça va ?", "Ça va bien et toi ?"])
for line in event_stream(conversation):
    print(line)

Vous devriez voir la réponse de OpenAI envoyée en petit morceaux au fur et à mesure de la génération.

Ce n'est pas fini...

Tu as complété % du parcours 🔥

Termine l'intégralité de la formation pour pouvoir débloquer ton attestation de réussite.

Rechercher sur le site

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.