ビル・ゲイツはすべてを言いました...怠惰なプログラマーになりなさい!.
プログラマーにとって、バグや無限のデバッグがなく、すぐに機能するコードほど優れたものはありません。特定のプロンプト手法に従うことで、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 create_user_profile(name, age, email): return {"name": name, "age": age, "email": email} # Example usage: user_profile = create_user_profile("Alice", 30, "[email protected]") 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, "[email protected]", {"theme": "dark"}) save_user_profile(user_profile)
基本プロンプトの最初の関数は、単純なユーザー プロファイルを作成します。
2 番目のプロンプトは、データを保存するための拡張機能を備えた、データベースに接続されたユーザー プロファイル マネージャーを作成します。
ChatGPT がデバッグ モードで実行されているかのように動作するように依頼でき、最終出力を提供する前にコード内の潜在的な問題をチェックして修正します。
簡単なプロンプトの例: 「数値の平方根を計算する Python 関数を作成します。」
import math def square_root(n): return math.sqrt(n) # Example usage: print(square_root(16)) # Output: 4.0
トリック: 「数値の平方根を計算する Python 関数を作成します。デバッグ モードをアクティブにして負の入力などのエラーをチェックし、必要に応じて関数を書き直します。」
import math def square_root(n): if n
基本関数は有効な入力に対しては正常に動作しますが、負の数値の場合はクラッシュします。
最適化されたプロンプトにより、負の入力に対するエラー処理が保証され、コードを壊す代わりにカスタム メッセージが返されます。
ChatGPT に上級コード レビューアーとしてのロールプレイを依頼して、フィードバックを提供し、コードのベスト プラクティスを提案することができます。
プロンプトの例: 「上級開発者として、数値が素数かどうかをチェックする Python 関数をレビューしてください。パフォーマンスと読みやすさの改善を提案してください。」
def is_prime(n): if nプロンプトはより最適化されたバージョンを提供し、平方根までの奇数のみをチェックするため、パフォーマンスが大幅に向上します。
多機能出力に階層化プロンプトを使用する
単一のプロンプトに機能の層を積み重ねて、ChatGPT に複数の関連タスクを一度に処理させることができます。
基本プロンプト: "ランダムなパスワードを生成する Python 関数を作成します。"
import random import string def generate_password(length): return ''.join(random.choices(string.ascii_letters string.digits, k=length)) # Example usage: print(generate_password(10)) # Output: Random 10-character password最適化バージョン : "ランダムなパスワードを生成する Python 関数を作成します。パスワードは次の条件を満たす必要があります: 少なくとも 12 文字で、大文字、小文字、数字、特殊文字が含まれています。また、次のように記述します。パスワードが強力かどうかをチェックする検証関数。"
import random import string import re def generate_password(length): characters = string.ascii_letters string.digits string.punctuation password = ''.join(random.choices(characters, k=length)) return password def validate_password(password): # Check length if len(password)
基本的なプロンプトはランダムなパスワードを生成します。
最適化されたものでは、複雑なパスワード生成機能が提供され、パスワードの強度をチェックする検証機能が含まれています。
ChatGPT に完全なテスト スイートと一緒にコードを一度に作成するよう依頼することができ、最小限の労力でコードを本番環境で使用できるようにすることができます。 (助けを求めなければならない場合は、必ずたくさんお願いしてください?).
基本プロンプト: "文字列が回文かどうかをチェックする Python 関数を作成します。"
def is_palindrome(s): return s == s[::-1] # Example usage: print(is_palindrome("madam")) # Output: True print(is_palindrome("hello")) # Output: False
さらに詳しく: "文字列が回文であるかどうかをチェックする Python 関数を作成します。また、空の文字列やスペースなどのエッジ ケースを含む pytest を使用して完全なテスト スイートを作成します。"
def is_palindrome(s): s = ''.join(c.lower() for c in s if c.isalnum()) # Remove non-alphanumeric characters return s == s[::-1] # Test suite def test_is_palindrome(): assert is_palindrome("madam") == True assert is_palindrome("hello") == False assert is_palindrome("A man, a plan, a canal, Panama") == True assert is_palindrome("") == True # Edge case: empty string assert is_palindrome(" ") == True # Edge case: only spaces # Example usage: print(is_palindrome("A man, a plan, a canal, Panama")) # Output: True
基本バージョンでは回文がチェックされますが、特殊なケースは見逃されます。
この隠されたトリックは、スペースと句読点を無視することで関数を改良するだけでなく、pytest.
これらのテクニックをマスターすると、作業量を減らしながら、高パフォーマンスでエラーがなく、実稼働環境にすぐに使えるコードを ChatGPT から抽出できます。自動絞り込み、メモリ トリガー、エラー処理、完全なテスト スイートにより、難しいコードではなく、よりスマートなコードを作成できるようになります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3