Invite de chaîne de raisonnement et cohérence interne

Conception de invites (Prompt Engineering) avec l'API d'OpenAI

Fouad Trad

Machine Learning Engineer

Invite de chaîne de raisonnement

  • Demande aux LLM d'exposer les étapes de raisonnement avant la réponse
  • Utile pour des tâches de raisonnement complexes
  • Aide à réduire les erreurs du modèle

Image montrant comment une invite « chaîne de raisonnement » demande au modèle de résoudre un problème étape par étape, et la sortie inclut le raisonnement suivi à chaque étape.

Conception de invites (Prompt Engineering) avec l'API d'OpenAI

Invite de chaîne de raisonnement

Invite standard pour résoudre une tâche de raisonnement
prompt = """Q: You start with 15 books in your collection. At the bookstore, you 
purchase 8 new books. Then, you lend 3 to your friend and 2 to your cousin. Later, 
you visit another bookstore and buy 5 more books. How many books do you have now? 
A: The answer is"""

print(get_response(prompt))
25 books
Conception de invites (Prompt Engineering) avec l'API d'OpenAI

Invite de chaîne de raisonnement

Invite de chaîne de raisonnement pour résoudre une tâche de raisonnement
prompt = """Q: You start with 15 books in your collection. At the bookstore, you 
purchase 8 new books. Then, you lend 3 to your friend and 2 to your cousin. Later, 
you visit another bookstore and buy 5 more books. How many books do you have now? 
A: Let's think step by step""" 
print(get_response(prompt))
Step 1: Start with the number of books in your collection: 15 books
Step 2: Purchase 8 new books at the bookstore: 15 + 8 = 23 books
Step 3: Lend 3 books to your friend: 23 - 3 = 20 books
Step 4: Lend 2 books to your cousin: 20 - 2 = 18 books
Step 5: Visit another bookstore and buy 5 more books: 18 + 5 = 23 books
Therefore, you have 23 books now.
Conception de invites (Prompt Engineering) avec l'API d'OpenAI

Invite de chaîne de raisonnement avec quelques exemples

example = """
Q: The odd numbers in this group add up to an even number:  9, 10, 13, 4, 2.
A: Adding all the odd numbers (9, 13) gives 22. The answer is True.
"""

question = """ Q: The odd numbers in this group add up to an even number: 15, 13, 82, 7. A: """
prompt = example + question print(get_response(prompt))
Adding all the odd numbers (15, 13, 7) gives 35. The answer is False.
Conception de invites (Prompt Engineering) avec l'API d'OpenAI

Chaîne de raisonnement vs invite en plusieurs étapes

Invites en plusieurs étapes

  • Intègrent les étapes dans l'invite

Schéma montrant qu'une invite en plusieurs étapes fournit au modèle une série d'étapes séquentielles à exécuter.

Conception de invites (Prompt Engineering) avec l'API d'OpenAI

Chaîne de raisonnement vs invite en plusieurs étapes

Invites en plusieurs étapes

  • Intègrent les étapes dans l'invite

Schéma montrant qu'une invite en plusieurs étapes fournit au modèle une série d'étapes séquentielles à exécuter.

Invites de chaîne de raisonnement

  • Demandent au modèle de générer des étapes intermédiaires

Image montrant que, dans les invites de chaîne de raisonnement, les étapes sont produites par le modèle lors de la génération de la sortie.

Conception de invites (Prompt Engineering) avec l'API d'OpenAI

Limite de la chaîne de raisonnement

  • Une étape erronée → résultat erroné
  • Les invites à cohérence interne ont été introduites

Schéma pour une invite de chaîne de raisonnement montrant qu'une étape au raisonnement fautif mènera à un résultat insatisfaisant.

Conception de invites (Prompt Engineering) avec l'API d'OpenAI

Invite à cohérence interne

  • Génère plusieurs chaînes de raisonnement en invitant le modèle plusieurs fois
  • Vote majoritaire pour obtenir la sortie finale

Image montrant qu'une invite à cohérence interne consiste à produire plusieurs chaînes de raisonnement, chacune avec une sortie, et que le résultat final est obtenu par vote majoritaire.

Conception de invites (Prompt Engineering) avec l'API d'OpenAI

Invite à cohérence interne

Peut se faire en définissant plusieurs invites ou une invite générant plusieurs réponses.

self_consistency_instruction = "Imagine three completely independent experts who 
reason differently are answering this question. The final answer is obtained by 
majority vote. The question is: "

problem_to_solve = "If there are 10 cars in the parking lot and 3 more cars arrive. Half the original number of cars leave. Then, half of the current number of cars arrive. How many cars are there in the parking?"
prompt = self_consistency_instruction + problem_to_solve print(get_response(prompt))
Conception de invites (Prompt Engineering) avec l'API d'OpenAI

Invite à cohérence interne

Expert 1: Let's go step by step [...] Therefore, the total number of cars in the 
parking lot is 8 + 4 = 12.

Expert 2: First, let's calculate [...] Therefore, the total number of cars in the 
parking lot is now 5 + 2 = 7 cars.

Expert 3: Initially, there are 10 cars [...] Thus, the final answer is 8 + 4 = 12 
cars in the parking lot.

Based on the majority vote, the final answer is that there are 12 cars in the 
parking lot.
Conception de invites (Prompt Engineering) avec l'API d'OpenAI

Passons à la pratique !

Conception de invites (Prompt Engineering) avec l'API d'OpenAI

Preparing Video For Download...