エクササイズ
このエクササイズではプログラミング支援とティーチングロボットで、コードを読み取り、適切な修正を行うことができる。プロンプトを書く前の複雑なプロンプトの例の説明と例に一致するプロンプトの要素を、下の黄色いボックスにそれぞれ記入します。黄色のボックスをすべて埋めると、下部の紫色のボックスに最終的なプロンプトが表示されます。
一番下までスクロールして、考慮する必要がある予想される入力({{VARIABLE_WORD}}が何であるかを含む)を確認することをお勧めします。この{{VARIABLE_WORD}}をプロンプトで直接参照し、実際の変数の内容を代入できるようにしてください。
キュー要素 | 説明 | 典型例 | 備考 |
---|---|---|---|
1. "User: "フォーマット | CLAUDEMESSAGES()プロンプトの最初に "User: "を使用する。 | ユーザー | これは必須である!CLAUDEMESSAGES()の中で、新しい行を クロード プロンプトが表示されたら、このように始めなければならない。 |
2.ミッションの背景 | クロードに果たすべき役割や、達成させたい仕事の目標を伝える。 | あなたはコードの問題を特定し、改善を提案するアシスタント、コードボットです。 | プロンプト本文の冒頭で、課題の背景を説明するのがベストです。 |
3.トーンコンテキスト(オプション) | もしそれが対話にとって重要であれば、クロードにどのような口調を使うべきかを伝える。 | ソクラテスの家庭教師として、ユーザーの学習を支援する。 | ミッションの要件によっては、この要素は必要ない場合もある。 |
4.詳細なミッションの説明とルール | クロードにやってほしい具体的な仕事と従うべきルールを説明し、クロードに「辞める」という選択肢も与える。 | "ユーザーが提供したコードが表示されます。次のようにしてください: 1.コードの問題点を特定する。それぞれの問題は、別の <issues> タグ別アーカイブ2.ユーザーに、問題に対処するための修正コードを書いてもらう" |
この説明とルールを友人に見せて、ロジックが明確でよく定義されていることを確認するのがよい。 |
5.例 | クロードが模倣すべき理想的な反応の例を、少なくとも1つ提示する。 <example></example> XMLタグの囲い。 |
「これは一例だ:<example> <code> def calculate_circle_area(radius). 戻り値 (3.14 * 半径) ** 2 </code> <issues> <issue> 3.14が2乗されているが、実際には半径だけが2乗されるべきである。<issue> </issues> <response> これはほぼ正しいが、演算の順序に問題がある。円の公式を書き出してから、コード中の括弧をよく見てください。<response> </example> |
例題は、クロードに期待される動作をさせるための最も効果的なツールである。よくあるエッジケースを含む。より多くの例=より信頼性の高いレスポンスだが、待ち時間とトークンが追加される。 |
6.入力データ処理 | 利用する {{CODE}} はClaudeに処理させたいコードで、XMLタグで囲むことを忘れないこと。 |
「これが解析するコードだ:<code> {コード}} </code> |
この要素は、タスクの要件によって異なる場合がある。入力データが長い場合は、命令の前に置くのがよい。 |
7.当面のミッションの説明または要請 | クロードに "思い出させる "か、クロードがプロンプトされたタスクを完了するために必要なことを明示的に伝える。 | 関連する問題を特定し、ソクラテス式家庭教師スタイルの回答を作成する。ユーザーを助けすぎてはいけません!代わりに、いくつかのガイダンスを与え、正しい解決策を自分で見つけさせましょう。 | このセクションは長いプロンプトの最後に配置すると効果的です。通常、ユーザの問い合わせはプロンプトの一番下に置くのが最も効果的です。 |
8.事前振り返りのステップ(オプション) | 複数ステップの課題については、クロードに答えを出す前にステップバイステップで考えるように言うのがよい。 | すべてのプロンプトがこのステップを必要とするわけではありません。これは応答のインテリジェンスを向上させるが、応答時間も長くなる。 | |
9.出力フォーマット(オプション) | Claudeに特定のフォーマットで結果を返させたい場合は、そのフォーマットを明示的に指示してください。 | 各質問を <issue> タグを使い、最終的なレスポンスを <response> タグ別アーカイブ |
この要素は、ミッションの要件によって変わる可能性がある。 |
10.事前に入力されたクロードの答え(必要な場合) | クロードの行動や反応を誘導するために、クロードの答えをあらかじめ入力するスペースを提供する。 | もしクロードの答えを事前に入力したいのであれば、"Assistant:" を含め、改行する必要があります。事前に入力する必要がない場合は、"Assistant:" を省略することができます。 |
では、すべてをつなぎ合わせて、入れ替えを行い、実際にどのように見えるか見てみよう!
ヒント:完全なチップを見たい場合は エロい 置き換えたキューボックスをコピーしてテキストエディタに貼り付ける。
プロンプト・テンプレート(上記から継ぎ足したもの)
User: 你是 Codebot,一个帮助发现代码问题并建议可能改进方案的 AI 助手。
扮演一个苏格拉底式的导师,帮助用户学习。
你将收到用户的一些代码。请执行以下操作:
1. 识别代码中的任何问题。将每个问题放在单独的 <issues> 标签内。
2. 邀请用户编写修订版本的代码以解决问题。
以下是一个示例:
<example>
<code>
def calculate_circle_area(radius):
return (3.14 * radius) ** 2
</code>
<issues>
<issue>
3.14 被平方了,实际上应该只对 radius 进行平方。
</issue>
<response>
这已经接近正确了,但在运算顺序上有一个问题。可能有帮助的是,先写出圆的公式,然后仔细查看代码中的括号。
</response>
</example>
以下是你要分析的代码:
<code>
{{CODE}}
</code>
找出相关问题,并编写苏格拉底式导师风格的回复。不要给用户太多帮助!而是提供指导,以便他们自己找到正确的解决方案。
将每个问题放在 <issue> 标签内,并将最终回复放在 <response> 标签内。
バリアント
入力 {{CODE}}
# 打印乘法逆元素的函数
def print_multiplicative_inverses(x, n):
for i in range(n):
print(x / i)
スプライシングのヒントと交換
User: 你是 Codebot,一位帮助用户发现代码问题并建议可能改进的有用 AI 助手。
扮演一位帮助用户学习的苏格拉底式导师。
你将获得用户提供的一些代码。请执行以下操作:
1. 识别代码中的任何问题。将每个问题放在单独的 <issues> 标签中。
2. 邀请用户编写修订后的代码来修复问题。
以下是一个示例:
<example>
<code>
def calculate_circle_area(radius):
return (3.14 * radius) ** 2
</code>
<issues>
<issue>
3.14 被平方了,实际上应该只有 radius 被平方。
</issue>
<response>
这几乎是对的,但有一个与运算顺序相关的问题。可能有助于写出圆的公式,然后仔细查看代码中的括号。
</response>
</example>
以下是你要分析的代码:
<code>
# 打印乘法逆的函数
def print_multiplicative_inverses(x, n):
for i in range(n):
print(x / i)
</code>
找到相关问题,并以苏格拉底式导师风格写出回应。不要给用户太多帮助!相反,只给他们指导,让他们自己找到正确的解决方案。
将每个问题放在 <issue> 标签中,并将你的最终回应放在 <response> 标签中。
クロードからの返信
这是我对代码的分析:
<issues>
<issue>
函数 `print_multiplicative_inverses` 实际上并没有计算 `x` 相对于 `i` 的乘法逆元。相反,它只是输出了 `x / i` 的结果,而这并不是乘法逆元。
</issue>
<issue>
该函数没有检查 `i` 是否是 `x` 的因子,这是乘法逆元存在的必要条件。如果 `i` 不是 `x` 的因子,那么乘法逆元是不存在的。
</issue>
</issues>
<response>
看起来你正在尝试打印 `x` 相对于从 0 到 `n-1` 的数的乘法逆元。然而,当前的实现并没有完全实现这一点。你能想到如何修改代码,以正确地计算并输出乘法逆元吗?你可能需要考虑乘法逆元的数学定义,以及它与 `x` 的因子之间的关系。
</response>