ビル・ゲイツはすべてを言いました...怠惰なプログラマーになりなさい!
プログラマにとって、バグや無限のデバッグがなく、すぐに機能するコードほど優れたものはありません。特定のプロンプト手法に従うことで、ChatGPT でコードだけでなく、エッジ ケース、テスト、さらにはパフォーマンスの最適化までを備えた、最適化され、完全に機能し、文書化されたコードを作成できるようになります。
でもその前に...
人工知能、特に ChatGPT は、コンテンツ作成、コーディング支援、複雑な質問への回答のための強力なツールとなっています。しかし、多くの人はその可能性を最大限に活用できていません。魔法は、リクエストをどのように表現するか、つまりプロンプトエンジニアリングと呼ばれるものにあります。この記事では、ChatGPT のエクスペリエンスをより実りあるものにするためのテクニックを探り、ソフトウェア プログラマーとしてのプロンプトを平均的なものから素晴らしいものに変えるためのいくつかのトリックに焦点を当てます。
ChatGPT は膨大な量のデータに基づいてトレーニングされますが、その応答はユーザーが与えるプロンプトの質によって決まります。言葉遣いが不十分または曖昧なプロンプトは、無関係または一般的な回答につながる可能性があります。逆に、適切に構成されたプロンプトは、思慮深く、正確で、創造的な応答を生み出すことができます。
このガイドは、怠惰なプログラマー (私のような?) が、プロンプト エンジニアリングを使用して、ChatGPT から高品質で最適化されたさらに機能的なコードを取得するのに役立ちます。これらは、コード生成の自動化、コードの改善、さらには最適化やテストの提案といった重労働を、もっぱら ChatGPT に行わせることになります。以下には、通常のプロンプトと最適化されたプロンプト、およびそれらが生成する結果を比較する例も含まれています。
それでは、始めましょう!
ChatGPT にトリガーを埋め込んで応答を自動的に調整し、非効率性を特定したり、最適化を提案したり、機能を追加したりするように依頼します。
基本プロンプト: 「文字列を反転する Python 関数を作成します。」
def reverse_string(s): return s[::-1] # Example usage: print(reverse_string("hello")) # Output: "olleh"
最適化されたプロンプト: 「文字列を反転する Python 関数を作成します。入力が大きすぎるか非効率な場合は、大きな文字列を効率的に処理するためのより良い方法を提案してください。」
def reverse_string(s): return s[::-1] # Trigger: Refining for large strings def reverse_large_string(s): # Handle large strings in chunks for efficiency chunk_size = 100000 # Process in 100k chunks return ''.join(s[i:i+chunk_size][::-1] for i in range(0, len(s), chunk_size)) # Example usage: large_string = "a" * 1000000 # 1 million characters print(reverse_large_string(large_string))
基本的な関数はシンプルで、小さな入力で動作します。
最適化では、メモリをあまり消費せずに大きな文字列を元に戻すための効率的なチャンクベースのソリューションが導入されています。
複数ステップのプロジェクトのコードが必要な場合、ChatGPT は以前のステップを記憶できます。これは、あるレイヤーを別のレイヤーの上に構築する、より複雑なワークフローに最適です。
基本プロンプト: 「ユーザー プロファイルを作成する Python 関数を作成します。」
def reverse_string(s): return s[::-1] # Example usage: print(reverse_string("hello")) # Output: "olleh"
最適化されたプロンプト: 「ユーザー プロファイルを作成する Python 関数を作成します。次に、これを拡張してユーザー設定も保存し、データベースに接続してプロファイルを保存します。」
def reverse_string(s): return s[::-1] # Trigger: Refining for large strings def reverse_large_string(s): # Handle large strings in chunks for efficiency chunk_size = 100000 # Process in 100k chunks return ''.join(s[i:i+chunk_size][::-1] for i in range(0, len(s), chunk_size)) # Example usage: large_string = "a" * 1000000 # 1 million characters print(reverse_large_string(large_string))
基本プロンプトの最初の関数は、単純なユーザー プロファイルを作成します。
2 番目のプロンプトは、データを保存するための拡張機能を備えた、データベースに接続されたユーザー プロファイル マネージャーを作成します。
ChatGPT がデバッグ モードで実行されているかのように動作するように依頼でき、最終出力を提供する前にコード内の潜在的な問題をチェックして修正します。
簡単なプロンプトの例: 「数値の平方根を計算する Python 関数を作成します。」
def create_user_profile(name, age, email): return {"name": name, "age": age, "email": email} # Example usage: user_profile = create_user_profile("Alice", 30, "alice@example.com") print(user_profile)
トリック: 「数値の平方根を計算する Python 関数を作成します。デバッグ モードをアクティブにして負の入力などのエラーをチェックし、必要に応じて関数を書き直します。」
def create_user_profile(name, age, email, preferences): return {"name": name, "age": age, "email": email, "preferences": preferences} # Extend with a database connection import sqlite3 def save_user_profile(profile): conn = sqlite3.connect('users.db') cursor = conn.cursor() cursor.execute('''CREATE TABLE IF NOT EXISTS users (name TEXT, age INTEGER, email TEXT, preferences TEXT)''') cursor.execute('''INSERT INTO users (name, age, email, preferences) VALUES (?, ?, ?, ?)''', (profile['name'], profile['age'], profile['email'], str(profile['preferences']))) conn.commit() conn.close() # Example usage: user_profile = create_user_profile("Alice", 30, "alice@example.com", {"theme": "dark"}) save_user_profile(user_profile)
基本関数は有効な入力に対しては正常に動作しますが、負の数値の場合はクラッシュします。
最適化されたプロンプトにより、負の入力に対するエラー処理が保証され、コードを壊す代わりにカスタム メッセージが返されます。
ChatGPT に上級コード レビューアーとしてのロールプレイを依頼して、フィードバックを提供し、コードのベスト プラクティスを提案することができます。
プロンプトの例: 「上級開発者として、数値が素数かどうかをチェックする Python 関数をレビューしてください。パフォーマンスと読みやすさの改善を提案してください。」
import math def square_root(n): return math.sqrt(n) # Example usage: print(square_root(16)) # Output: 4.0
プロンプトはより最適化されたバージョンを提供し、平方根までの奇数のみをチェックするため、パフォーマンスが大幅に向上します。
単一のプロンプトで機能の層を積み重ねて、ChatGPT に複数の関連タスクを一度に処理させることができます。
基本プロンプト: 「ランダムなパスワードを生成する Python 関数を作成します。」
import math def square_root(n): if n < 0: return "Error: Cannot calculate square root of a negative number" return math.sqrt(n) # Debugged version handles errors properly. # Example usage: print(square_root(16)) # Output: 4.0 print(square_root(-16)) # Output: "Error: Cannot calculate square root of a negative number"
最適化バージョン : "ランダムなパスワードを生成する Python 関数を作成します。パスワードは次の条件を満たす必要があります: 少なくとも 12 文字で、大文字、小文字、数字、特殊文字が含まれています。また、次のように記述します。パスワードが強力かどうかをチェックする検証関数。"
def is_prime(n): if n <= 1: return False if n == 2: return True if n % 2 == 0: return False # Only check odd numbers up to the square root of n for efficiency for i in range(3, int(n**0.5) + 1, 2): if n % i == 0: return False return True # Review: # - Optimised the loop to check divisibility only up to the square root of n. # - Reduced checks for even numbers to improve performance for large inputs. # Example usage: print(is_prime(5)) # Output: True print(is_prime(4)) # Output: False
基本的なプロンプトはランダムなパスワードを生成します。
最適化されたものでは、複雑なパスワード生成機能が提供され、パスワードの強度をチェックする検証機能が含まれています。
ChatGPT に完全なテスト スイートとともにコードを一度に作成するよう依頼することができ、最小限の労力でコードを本番環境で使用できるようにすることができます。 (助けを求めなければならない場合は、必ずたくさん助けを求めてください?)。
基本プロンプト: 「文字列が回文であるかどうかを確認する Python 関数を作成します。」
def reverse_string(s): return s[::-1] # Example usage: print(reverse_string("hello")) # Output: "olleh"
さらに詳しく: 「文字列が回文であるかどうかをチェックする Python 関数を作成します。また、空の文字列やスペースなどのエッジ ケースを含む pytest を使用して完全なテスト スイートを作成します。」
def reverse_string(s): return s[::-1] # Trigger: Refining for large strings def reverse_large_string(s): # Handle large strings in chunks for efficiency chunk_size = 100000 # Process in 100k chunks return ''.join(s[i:i+chunk_size][::-1] for i in range(0, len(s), chunk_size)) # Example usage: large_string = "a" * 1000000 # 1 million characters print(reverse_large_string(large_string))
基本バージョンは回文をチェックしますが、エッジケースは見逃します。
この隠されたトリックは、スペースや句読点を無視して関数を改良するだけでなく、pytest を使用した包括的なテスト スイートも提供します。
これらのテクニックをマスターすると、作業量を減らしながら、高パフォーマンスでエラーがなく、実稼働環境にすぐに使えるコードを ChatGPT から抽出できます。自動絞り込み、メモリ トリガー、エラー処理、完全なテスト スイートにより、難しいコードではなく、よりスマートなコードを作成できます。
以上が迅速なエンジニアリング (怠惰なプログラマー向け): 必要なコードを正確に取得 (さらに ChatGPT から)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。