修正の往復
「違います」では直らない
返ってきたコードが期待どおりでないとき、そのまま「違います」「うまくいきません」と返す人がいます。これはほぼ効きません。AI は何がどう違うのか分からないので、当てずっぽうで別の実装を出してきます。運が悪いと、直っていた部分まで作り変わります。
差し戻しにも書き方があります。
3つを揃えて返す
差し戻しに必要な要素は3つです。
プレーンテキスト
入力 何を渡したか
期待 何が返るはずだったか
実際 何が返ったかこの3つが揃うと、AI は自分で再現できます。再現できれば直せます。
プレーンテキスト
悪い 平均の計算がおかしいです
良い average_amount([100, 101]) を呼ぶと 101 が返りました。
小数は切り捨てなので 100 が返るはずです。下の書き方なら、切り捨てになっていないことが1行で伝わります。上の書き方だと、AI はまず「どこがおかしいのか」を推測するところから始めます。推測させないのが差し戻しのコツです。
エラーは全文を貼る
例外が出たときは、要約せずにそのまま貼ります。
プレーンテキスト
悪い エラーが出ました
良い average_amount([]) で ZeroDivisionError: division by zero が出ましたエラーの種類と、どの呼び出しで出たかが分かれば、原因の候補は一気に絞れます。要約すると、その絞り込みができなくなります。
直った範囲を守る
往復で一番よくある事故が、直したいところ以外まで変わることです。3回やり取りすると、最初に納得したコードが跡形もなくなっていた、ということが起きます。
防ぐには、直す範囲を毎回言い切ります。
プレーンテキスト
average_amount だけを直してください。
total_amount と count_over は変更しないでください。触ってほしくない場所を名指しする。これを1行足すだけで、差分がずいぶん小さくなります。
3往復で止める
同じ箇所を3回差し戻しても直らないなら、やり取りを続けても直りません。原因はたいてい次のどちらかです。
プレーンテキスト
仕様が曖昧 自分がまだ決めていないことがある
分割不足 1回で頼んでいる量が多すぎるそのときは往復をやめて、いったん最初の指示に戻ります。決まっていない条件を決めてから、頼み直したほうが速いです。往復は改善のための手段であって、粘る根性を見せる場ではありません。
演習
kakeibo.py の monthly_summary は、月ごとの合計を返す関数です。いまは辞書を返しますが、キーの並びが登録順のままで、月順になっていません。月の昇順に並んだ結果を返すよう差し戻してください。返す形も指示で決めてください。
完成条件
- 触ってよいのは kakeibo.py だけです
- 月の昇順に並んだ [月, 合計] のリストのリストを返します
- monthly_summary 関数の戻り値で採点します