これは、プログラミング用に ChatGPT プロンプトを最適化する方法に関する実践的なガイドです。ここでは、開発者が chatgpt プロンプトを最適化して一般的な問題を回避し、コード生成エクスペリエンスを向上させるのに役立つヒントとテクニックを提供することを目的としました。このガイドは、特に chat.openai.com サブスクリプションを使用しているユーザーを対象としており、3 時間あたり 25 メッセージを gpt4 用に最適化できます。
PromptMasterリポジトリへようこそ!このリポジトリの目的は、プログラミング タスク用の ChatGPT プロンプトを最適化するための実践的なガイダンスを開発者に提供することです。私たちは、よくある落とし穴を回避し、ChatGPT でのコード生成エクスペリエンスを向上させるのに役立つヒント、テクニック、ベスト プラクティスを共有することを目的としています。このリポジトリでは、一般的な開発ツールで ChatGPT を使用することと、AI モデルを最新の状態に保つことについても説明します。このリソースを可能な限り包括的で有用なものにするために、開発者コミュニティからの協力と貢献を奨励します。
ChatGPT から最良の結果を得るには、プロンプトを正しくフォーマットすることが重要です。プロンプトが明確、簡潔、具体的であることを確認してください。また、指示を別の行に配置したり、箇条書きを使用したりするなどの書式設定テクニックを使用して、わかりやすくすることもできます。
ChatGPT は、膨大な知識ベースを備えた強力な AI モデルです。その機能を最大限に活用してください。コンテキストを提供したり、特定のプログラミング言語、ライブラリ、またはフレームワークのコードを生成するようにモデルに依頼したりできます。さらに、実際のコードを生成する前に、モデルに段階的に考えるか、疑似コードを生成するように依頼できます。
すべての AI モデルと同様に、ChatGPT は完璧ではなく、潜在的な落とし穴やバイアスのあるコードを生成する可能性があることに注意してください。これらの問題を回避するには、次のことができます。
問題:生成されたコードが長すぎて途切れ、ChatGPT に停止したところから続行するように要求すると、コードを続行せずに最初からやり直します。これを防ぐには、次のいずれかを実行できます。
完璧なプロンプト:
ChatGPT, your answer got truncated. Please continue the previously generated code without repeating any part of it.
The last part of the previous code snippet was:
< Insert the last few lines of the generated code here >
Continue generating the remaining code from this point onwards, ensuring that the solution picks up where it left off and does not start over.
問題: ChatGPT がコード ブロック内ではなくプレーン テキストとしてコードを応答する場合があります。これにより、コードをコピーして開発環境に貼り付けるときに、インデント エラーや構文の問題が発生する可能性があります。これを回避するには、次のプロンプトを使用して、コード ブロック内のコードを明示的に要求します。
完璧なプロンプト:
ChatGPT, please provide a solution to the problem in a properly formatted Python code block. The problem is:
< Insert problem description here >
コード ブロックを明示的に要求すると、生成されたコードを正しい形式で受け取る可能性が高くなり、コードをコピーするときにインデントや構文エラーが発生する可能性が減ります。
問題: ChatGPT のナレッジ カットオフ日は 2021 年であるため、更新されたライブラリやフレームワーク、またはそれらに加えられた変更にアクセスできない可能性があります。したがって、馴染みのないライブラリやフレームワークに遭遇する可能性があります。
提案された解決策: ChatGPT が馴染みのないライブラリやフレームワークを理解し、適応できるようにするには、次のことができます。
-ライブラリまたはフレームワークの名前を指定します。 - ライブラリまたはフレームワークの目的を説明します。 -ライブラリまたはフレームワークの使用例を示します。 -使用する必要がある特定の機能やメソッドについて言及します。 - 最新の関連ドキュメントまたはリソースを含めます。
完璧なプロンプト:
ChatGPT, I need help with a problem using the <library/framework> version <version_number>, which is a <brief description of the library/framework>.
Here is a code snippet or documentation that demonstrates its usage:
< Insert code snippet or documentation link here >
Please provide a solution to the following problem, taking into account the updated version and any changes in the library/framework:
< Insert problem description here >
コンテキストと関連情報を提供することで、ChatGPT が更新されたライブラリまたはフレームワークを考慮した有用なソリューションを生成する可能性を高めることができます。
プロンプトの例:
ChatGPT, I am working on a project that requires the use of the Dask library in Python.
Dask is a library for parallel and distributed computing that allows processing of large datasets,
and provides support for computations on multi-dimensional arrays, data frames, and machine learning tasks.
I need to perform parallel computation on large datasets efficiently.
Specifically, I need to use Dask's DataFrame API to perform a groupby operation followed by aggregation.
Here are snippets of the latest documentation and resources:
- Dask documentation: https://docs.dask.org/en/latest/ < provide the snippets that has been updated and chatgpt might not be familair with >
Please provide a Python script that uses the Dask library to achieve the following tasks:
1 . Load a large dataset with millions of rows and columns.
2 . Perform a groupby operation based on a specific column.
3 . Aggregate the results using a sum operation.
4 . Output the resulting dataset.
問題: ChatGPT の出力を最適化するには、生成されたコードに特定の制約または要件を提供すると役立つ場合があります。たとえば、速度やメモリ使用量が懸念される場合は、この情報をプロンプトに含めて、ChatGPT が出力を最適化できるようにすることができます。
ChatGPT の出力を最適化するには、生成されたコードに特定の制約または要件を指定します。これには、プログラミング言語、データ型、速度またはメモリ使用量、並べ替え順序、またはその他の関連する制約に関する情報が含まれる場合があります。
完璧なプロンプト:
ChatGPT, I need help generating code that meets the following constraints and requirements:
- < Insert constraint or requirement >
- < Insert constraint or requirement >
- < Insert constraint or requirement >
- < Insert constraint or requirement >
- < Insert constraint or requirement >
Can you help me generate code that meets these requirements?
プロンプトの例:
"ChatGPT, I need to generate a C++ program that sorts a large array of integers, but the program needs to meet the following constraints:
- The program needs to be optimized for speed and should be able to handle large arrays efficiently.
- The program should be memory-efficient and should use a sorting algorithm that minimizes memory usage.
- The program should be able to handle both ascending and descending sorts and should allow the user to specify the sorting order.
- The program should be able to handle arrays with duplicate values and should sort them in a stable manner.
- The program should be easy to read and maintain, with clear variable names and comments.
Can you help me write a C++ program that meets these requirements?"
問題: ChatGPT は貴重な相棒ですが、完璧な開発者ではありません。 ChatGPT にコードの生成やコードのヘルプを依頼する場合は、エラーを見つけて対処しやすくするために、十分なエラー処理と防御的プログラミングを確保することが重要です。防御的プログラミング手法とエラー処理を含むコードを生成するには、プロンプトで処理する必要がある潜在的なエラーまたはエッジ ケースに関するコンテキストと情報を提供できます。後のデバッグ中にエラーを特定しやすくするために、ChatGPT に、発生したエラーを出力する print ステートメントと、入力検証、try-excel ブロック、ログ記録などの防御的なプログラミング構造を追加するように依頼できます。
完璧なプロンプト:
ChatGPT, I need a Python script that < describes the task >.
Please ensure that the code is robust and implements defensive programming techniques, such as input validation, error handling,
and appropriate exception handling with print statements to output any errors that occur.
The script should:
< list the specific tasks or requirements of the script >
パーフェクト プロンプトの使用前と使用後の例:
前に:
def process_data(data):
result = data_processing_function(data)
return result
data = input("Enter the data: ")
result = process_data(data)
print("The processed data is:", result)
完璧なプロンプトを使用した後:
ChatGPT, I need a Python script that takes user input for data, processes it using a custom 'data_processing_function', and prints the result.
Please ensure that the code is robust and implements defensive programming techniques,
such as input validation, error handling, and appropriate exception handling with print statements to output any errors that occur.
生成されたコード:
def validate_input(data):
# Implement validation logic according to your requirements
return True
def process_data(data):
try:
if not validate_input(data):
raise ValueError("Invalid input data")
result = data_processing_function(data)
return result
except ValueError as ve:
print("Error: Invalid input data:", ve)
return None
except Exception as e:
print("Error:", e)
return None
data = input("Enter the data: ")
result = process_data(data)
if result is not None:
print("The processed data is:", result)
else:
print("An error occurred during data processing.")
完璧なプロンプトを使用することで、ChatGPT はエラー処理と防御的プログラミングを含むコードを生成し、デバッグと保守が容易になります。
問題点:プロジェクトで ChatGPT を使用する場合、要件をすでにインストールし、関連する API をセットアップしていることを ChatGPT に知らせることが重要です。これにより、ChatGPT はその応答であなたがすでに行ったことを説明することを避け、特定のニーズに合わせて出力を調整することができます。 ChatGPT の出力を最適化するために、プロンプトでプロジェクト ディクショナリと関連 API を提供できます。これは、生成する必要があるコードのコンテキストと目的を ChatGPT が理解するのに役立ちます。
完璧なプロンプト:
ChatGPT, I am working on a project that involves < project description >.
I have already set up the required libraries, APIs, and dependencies. My project's structure looks like this:
< Describe your project structure here >
Please help me with the following task, taking into consideration the existing setup:
< Insert task description here >
パーフェクト プロンプトの使用前と使用後の例:
前に:
ChatGPT, I want to create a Telegram bot to track ERC20 tokens.
ChatGPT 応答 (前):
ERC20 トークンを追跡する Telegram ボットを作成するには、次のことを行う必要があります。
BotFather と会話して、Telegram に新しいボットをセットアップします。ボット API トークンを取得します。 python-telegram-bot ライブラリをインストールします。 Ethereum ブロックチェーンと通信するようにボットを構成します。
完璧なプロンプトを使用する:
ChatGPT, I am working on a project that involves creating a Telegram bot to track ERC20 tokens.
I have already set up the required libraries (python-telegram-bot), created a bot on Telegram, and obtained an API token.
My project's structure looks like this:
- main.py < share code >
- config.py (API token stored here)
- erc20_tracker.py < share code >
Please help me with the following task, taking into consideration the existing setup:
Implement the functionality in the erc20_tracker.py file to track ERC20 tokens.
生成されたコード (後):
import requests
from config import TELEGRAM_API_TOKEN
def get_erc20_balance(address, contract_address):
# Implement the function to get the balance of ERC20 tokens for a given address
def track_erc20_tokens(update, context):
# Implement the function to track ERC20 tokens using the Telegram bot
if __ name __ == " __ main __ ":
from telegram.ext import Updater, CommandHandler
updater = Updater(token=TELEGRAM_API_TOKEN, use_context=True)
dispatcher = updater.dispatcher
dispatcher.add_handler(CommandHandler("track", track_erc20_tokens))
updater.start_polling()
updater.idle()
プロジェクト ディクショナリと前提条件情報を提供することにより、ChatGPT は既存のセットアップを考慮して、特定のニーズに合わせたコードを生成します。
問題:コードを生成するときに、ChatGPT にプロジェクト内に既に存在する冗長または不要なインポートが含まれる場合があり、生成されたコードが乱雑になったり繰り返しが発生したりすることがあります。これを防ぐには、生成されたコード内のインポート ステートメントを省略し、必要な特定の機能に焦点を当てるように ChatGPT に指示できます。
完璧なプロンプト:
ChatGPT, I am working on a project that involves < project description >.
I have already imported all the required libraries and dependencies in my project.
Please help me with the following task, but do not include any import statements in the generated code:
< Insert task description here >
問題: ChatGPT にコードに関するヘルプを求めるとき、コード全体を書き直すのではなく、コードの特定の部分に対する提案された変更または改善のみを受け取りたい場合があります。これを達成するには、次のことができます。
- 改善または変更が必要なコードの正確な部分を指定します。 -コード全体を書き直すのではなく、ChatGPT に変更の概要を説明してもらいます。
完璧なプロンプト:
ChatGPT, I have a piece of code that I think can be improved or modified in some way.
I would like you to provide suggestions for changes or improvements to only the following specific part(s) of the code:
<Insert the specific part(s) of your code here>
Please provide a high-level description of the changes you suggest, without rewriting the whole code from the beginning.
問題: ChatGPT にコードに関するヘルプを求めるとき、元のヘッダーと関数をそのまま維持しながら、編集または改良されたセクションのみを生成コードに含めたい場合があります。さらに、コード内の編集されたセクションの配置 (どの行の後とどの行の前) を ChatGPT に表示したい場合があります。これを実現するには、編集が必要な特定のセクションとそれらの編集の望ましい配置について、ChatGPT に明確な指示を提供できます。
完璧なプロンプト:
ChatGPT, I have a piece of code that I think can be improved or modified in some way.
I would like you to provide suggestions for changes or improvements to only the following specific part(s) of the code:
<Insert the specific part(s) of your code here>
Please generate only the edited sections of the code while keeping the original headers and functions intact.
Also, indicate the placement of the edited sections by specifying after which line and before which line the changes should be inserted in the existing code.
例 (前):
def load_data(file_path):
# Load data from a file
pass
def process_data(data):
# Process the data
pass
def save_data(data, file_path):
# Save the processed data to a file
pass
完璧なプロンプトを使用する:
ChatGPT, I have a piece of code that I think can be improved or modified in some way.
I would like you to provide suggestions for changes or improvements to only the following specific part(s) of the code:
def process_data(data):
# Process the data
pass
Please generate only the edited sections of the code while keeping the original headers and functions intact.
Also, indicate the placement of the edited sections by specifying after which line and before which line the changes should be inserted in the existing code.
生成されたコード (後):
Edited section:
Replace the pass statement in the process_data function with the following lines
Place after line: 5
Place before line: 6
data = data.upper()
result = data.strip()
ChatGPT は、完璧なプロンプトを使用することで、コードの編集されたセクションのみを生成し、既存のコード内のどこに変更を加えるかについて明確な指示を提供します。
問題:長く複雑なコードを扱う場合、特定のセクションをすばやく見つけて参照することが難しい場合があります。コメントを追加してコードをセクションに分割すると、ナビゲーションが改善され、ChatGPT に支援を求めるときに特定の部分を参照しやすくなります。
- コメントを使用してコードをセクションに分割し、各部分にわかりやすい識別子 (#Part 1、#Part 2 など) のラベルを付けます。 - ChatGPT にヘルプを求めるときは、そのラベルで特定の部分を直接参照できます。これにより、あなたと ChatGPT の両方が関連するセクションに集中しやすくなります。
完璧なプロンプト:
ChatGPT, I have a piece of code that is divided into sections using comments. Here is a brief overview of the sections:
#Part 1: <Description of Part 1>
#Part 2: <Description of Part 2>
...
#Part N: < Description of Part N >
I would like you to provide suggestions or assistance for the following part(s) of the code:
<Specify which part(s) you want ChatGPT to focus on>
Please provide your suggestions or assistance with reference to the specified part(s) without rewriting the whole code from the beginning.
問題: ChatGPT の知識は 2021 年 9 月までの情報に限定されているため、それ以降に発生したライブラリの更新や変更を認識していない可能性があります。新しいライブラリまたは更新されたバージョンに関するサポートを求める場合は、ChatGPT に状況を通知し、関連するコードとドキュメントのスニペットを提供することが重要です。
- ChatGPT の知識限界を超えて更新されたライブラリまたは特定のバージョンを使用していることを明確に述べてください。 - コードを共有し、更新されたリソースに関連するドキュメント スニペットを含めて、ChatGPT がコンテキストを理解し、より正確な支援を提供できるようにします。
完璧なプロンプト:
ChatGPT, I am working with a library (or a specific version of a library) that has been updated since your knowledge cutoff in September 2021.
I understand that you may not be aware of the changes, so I will provide you with the relevant code and some documentation snippets to help you assist me.
Here's my code:
< Your code here >
Here are the documentation snippets related to the library or the specific version I am using:
< Documentation snippet >
Considering the provided code and documentation, could you please help me with the following issue(s) or question(s):
<Specify your issue(s) or question(s)>
問題: ChatGPT はユーザー定義の関数やメソッドに慣れていない可能性があり、コードについて議論するときにコンテキストを理解することが困難です。
- 目的、入力、出力、関連する実装の詳細など、カスタム関数またはメソッドに関する詳細を提供します。これは、ChatGPT がより適切な支援と推奨事項を提供するのに役立ちます。
完璧なプロンプト:
I have a custom function called function_name(arguments), which performs a specific task.
The function takes these arguments: arg1 (type), arg2 (type), and so on. It returns the result of the operation as a specific type.
Can you suggest improvements or potential issues with this function?
問題ユーザーは、コードを最適化したり、コードをより簡潔にしたりするための支援を必要とする場合があります。
-ChatGPT にコードの効率や簡潔さを改善する方法についての提案を求め、具体的な懸念や制約があればそれを提供してください。
完璧なプロンプト:
I have a piece of code that performs a specific task, but I'd like to make it more efficient or concise.
Here's my current implementation:
def function_name(arguments):
< Your code here >
Can you suggest an alternative way to implement this functionality?
問題: ChatGPT は特定のデータベースまたはデータセット構造にアクセスできない可能性があり、関連するガイダンスを提供する機能が妨げられる可能性があります。
- ChatGPT がクエリをより深く理解し、適切なガイダンスを提供できるように、テーブル、列、データ型、テーブルまたはデータ ポイント間の関係に関する情報を含む、データベースまたはデータセット構造のスニペットを共有します。 - 一般的なプロンプトの例を開始点として使用し、特定の状況に合わせて調整します。
完璧なプロンプト:
I'm working with a database or dataset that has the following structure:
(provide information on tables, columns, data types, and relationships).
Can you help me with a query or data manipulation task related to this structure?
heres the first 10 rows in my dataset_1.csv
... paste here
例:
I'm working with a database that has the following structure:
Table orders: order_id (integer), customer_id (integer), order_date (date), total_amount (float)
Table customers: customer_id (integer), customer_name (varchar), email (varchar)
The tables are related by the customer_id field.
Sample data (first 10 lines):
orders:
1, 1, 2023-01-01, 100.00
2, 2, 2023-01-02, 150.00
3, 3, 2023-01-02, 200.00
customers:
1, Alice, [email protected]
2, Bob, [email protected]
3, Carol, [email protected]
I want to retrieve a list of all orders with the customer's name and email.
Can you help me write a SQL query for this task?
問題: chatgpt が提供するコード回答が機能せず、行き詰まって固定されてしまうことがあります。この場合、chatgpt に代替ソリューションまたは問題を解決するためのアプローチのリストを尋ねて、特定のニーズと制約に基づいて最適なオプションを選択できるようにします。
完璧なプロンプト:
I need help solving a specific problem in my code, but I'm looking for multiple alternative solutions or approaches.
Can you provide a list of different ways to solve this problem, considering my specific needs and constraints?
Here's my code:
< Your code here >
問題:ユーザーは、会話形式で管理するのが難しい、長いコード スニペットや複数のファイルについて支援を必要とする場合があります。
- 複数のファイル、または複数のメッセージにまたがって送信される長いファイルを共有することを chatgpt に通知します。 -chatgpt にすべてのメッセージを理解し、メモし、追跡するよう依頼し、共有が終了したら通知してから質問することを伝えます。 - 理解していると返答するように依頼します。コードまたはファイルを ChatGPT と共有し、どのファイルとどの部分を共有しているかに関する詳細を ChatGPT にできるだけ多く提供します。
完璧なプロンプト:
I will be sharing multiple files or long files that span across more than one message.
Please understand, keep note of, and track all the messages.
I will inform you when I finish sharing the files, and then I will ask my questions.
Please respond back that you understand.
<Share the code or files with ChatGPT sequentially or as needed, providing as many details as possible about which files you are sharing and which parts they pertain to.>
IDE / ツール | 拡張機能/プラグイン名 | 説明 |
---|---|---|
Visual Studioコード | VSCode 用 ChatGPT 拡張機能 | 非公式 ChatGPT API を使用して、エディター内で OpenAI の ChatGPT からの自然言語応答を生成できます。 |
Visual Studioコード | AI ジーニー | Visual Studio Code 内で OpenAI の GPT-4、GPT-3.5、GPT-3、および Codex モデルにプロンプトを表示します。 |
Visual Studioコード | タブナイン | ChatGPT ではありませんが、TabNine は AI を活用した強力なコード補完ツールです。 |
ジュピターノートブック | Chat-GPT Jupyter 拡張機能 | コード生成と提案のために ChatGPT を Jupyter Notebook に統合します。 |
インテリJアイデア | ChatGPT IntelliJ プラグイン | コード生成、オートコンプリート、支援のために ChatGPT を IntelliJ IDEA に統合します。 |
このガイドがコード生成のための ChatGPT のエクスペリエンスを向上させるのに役立つことを願っています。 ChatGPT が進化するにつれて、ChatGPT を使用するためのベスト プラクティスも進化します。ご提案、追加したい貢献、フィードバックがある場合は、お気軽にこのガイドの GitHub リポジトリにプル リクエストを送信してください。コーディングとプロンプトを楽しんでください。 <3