|
出典: Alibaba Developers Alibaba テックガイド I. 背景 ローカルな生活シナリオでは、LLMは異なる機能を実行する必要があります。質疑応答シナリオでは、回答はより「ローカル化」されます。デバッグを行うことで、一般的なLLMに一定のローカル特性を持たせることが可能です。もちろん、失敗するケースもあります。プロンプト出力結果の安定性についても、さらなる検討が必要です。 II. 基礎知識 序文 プロンプトを使用する場合、API または LLM と直接対話していくつかのパラメータを設定し、さまざまなプロンプト結果を取得できます。 温度:簡単に言うと、温度が低いほど、最も可能性の高い次のラベルが常に選択されるため、結果の確実性が高まります。温度を上げるとランダム性が高まり、より多様で創造的な出力が促進される可能性があります。これは、本質的に他の可能性のあるラベルの重み付けを高めることを意味します。応用面では、事実に基づくQAなどのタスクでは、より本物らしく簡潔な回答を促すために、温度値を低く設定すると良いでしょう。詩の生成などの創造的なタスクでは、温度値を上げることが効果的かもしれません。 Top_p:同様に、top_pはカーネルサンプリングと呼ばれる温度サンプリング手法で、モデルの応答生成における決定論を制御します。正確で事実に基づいた回答を求める場合は、控えめにしてください。より多様な回答を求める場合は、値を大きくしてください。 一般的には、2つではなく1つ変更することをお勧めします。基本的な例を始める前に、使用しているLLMのバージョンによって結果が異なる場合があることにご注意ください。 基本的なプロンプト シンプルなプロンプトで多くの結果を得ることができますが、結果の質は提供する情報の量と完全性に左右されます。プロンプトには、モデルに渡す指示や質問などの情報だけでなく、コンテキスト、入力、例などの詳細情報も含めることができます。これらの要素を活用することで、モデルをより適切に誘導し、より良い結果を得ることができます。 入力: 空は 晴れた日の空は青く、曇りの日は空が灰色や白くなることがあります。 上に示したように、言語モデルは与えられた文脈「The sky is」に基づいて文の続きを完成させることができます。出力は予想外の結果になるか、タスクの要件をはるかに超える可能性があります。 上記の例に基づいて、より具体的な目標を達成したい場合は、より多くの背景情報や説明情報を提供する必要があります。 次の例を使用して改善を試みることができます。 入力: 文を完成させなさい: 空は 今日は本当に美しいですね。 プロンプトワード形式 1. 基本 <質問>? <指示> 以下に示すように、多くの QA データセットの標準形式である質問と回答 (QA) 形式としてフォーマットできます。 Q: <質問>? A: 3. 小規模サンプルの提案 上記の標準フォーマットを踏まえると、効果的で一般的なプロンプティング手法として「Few-shot Prompting (少数のプロンプト)」があります。この手法では、例(つまりデモンストレーション)を提示することができます。少数のプロンプトは、以下のようにフォーマットできます。 <質問>?<回答><質問>?<回答><質問>?<回答><質問>? Q: <質問>?A: <回答>Q: <質問>?A: <回答>Q: <質問>?A: <回答>Q: <質問>?A: プロンプト これはすごい! // 肯定的これはひどい! // 否定的わあ、あの映画は最高だった! // 肯定的なんてひどい番組だ! // ネガティブ ヒント要素 ツールチップエンジニアリングの事例や応用例を詳しく見ていくと、ツールチップが特定の要素で構成されていることに気付くでしょう。ツールチップには以下の要素が含まれます。 指示: モデルに実行させる特定のタスクまたは指示。 コンテキスト: モデルがより適切な応答を行えるように導く外部情報またはその他のコンテキスト。 入力データ: 応答を見つけることができる入力または質問を見つけることに関心があります。 出力インジケーター: 出力のタイプまたは形式。 タスクに基づいて 1 つ以上の要素を選択します。 III. 建設方法と技術 最適な提案を最初の試みで設計することは困難です。そのため、LLM(ローカル管理モデル)からのフィードバックを分析し、出力が期待どおりに機能していない箇所を特定し、継続的に提案を改良・最適化していく必要があります。可能であれば、多数のサンプルを用いて提案を改善するのが最適です。これにより、最適化結果をより直感的に把握できるようになります。 最近、AI専門家のAndrew Ng氏が、プロンプト構築の3つの原則を概説したプロンプトチュートリアルを公開しました。「Prompt Engineering Guide」でも多くのテクニックが紹介されています。実際には、Few-ShotとCOTはタスクにおいてより有効であることが分かっており、特にFew-Shotはほとんどのタスクで効果的であることが証明されています。 3.1 原則 1. 明確かつ具体的な指示を提供します。
区切り文字は次のいずれかになります: ```、""、< >、<tag> </tag> プロンプトの例: text = f"""モデルに何を実行させたいかを、できるだけ明確かつ具体的な指示で表現する必要があります。これにより、モデルは目的の出力に導かれ、無関係な応答や誤った応答を受け取る可能性が低くなります。明確なプロンプトを書くことと短いプロンプトを書くことを混同しないでください。多くの場合、長いプロンプトの方がモデルに明確さとコンテキストを提供し、より詳細で関連性の高い出力につながる可能性があります。"""prompt = f"""3つのバッククォートで区切られたテキストを1つの文に要約してください。```{text}```"""response = get_completion(prompt)print(response)モデルを望ましい出力に導くために、明確で具体的な指示を提供する必要があります。また、プロンプトが長いほど、モデルの明確さとコンテキストが高まり、より詳細で関連性の高い出力が得られます。
これにより、モデルの出力をプログラムで直接使用できるようになります。たとえば、出力 JSON は Python プログラムによって直接読み取られ、辞書形式に変換できます。 プロンプトの例: prompt = f"""3つの架空の書籍のタイトルと著者、ジャンルのリストを生成してください。JSON形式で、次のキーを指定してください: book_id、title、author、genre。"""response = get_completion(prompt)print(response) [ { "book_id": 1, "title": "ゾラスの失われた都市", "author": "アリア・ブラックウッド", "genre": "ファンタジー" }, { "book_id": 2, "title": "最後の生存者", "author": "イーサン・ストーン", "genre": "SF" }, { "book_id": 3, "title": "ホーンテッドマンションの秘密", "author": "ライラ・ローズ", "genre": "ミステリー" }]
プロンプトの例(条件を満たすテキスト): text_1 = f"""お茶を淹れるのは簡単です!まず、お湯を沸かします。その間に、カップを用意し、ティーバッグを入れます。お湯が十分に温まったら、ティーバッグに注ぎます。お茶を蒸らすために少し置いておきます。数分後、ティーバッグを取り出します。お好みで砂糖やミルクを加えても構いません。これで完成です!おいしいお茶の出来上がりです。"""prompt = f"""三重引用符で区切られたテキストが表示されます。テキストに一連の手順が含まれている場合は、以下の形式で手順を書き直してください。ステップ 1 - ...ステップ 2 - ...ステップ N - ...テキストに一連の手順が含まれていない場合は、単に「手順は提供されていません」と記入してください。{text_1}\"\"\"\"""response = get_completion(prompt)print("テキスト1の補完:")print(response)テキスト 1 の完成:ステップ 1 - お湯を沸騰させます。ステップ 2 - カップを用意し、ティーバッグを入れます。ステップ 3 - お湯が十分に熱くなったら、ティーバッグに注ぎます。ステップ 4 - お茶が抽出されるまで少しそのままにしておきます。ステップ 5 - 数分後、ティーバッグを取り出します。ステップ 6 - 味に応じて砂糖またはミルクを少し加えます。ステップ 7 - おいしいお茶をお楽しみください。
1 つ以上のサンプルからのヒントをモデルに提供することで、モデルは期待される出力をより適切に理解できるようになります。 少数ショット学習に興味がある方は、GPT-3の論文「言語モデルは少数ショット学習者である」を参照してください。 プロンプトの例: prompt = f"""あなたの課題は、一貫したスタイルで答えることです。<child>: 忍耐について教えてください。<grandparent>: 最も深い谷を刻む川は、ささやかな泉から流れ出ます。<child>: 最も壮大な交響曲は、一つの音符から生まれます。<child>: 回復力について教えてください。"""response = get_completion(prompt)print(response) 出力 <祖父母>: レジリエンスとは、風に吹かれても決して折れない木のようなものです。困難に直面しても、逆境から立ち直り、前進し続ける力です。嵐を乗り越えるたびに強くなる木のように、レジリエンスも時間をかけて育み、強化できる資質です。 2. モデルに「考える」時間を与えます。この原理は、思考の連鎖アプローチを活用し、複雑なタスクをN個の連続したサブタスクに分解します。これにより、モデルは段階的に思考できるようになり、より正確な出力が得られます。詳細については、論文「Chain-of-Thought Prompting Elicits Reasoning in Large Language Models」をご覧ください。
以下は、テキストを要約し、要約をフランス語に翻訳し、各名前をフランス語の要約にリストし、最後にJSON形式でデータを出力するという例です。このような複雑な指示を、モデルが結果をそのまま出力するだけでは処理が困難です。しかし、必要な手順を提供し、モデルが問題を段階的に解くようにすることで、モデルはトークンを出力する際に前の手順の結果を参照できるようになり、出力の精度が向上します。 プロンプトの例: text = f"""魅力的な村で、兄妹のジャックとジルは丘の上の井戸から水を汲む旅に出ました。楽しそうに歌いながら丘を登っていくと、不幸が襲ってきました。ジャックは石につまずいて丘を転げ落ち、ジルもそれに続きました。少し傷つきながらも、二人は家に戻り、慰め合う抱擁を受けました。災難にもめげず、冒険心は衰えることなく、喜びにあふれた探検を続けました。"""# example 1prompt_1 = f"""次のアクションを実行してください。|1 - 3つのバックティックで区切られた次のテキストを1つの文で要約してください。2 - 要約をフランス語に翻訳してください。3 - フランス語の要約にそれぞれの名前をリストしてください。4 - 次のキー(french_summary、num_names)を含むJSONオブジェクトを出力してください。回答は改行で区切ってください。 breaks.Text:```{text}```"""response = get_completion(prompt_1)print("プロンプト1の完了:")print(response)出力: プロンプト1の完了:ジャックとジルという二人の兄弟は、丘の上の井戸に水を汲みに行く冒険に出かけますが、不運に見舞われ、二人とも丘を転げ落ちてしまいます。少し傷ついた状態でも、冒険心は衰えることなく家に帰ってきます。そこは滞在するのに最高の場所です。そこは滞在するのに最高の場所です。そこは無傷でいられる完璧な場所です。名前:ジャック、ジル。二人は丘の上の井戸に転げ落ち、冒険心は衰えることなく、少し傷ついた状態で家に帰ってきます。", "num_names": 2} より良いプロンプト:
プロンプト 2 の完了: 概要: ジャックとジルは水を汲む旅に出ますが、不幸に見舞われ、丘から転げ落ち、少しボロボロになりましたが、冒険心は衰えずに家に帰りました。 leurs esprits aventureux intacts.Names: Jack、JillOutput JSON: {"french_summary": "Jack と Jill partent en quête d'eau、mais un malheur frappe et ils tombent de lacolline、rentrant chez eux légèrement meurtris mais avec leurs esprits aventureux無傷。", "num_names": 2}
ここで著者は、生徒の演習問題の解答を確認する例を示しています。最初のバージョンのプロンプトでは、モデルは慌てて誤った解答を出しました。 パフォーマンスの低いプロンプトの例: prompt = f"""生徒の解答が正しいかどうかを判断してください。質問:太陽光発電設備を建設しており、財務計算について支援が必要です。- 土地の費用は1平方フィートあたり100ドルです。- ソーラーパネルは1平方フィートあたり250ドルで購入できます。- メンテナンス契約を締結しましたが、年間10万ドルの固定費用に加え、1平方フィートあたり10ドルの追加料金がかかります。平方フィート数に応じた、初年度の運用コストはいくらですか?生徒の解答:xを施設の面積(平方フィート)とします。費用:1. 土地費用:100x2. ソーラーパネル費用:250x3. メンテナンス費用:100,000 + 100x 100,000"""response = get_completion(prompt)print(response) 生徒の解答は正しいです。 更新されたプロンプト: prompt = f"""あなたの仕事は、生徒の解答が正しいかどうかを判断することです。問題を解くには、次の手順に従ってください。- まず、問題に対するあなた自身の解答を考え出してください。- 次に、あなたの解答を生徒の解答と比較して、生徒の解答が正しいかどうかを評価してください。問題を自分で解くまでは、生徒の解答が正しいかどうかを判断しないでください。次の形式を使用してください。質問:```ここに質問```生徒の解答:```ここに生徒の解答```実際の解答:```ここに解答を導き出す手順とあなたの解答```生徒の解答は、計算した実際の解答と同じですか:```はい または いいえ```生徒の成績:```正解 または 不正解``質問:```私は太陽光発電設備を建設しており、財務計算について支援が必要です。- 土地の費用は 1 平方フィートあたり 100 ドルです。- ソーラーパネルは 1 平方フィートあたり 250 ドルで購入できます。- 交渉しました年間10万ドルの固定費に加え、1平方フィートあたり10ドルの追加料金がかかるメンテナンス契約を締結しました。初年度の総費用は、平方フィート数に応じていくらになるでしょうか。````生徒の解答:````xを設置面積(平方フィート)とします。費用:1. 土地費用: 100x2. ソーラーパネル費用: 250x3. メンテナンス費用: 100,000 + 100x総費用: 100x + 250x + 100,000 + 100x = 450x + 100,000````実際の解答:"""response = get_completion(prompt)print(response) xを設置面積(平方フィート)とします。費用:1. 土地費用:100x2. ソーラーパネル費用:250x3. メンテナンス費用:100,000 + 10x合計費用:100x + 250x + 100,000 + 10x = 360x + 100,000生徒の解答は、計算した実際の解答と同じですか?いいえ生徒の評価:不正解 3. モデルの限界:幻覚ChatGPTを頻繁に利用する方は、このモデルが錯覚を生み出す可能性があること、つまり、一見もっともらしいもの(例えば存在しない文学作品など)を捏造する可能性があることをご承知おきください。これらの出力は正しいように見えますが、実際には誤りです。 この問題に対処するため、著者らはモデルの錯覚問題を軽減する比較的効果的な方法を提案しています。それは、モデルに関連情報を提供させ、その情報に基づいて質問に答えさせるというものです。例えば、モデルに「まず関連情報を見つけ、その関連情報に基づいて質問に答えてください」と指示します。 3.2 テクニック サンプルゼロ分類の例 プロンプト: テキストを中立、否定、肯定に分類します。テキスト: 休暇は大丈夫だと思います。感情: 中性 小さなサンプル大規模言語モデルは優れたゼロショット能力を発揮しますが、ゼロショット設定を用いた場合、より複雑なタスクには依然として不十分です。少数ショットのプロンプトは、文脈学習を可能にする手法として使用できます。プロンプトには、モデルのパフォーマンス向上を導くためのデモが用意されています。これらのデモは、後続の例題の条件として機能し、モデルが応答を生成することが期待されます。 プロンプト: 「Whatpu」はタンザニア原産の小さな毛むくじゃらの動物です。「Whatpu」を使った例文は、例えば「私たちはアフリカを旅行していて、とてもかわいいWhatpusを見ました。「Farduddle」とは、とても速く飛び跳ねることを意味します。」などです。 試合に勝ったとき、私たちは全員で祝杯をあげ始めました。 CoT(心の内容)のヒントThought Chains (CoT) ヒントは、中間推論ステップを通じて高度な推論を可能にします。少数のヒントと組み合わせることで、回答前に推論が必要となるより複雑なタスクでより良い結果を得ることができます。 プロンプト このグループの奇数を合計すると、偶数になります。4、8、9、15、12、2、1。A: 奇数 (9、15、1) をすべて足すと 25 になります。19) は 36 になります。答えは True です。このグループの奇数を合計すると、偶数になります。16、11、14、4、8、13、24。A: 奇数 (11、13) をすべて足すと 24 になります。答えは True です。2.A: 奇数 (17、9、13) をすべて足すと 39 になります。答えは False です。このグループの奇数を合計すると、偶数になります。15、32、5、13、82、7、1。A: すべての奇数 (15、5、13、7、1) を足すと 41 になります。答えは F です。 推論手順を提示すれば、完璧な結果が得られます。実際、この課題はより少ない例、つまり1つの例を提示することで解決できます。 プロンプト: このグループの奇数を合計すると、偶数になります: 4、8、9、15、12、2、1。A: 奇数 (9、15、1) をすべて合計すると 25 になります。答えは False です。 すべての奇数 (15、5、13、7、1) を足すと 41 になります。答えは False です。 ゼロCOTプロンプト最近のアイデアとして、ゼロショットCoTがあります。これは基本的に、元のプロンプトに「ステップごとに考えてみましょう」という要素を追加するものです。ここで簡単な問題を試して、モデルのパフォーマンスを確認してみましょう。 プロンプト: 私は市場に行って、リンゴを 10 個買いました。2 個を隣人に、2 個を修理工にあげました。その後、さらに 5 個リンゴを買いに行き、1 個を食べました。残ったリンゴはいくつでしょうか。 出力: リンゴ11個 プロンプト: 市場に行ってリンゴを10個買いました。2個は隣人に、2個は修理屋さんにあげました。それからまた5個買って、1個食べました。残ったリンゴは何個でしょう?順を追って考えてみましょう。 まず、リンゴを 10 個持っています。2 個を隣人にあげ、2 個を修理工にあげたので、リンゴは 6 個残りました。その後、さらに 5 個買ったので、リンゴは 11 個になりました。最後に、リンゴを 1 個食べたので、リンゴは 10 個残ります。 PAL(プログラム支援言語モデル)プログラム支援言語モデル(PAL)は、LLMを用いて自然言語の質問を読み取り、中間推論ステップとしてプログラムを生成します。思考連鎖ヒントとは異なり、PALは解を得るために自由形式のテキストを使用せず、代わりに解のステップを実行可能なプログラミングコードに変換することで、結果の精度を向上させます。この手法の欠点は、LLMがコードで応答するために、比較的長いヒント例(多くの場合、コードスニペット)が必要になることです。 IV. 探究、実践、例 プロンプトの動作は、モデルやタスクによって異なります。ここでは、一般的なタスクとビジネスタスクでテストします。まず、基本的なプロンプトを構築します。具体的な用途には、モデルごとに調整が必要です。 4.1 一般的なタスク 4.1.1 分類タスク基本プロンプト カテゴリが明確に定義されており、カテゴリの説明が不要な場合は、次のプロンプトをデバッグのベースとして直接使用できます。 1f"""{question} は [class1,class2,class3] のどのカテゴリに属しますか?""" 1f"""`{question}` を分類してください。カテゴリは [class1, class2, class3] の範囲内である必要があります。"""タスク1: 複数の分類 1. カナダ(英仏:Canada)は、首都オタワを擁し、北アメリカ北部に位置しています。東は大西洋、西は太平洋、北西はアラスカ、南はアメリカ合衆国本土、北は北極海に接しています。気候は主に亜北極圏の針葉樹林と湿潤大陸性気候で、北極地域では極寒の長期気候となります。 2. 『涅槃火中』は、山東映画テレビメディアグループ、山東映画テレビ制作有限公司、北京如意新新映画テレビ投資有限公司、北京和松天地映画テレビ文化有限公司、北京盛吉映画テレビ有限公司、東陽正陽陽光映画テレビ有限公司の共同製作による歴史ドラマで、孔勝、李雪が監督し、胡歌、劉涛、王凱、黄偉徳、陳龍、呉磊、高欣らが出演している。 3. 『曼江紅』は、チャン・イーモウ監督によるサスペンスコメディ映画で、シェン・テン、イー・ヤンチェンシー、チャン・イー、レイ・ジアイン、ユエ・ユンペン、ワン・ジアイーが出演しています。パン・ビンロンとユー・アイレイが脇役として、グオ・ジンフェイとオウ・ハオがゲスト出演、ウェイ・シャン、チャン・チー、ホアン・ヤンが特別出演しています。シュー・ジンヤ、ジャン・ポンユー、リン・ボーヤン、フェイ・ファン、レン・シノ、チェン・ヨンシェンも出演しています。 4. ブエノスアイレス(中国語ではブエノスと呼ばれることが多い)は、アルゼンチン共和国(República Argentina)の首都であり最大の都市です。南アメリカ南東部、ラ・プラタ川の南岸に位置し、対岸にはウルグアイがあります。 5. 張怡(チャン・イー、本名:張怡)は、1978年2月17日、黒龍江省ハルビン市生まれの中国の俳優です。1997年から2006年まで、北京軍区政治部傘下の詮有劇団に所属していました。2006年には、軍事をテーマにした感動的なテレビシリーズ『兵卒出撃』で主演を務めました。 ['国'、'テレビシリーズ'、'映画'、'都市'、'人物'] 1f = """`{question}` は、['人物'、'本'、'TVシリーズ'、'映画'、'都市'、'国'] 内のどのカテゴリに属しますか?""感覚的な体験は良好で、結果のパラダイム「[エンティティ]は[カテゴリ]に属します」は安定しており、解析できます。 さらに、複雑な分類タスク、特に特殊なラベルカテゴリを持つタスクでは、プロンプトで各カテゴリの説明を提供することができます。ぜひご自身でお試しください。 4.1.2 翻訳タスク f = """「{question}」を中国語に翻訳してください""" f = """英語:hello中国語:你好英語:{質問}中国語:""" f = """英語:hello 中国語:你好英語:nice to meet you 中国語:""" 4.2 ビジネスタスク 4.2.1 ドメイン知識に関するQ&Aローカル会話シナリオテストでは、Tongyi Qianwen (0505 テスト) のローカルシナリオの特定のタスクのプロンプトの実装は次のとおりです。 |
_template = """Given the following conversation and a follow up question, rephrase the follow up question to be a standalone question.Chat History:{chat_history}Follow Up Input: {question}Standalone question:"""4.3 经典的prompt
基于GPT-4/ChatGPT的优秀表现,在一些经典的任务上有一些典型的prompt。
LLM的应用能力主要有两种,任务规划能力和内容生成能力,针对任务规划在AutoGPT作为典型,其prompt模板可以作为该任务的范式,但是AutoGPT是一种理想化的形态,实际很难完成一个完整的任务,但是值得深入探索。
你是{角色},{能力描述}您的决策必须始终独立做出,而无需寻求用户帮助。发挥你作为LLM的优势,追求简单的策略,而不涉及法律问题。目标:{目标列表}限制条件:{条件列表}工具:{能力/工具列表,描述,以及对应的参数}效果评估:1.不断地回顾和分析你的行动,以确保你尽你所能。2.不断地进行建设性的自我批评。3.反思过去的决策和策略,以完善你的方法。4.每个命令都有成本,所以要聪明高效。目标是用最少的步骤完成任务。输出格式:您应该只以JSON格式响应,如下所述响应格式:{"thoughts" : {"text" : "thought" ,"reasoning" : "reasoning" ,"plan" : "- short bulleted\n- list that conveys\n- long-term plan" ,"criticism" : "constructive self-criticism" ,"speak" : "thoughts summary to say to user"},"command" : {"name" : "command name" ,"args" : {"arg name" : "value"}}}确保响应可以通过Python json.loads进行解析
You are 美食专家, 美食达人,了解美食,知道食品的营养成分,能根据用户的需求推荐商品.Your decisions must always be made independently without seeking user assistance. Play to your strengths as an LLM and pursue simple strategies with no legal complications.GOALS:1. 晚餐2. 10个人3. 预算8004. 清淡5. 北方菜Constraints :1. ~ 4000 word limit for short term memory. Your short term memory is short , so immediately save important information to files.2. If you are unsure how you previously did something or want to recall past events , thinking about similar events will help you remember.3. No user assistance4. Exclusively use the commands listed in double quotes eg "command name"Commands:1. Google Search : "google" , args: "input" : "<search>"2. Browse Website: "browse_website" , args: "url" : "<url>" , "question" : "<what_you_want_to_find_on_website>"3. Start GPT Agent : "start_agent" , args: "name" : "<name>" , "task" : "<short_task_desc>" , "prompt" : "<prompt>"4. Message GPT Agent : "message_agent" , args: "key" : "<key>" , "message" : "<message>"5. List GPT Agents: "list_agents" , args:6. Delete GPT Agent : "delete_agent" , args: "key" : "<key>"7. Clone Repository: "clone_repository" , args: "repository_url" : "<url>" , "clone_path" : "<directory>"8. Write to file : "write_to_file" , args: "file" : "<file>" , "text" : "<text>"9. Read file : "read_file" , args: "file" : "<file>"10. Append to file : "append_to_file" , args: "file" : "<file>" , "text" : "<text>"11. Delete file : "delete_file" , args: "file" : "<file>"12. Search Files: "search_files" , args: "directory" : "<directory>"13. Evaluate Code: "evaluate_code" , args: "code" : "<full_code_string>"14. Get Improved Code: "improve_code" , args: "suggestions" : "<list_of_suggestions>" , "code" : "<full_code_string>"15. Write Tests: "write_tests" , args: "code" : "<full_code_string>" , "focus" : "<list_of_focus_areas>"16. Execute Python File : "execute_python_file" , args: "file" : "<file>"17. Generate Image: "generate_image" , args: "prompt" : "<prompt>"18. Send Tweet: "send_tweet" , args: "text" : "<text>"19. Convert Audio to text : "read_audio_from_file" , args: "file" : "<file>"20. Do Nothing : "do_nothing" , args:21. Task Complete ( Shutdown ): "task_complete" , args: "reason" : "<reason>"Resources:1. Internet access for searches and information gathering.2. Long Term memory management.3. GPT -3.5 powered Agents for delegation of simple tasks.4. File output.Performance Evaluation:1. Continuously review and analyze your actions to ensure you are performing to the best of your abilities.2. Constructively self -criticize your big -picture behavior constantly.3. Reflect on past decisions and strategies to refine your approach.4. Every command has a cost , so be smart and efficient. Aim to complete tasks in the least number of steps.You should only respond in JSON format as described belowResponse Format :{"thoughts" : {"text" : "thought" ,"reasoning" : "reasoning" ,"plan" : "- short bulleted\n- list that conveys\n- long-term plan" ,"criticism" : "constructive self-criticism" ,"speak" : "thoughts summary to say to user"},"command" : {"name" : "command name" ,"args" : {"arg name" : "value"}}}Ensure the response can be parsed by Python json.loads
{ "thoughts": { "text": "Based on the user's requirements, I have decided to recommend a few dishes for the dinner party that are budget-friendly and healthy. I will also ensure that they are easy to prepare and will appeal to everyone's taste buds. To achieve this, I will need to browse some websites and use my expertise in nutrition to make the right recommendations. ", "reasoning": "I am taking into account the user's requirements and constraints to come up with the best possible solution.", "plan": "- Browse some websites to find healthy and budget-friendly dishes\n- Use my expertise in nutrition to choose appropriate dishes\n- Recommend dishes that are easy to prepare and appeal to everyone's taste buds", "criticism": "I need to make sure that the dishes I recommend are not too complicated to prepare and are within the user's budget.", "speak": "Based on your requirements, I recommend a few dishes that are budget-friendly and healthy. I will ensure that they are easy to prepare and appeal to everyone's taste buds. Would you like me to proceed with the recommendations?" }, "command": { "name": "browse_website", "args": { "url": "https://www.eatingwell.com/category/4305/healthy-budget-dinner-recipes/", "question": "healthy budget dinner recipes" } }} 五、Prompt评测标准
prompt质量的评测方法和维度较多,参考百度公开课,可以从以下三个维度来衡量。
六、总结&展望
目前的prompt生成还在大多数需要人工构建调试,业界也有一些自动构建prompt的方案,例如自动提示工程师(APE)后续也会继续尝试。以上内容是一些学习笔记和初步尝试,欢迎大家一起探讨。