首頁  >  文章  >  後端開發  >  快速工程(針對懶惰程式設計師):準確取得您想要的程式碼(甚至更多,從 ChatGPT 取得)

快速工程(針對懶惰程式設計師):準確取得您想要的程式碼(甚至更多,從 ChatGPT 取得)

Linda Hamilton
Linda Hamilton原創
2024-10-31 12:03:02343瀏覽

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))
  • 基本提示中的第一個功能建立一個簡單的使用者設定檔。

  • 第二個提示建立一個連接資料庫的使用者設定檔管理器,具有用於保存資料的擴充功能。

請求調試模式以獲得無錯誤代碼

您可以要求 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 編寫一個完整的測試套件,並使用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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn