チェーン・オブ・ソートと自己整合プロンプト

OpenAI API で学ぶプロンプトエンジニアリング

Fouad Trad

Machine Learning Engineer

チェーン・オブ・ソート・プロンプト

  • 回答前に推論手順(思考)を示すようLLMに要求
  • 複雑な推論課題に有効
  • モデル誤りを低減

チェーン・オブ・ソートは、問題を段階的に解かせ、各ステップの推論を出力に含めることを示す画像。

OpenAI API で学ぶプロンプトエンジニアリング

チェーン・オブ・ソート・プロンプト

推論タスクを標準プロンプトで解く
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
OpenAI API で学ぶプロンプトエンジニアリング

チェーン・オブ・ソート・プロンプト

推論タスクをチェーン・オブ・ソートで解く
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.
OpenAI API で学ぶプロンプトエンジニアリング

少数ショット付きチェーン・オブ・ソート

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.
OpenAI API で学ぶプロンプトエンジニアリング

チェーン・オブ・ソート vs マルチステップ・プロンプト

マルチステップ・プロンプト

  • プロンプト内に手順を組み込む

マルチステップ・プロンプトは、モデルに連続する手順を与えるプロンプトであることを示す図。

OpenAI API で学ぶプロンプトエンジニアリング

チェーン・オブ・ソート vs マルチステップ・プロンプト

マルチステップ・プロンプト

  • プロンプト内に手順を組み込む

マルチステップ・プロンプトは、モデルに連続する手順を与えるプロンプトであることを示す図。

チェーン・オブ・ソート・プロンプト

  • 中間ステップの生成を指示

チェーン・オブ・ソートでは、出力生成中にモデルが手順を生成することを示す画像。

OpenAI API で学ぶプロンプトエンジニアリング

チェーン・オブ・ソートの限界

  • 1つの誤った思考 → 誤った結論
  • 自己整合プロンプトが導入された

チェーン・オブ・ソートで、誤った推論が失敗につながることを示す図。

OpenAI API で学ぶプロンプトエンジニアリング

自己整合プロンプト

  • 複数回プロンプトし、複数の思考連鎖を生成
  • 最終出力は多数決で決定

自己整合プロンプトは、複数の思考連鎖と各出力を作り、最終結果を多数決で得ることを示す画像。

OpenAI API で学ぶプロンプトエンジニアリング

自己整合プロンプト

複数のプロンプトを定義する、または1つのプロンプトで複数の応答を生成させる方法があります。

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))
OpenAI API で学ぶプロンプトエンジニアリング

自己整合プロンプトの出力例

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.
OpenAI API で学ぶプロンプトエンジニアリング

Passons à la pratique !

OpenAI API で学ぶプロンプトエンジニアリング

Preparing Video For Download...