Le prompt
Voici la réponse donnée par chatGPT quand on lui demande ce qu'est un prompt :
Un prompt est l’instruction ou la question que tu poses à un LLM pour obtenir une réponse. Il joue un rôle central dans la qualité des résultats, et bien le formuler est une compétence essentielle en "prompt engineering".
Nous allons distinguer 2 parties dans le prompt : - une partie "système" qui va correpondre aux instructions générales données aux LLM (exemple : "Ton rôle est de répondre aux questions sur le réglement intérieur du lycée.") - une partie "utilisateur" qui peut correspondre à la demande de l'utilisateur
Dans ce chapitre nous allons écrire un prompt système afin de cadrer les réponses apportées à l'utilisateur : le modèle devra uniquement répondre aux questions concernant l'auteur science fiction Philip K Dick. Le reste du code sera identique que celui vu dans le chapitre précédent.
from dotenv import load_dotenv
from openai import OpenAI
from IPython.display import Markdown, display
import os
load_dotenv()
API_KEY = os.getenv('GOOGLE_API_KEY')
llm = OpenAI(api_key=API_KEY, base_url="https://generativelanguage.googleapis.com/v1beta/openai/")
prompt_system = """Tu dois uniquement parler de l'auteur de science Fiction Philip K Dick et uniquement de lui.
Si l'utilisateur te pose une question sur un autre sujet, tu dois lui répondre que tu n'es pas autorisé à parler de ce sujet.
"""
msg_prompt_sys = [{'role' : 'system', 'content' : prompt_system}]
Nous pouvons maintenant poser une première question au modèle :
msg_user_1 = [{'role' : 'user', 'content' : 'Quelle est la date de naissance de Philip K Dick ?'}]
msg_1 = msg_prompt_sys + msg_user_1 #on rappelle que [a]+[b] = [a,b]
response = llm.chat.completions.create(model = 'gemini-2.0-flash', messages = msg_1)
answer = response.choices[0].message.content
display(Markdown(answer))
Philip K. Dick est né le 16 décembre 1928.
Essayons maintenant de lui poser une question qui n'a strictement rien à voir avec l'auteur américain :
msg_user_2 = [{'role' : 'user', 'content' : 'Quelle est la recette de la tarte aux pommes ?'}]
msg_2 = msg_prompt_sys + msg_user_2
response = llm.chat.completions.create(model = 'gemini-2.0-flash', messages = msg_2)
answer = response.choices[0].message.content
display(Markdown(answer))
Je suis désolé, je ne suis autorisé qu'à parler de Philip K. Dick. Je ne peux pas te donner une recette de tarte aux pommes.
Vous pouvez constater que le modèle refuse de répondre à cette question. Le prompt a donc bien permis de "cadrer" les réponses du modèle.
Exercice : vous pouvez modifier le prompt et poser d'autres questions.
Ce chapitre est terminé, nous allons, dans le prochain chapitre, voir comment insérer un document dans le prompt afin de pouvoir poser des questions sur ce même document.
Code complet :
from dotenv import load_dotenv
from openai import OpenAI
from IPython.display import Markdown, display
import os
load_dotenv()
API_KEY = os.getenv('GOOGLE_API_KEY')
llm = OpenAI(api_key=API_KEY, base_url="https://generativelanguage.googleapis.com/v1beta/openai/")
prompt_system = """Tu dois uniquement parler de l'auteur de science Fiction Philip K Dick et uniquement de lui.
Si l'utilisateur te pose une question sur un autre sujet, tu dois lui répondre que tu n'es pas autorisé à parler de ce sujet.
"""
msg_prompt_sys = [{'role' : 'system', 'content' : prompt_system}]
msg_user_1 = [{'role' : 'user', 'content' : 'Quelle est la date de naissance de Philip K Dick ?'}]
msg_1 = msg_prompt_sys + msg_user_1
response = llm.chat.completions.create(model = 'gemini-2.0-flash', messages = msg_1)
answer = response.choices[0].message.content
display(Markdown(answer))
msg_user_2 = [{'role' : 'user', 'content' : 'Quelle est la recette de la tarte aux pommes ?'}]
msg_2 = msg_prompt_sys + msg_user_2
response = llm.chat.completions.create(model = 'gemini-2.0-flash', messages = msg_2)
answer = response.choices[0].message.content
display(Markdown(answer))
Philip K. Dick est né le 16 décembre 1928.
Je suis désolé, je ne suis pas autorisé à parler de ce sujet. Je peux seulement parler de Philip K. Dick.