"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 신속한 엔지니어링(게으른 프로그래머용): 정확히 원하는 코드 얻기(그리고 ChatGPT에서 더 나아가)

신속한 엔지니어링(게으른 프로그래머용): 정확히 원하는 코드 얻기(그리고 ChatGPT에서 더 나아가)

2024-11-08에 게시됨
검색:609

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 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)

  • 기본 프롬프트의 첫 번째 기능은 간단한 사용자 프로필을 생성합니다.

  • 두 번째 프롬프트는 데이터 저장을 위한 확장 기능을 갖춘 데이터베이스 연결 사용자 프로필 관리자를 생성합니다.

오류 없는 코드를 위한 디버그 모드 요청

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에서 오류가 없는 고성능 코드를 추출할 수 있습니다. 자동 구체화, 메모리 트리거, 오류 처리 및 완전한 테스트 모음을 통해 코딩을 더 똑똑하고 어렵지 않게 수행할 수 있습니다.

릴리스 선언문 이 기사는 https://dev.to/jamesbright/prompt-engineering-for-lazy-programmers-getting-exactly-the-code-you-want-and-even-more-out-of-chatgpt-에서 재현됩니다. 3plf? 1침해 내용이 있는 경우, [email protected]으로 연락하여 삭제해 주시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3