ここでは全10回に渡って、生成AI「Claude」を使いこなすためのプロンプトエンジニアリングのコツを紹介しています。前回の第8回目は、「出力フォーマットを指定する」について解説してきました。
第9回目は「リライトで完璧な応答を引き出す」というテクニックを中心に解説していきます。
リライトを求めるタイミング
よく練られたプロンプトを使っても、Claudeの応答が完全に的確とは限りません。そんな時は、Claudeに自身の応答を修正するよう求めてみましょう。
具体的には、以下のような場合にリライトを検討します。
- 応答が必要なものに近いが、特定の詳細やフォーマットが不足している
- 出力が最初のプロンプトで概説された制約に完全に準拠していない
- 結果の正確性が不明で、Claudeにダブルチェックしてほしい
特に、特定のフォーマットや内容トピックなど、複数の制約を含むプロンプトでは、リライトが役立ちます。Claudeは多くの複雑なステップをこなす中で、ある制約を他の制約より優先することがあるのです。リライトを求めることで、最初に見落とされた制約の重要性を強調できます。
リライトの依頼方法
Claudeにリライトを依頼する際は、生成済みのテキストをプロンプトに含める必要があります。以下は、プロンプトテンプレートの例です。
ここに段落があります:
<paragraph>
{{段落}}
</paragraph>
以下の指示を使って書き直してください:
<instructions>
{{指示}}
</instructions>
書き直した内容は、<rewrite></rewrite>タグで囲んでください。
効果的なリライト指示の作成
Claudeのリライト機能を最大限に活用するには、修正後のコンテンツに対する期待を概説する明確かつ具体的な指示を提供します。以下を含めることを検討してください。
- 目的のフォーマット(段落、リスト、対話など)
- ターゲットとなるトーンやスタイル(フォーマル、会話調、ユーモラスなど)
- 含める追加の情報や文脈
- 元の応答で重点的に変更すべき特定の領域
- Claudeが以前の応答の品質と正確性を評価し、高品質な結果とは何かを理解するための評価基準
以下は、特定の制約を強調するためにリライトを求める方法の例です。
健康になるための方法をすべて教えてください。
健康になるためのいくつかの方法は次の通りです:
[リスト形式の応答]
これを、最も効果的な戦略に焦点を当てた1段落のテキストに書き直してください。
健康になりたいのであれば、最も効果的な戦略には以下のようなものがあります:
[簡潔な段落形式の応答]
このように、プロンプトを段階的なステップに分解し、的を絞ったリライト指示を提供することで、特定のニーズに合った出力をClaudeに生成させることができます。
リライト依頼の実践例
それでは、リライト依頼の実践例をもう1つ見てみましょう。今度は、説明文のリライトを通じて、具体例を加えるよう求めてみます。
Pythonでウェブスクレイピングを行う方法を説明してください。
Pythonを使ってウェブスクレイピングを行うには、以下の手順に従います。
- 必要なライブラリ(requestsとBeautifulSoup)をインストールします。
- requestsを使って、スクレイピングしたいウェブページのHTMLコンテンツを取得します。
- BeautifulSoupを使って、取得したHTMLコンテンツをパースします。
- find()やfind_all()などのBeautifulSoupのメソッドを使って、必要なデータを抽出します。
- 抽出したデータを加工し、目的の形式で保存します。
この説明を、具体的なコード例を含む形で書き直してください。
- Pythonでウェブスクレイピングを行うには、まずrequestsとBeautifulSoupライブラリをインストールします。
pip install requests beautifulsoup4
- 次に、requestsを使ってスクレイピング対象のウェブページのHTMLコンテンツを取得します。
import requests
url = 'https://www.example.com'
response = requests.get(url)
html_content = response.text
- 取得したHTMLコンテンツをBeautifulSoupでパースします。
from bs4 import BeautifulSoup
soup = BeautifulSoup(html_content, 'html.parser')
- BeautifulSoupのメソッドを使って、必要なデータを抽出します。例えば、すべてのリンクを抽出する場合は以下のようにします。
links = soup.find_all('a')
for link in links:
print(link.get('href'))
- 最後に、抽出したデータを加工し、目的の形式で保存します。例えば、CSVファイルに保存する場合は以下のようにします。
import csv
with open('links.csv', 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
for link in links:
writer.writerow([link.get('href')])
以上が、Pythonを使ったウェブスクレイピングの基本的な手順です。実際のスクレイピングでは、対象のウェブサイトの構造に合わせてBeautifulSoupのメソッドを適切に使い分ける必要があります。
事実確認とリライト:「わからない」と言わせるテクニック
Claudeに応答の書き直しを求めて事実確認を行う場合、幻覚(事実でないことをさも事実のように述べること)を防ぐために、「わからない」というテクニックの利用を検討しましょう。
このアプローチでは、Claudeに、修正に必要な情報が不足している場合は「わからない」と認めるよう促します。これにより、Claudeが不正確な「修正」を生成するのを防ぐことができます。
例えば、以下のようなプロンプトを使います。
以下の文章に事実誤認がないかチェックし、誤りがあれば修正してください。ただし、修正に必要な情報が不足している場合は「わからない」と答えてください。
<paragraph>
太陽は地球の周りを公転しています。地球から太陽までの距離は約1億5000万キロメートルで、光は太陽から地球に到達するのに約8分かかります。
</paragraph>
「太陽は地球の周りを公転しています」という記述は誤りです。正しくは、地球が太陽の周りを公転しています。
「地球から太陽までの距離は約1億5000万キロメートル」というのは正しいです。
「光は太陽から地球に到達するのに約8分かかります」というのは正しいかどうかわかりません。正確な時間は情報が不足しているため断定できません。
この例では、Claudeは明らかな誤り(太陽が地球の周りを公転するという記述)を修正しつつ、正確な情報がない部分(光が太陽から地球に到達するのにかかる時間)については「わからない」と答えています。
このテクニックを使うことで、Claudeによる不正確な修正を防ぎ、より信頼性の高い応答を得ることができます。
反復的なリライトで理想の応答を得る
時には、1回のリライトでは完璧な出力を得るのに不十分な場合もあります。そのような場合は、進化する基準に基づいて複数の修正を要求する反復的なプロセスを検討しましょう。フィードバックを重ねるごとに、Claudeはユーザーの好みについてより多くを学習し、それに応じて応答を改善していきます。
覚えておいてほしいのは、リライトを成功させる鍵は、明確で実行可能な指導を提供することだということです。指示が具体的であればあるほど、Claudeがユーザーのビジョンに沿ったコンテンツを生成する可能性が高くなります。
以上、Claudeに応答の書き直しを求める方法とそのメリットについて解説しました。明確な指示を提供し、反復的なプロセスを採用することで、Claudeに完璧な応答を引き出せることがお分かりいただけたでしょうか。
また、事実確認の際は「わからない」というテクニックを活用し、幻覚を防ぐことも重要です。
ぜひ、皆さんもリライトを活用して、Claudeとのコミュニケーションを改善していってください。
次回は、いよいよ最終回「Long context window tips」について解説します。お楽しみに!