ホームページ バックエンド開発 Python チュートリアル 迅速なエンジニアリング (怠惰なプログラマー向け): 必要なコードを正確に取得 (さらに ChatGPT から)

迅速なエンジニアリング (怠惰なプログラマー向け): 必要なコードを正確に取得 (さらに ChatGPT から)

Oct 31, 2024 pm 12:03 PM

Prompt Engineering (For Lazy Programmers): Getting Exactly the Code You Want (and Even More, Out of ChatGPT)

ビル・ゲイツはすべてを言いました...怠惰なプログラマーになりなさい!

プログラマにとって、バグや無限のデバッグがなく、すぐに機能するコードほど優れたものはありません。特定のプロンプト手法に従うことで、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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Python vs. C:比較されたアプリケーションとユースケース Python vs. C:比較されたアプリケーションとユースケース Apr 12, 2025 am 12:01 AM

Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

2時間のPython計画:現実的なアプローチ 2時間のPython計画:現実的なアプローチ Apr 11, 2025 am 12:04 AM

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

Python:ゲーム、GUIなど Python:ゲーム、GUIなど Apr 13, 2025 am 12:14 AM

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

2時間でどのくらいのPythonを学ぶことができますか? 2時間でどのくらいのPythonを学ぶことができますか? Apr 09, 2025 pm 04:33 PM

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

Python vs. C:曲線と使いやすさの学習 Python vs. C:曲線と使いやすさの学習 Apr 19, 2025 am 12:20 AM

Pythonは学習と使用が簡単ですが、Cはより強力ですが複雑です。 1。Python構文は簡潔で初心者に適しています。動的なタイピングと自動メモリ管理により、使いやすくなりますが、ランタイムエラーを引き起こす可能性があります。 2.Cは、高性能アプリケーションに適した低レベルの制御と高度な機能を提供しますが、学習しきい値が高く、手動メモリとタイプの安全管理が必要です。

Pythonと時間:勉強時間を最大限に活用する Pythonと時間:勉強時間を最大限に活用する Apr 14, 2025 am 12:02 AM

限られた時間でPythonの学習効率を最大化するには、PythonのDateTime、時間、およびスケジュールモジュールを使用できます。 1. DateTimeモジュールは、学習時間を記録および計画するために使用されます。 2。時間モジュールは、勉強と休息の時間を設定するのに役立ちます。 3.スケジュールモジュールは、毎週の学習タスクを自動的に配置します。

Python:主要なアプリケーションの調査 Python:主要なアプリケーションの調査 Apr 10, 2025 am 09:41 AM

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

Python:自動化、スクリプト、およびタスク管理 Python:自動化、スクリプト、およびタスク管理 Apr 16, 2025 am 12:14 AM

Pythonは、自動化、スクリプト、およびタスク管理に優れています。 1)自動化:OSやShutilなどの標準ライブラリを介してファイルバックアップが実現されます。 2)スクリプトの書き込み:Psutilライブラリを使用してシステムリソースを監視します。 3)タスク管理:スケジュールライブラリを使用してタスクをスケジュールします。 Pythonの使いやすさと豊富なライブラリサポートにより、これらの分野で優先ツールになります。

See all articles