> 웹 프론트엔드 > JS 튜토리얼 > 효과적인 프롬프트 엔지니어링을 위한 기법

효과적인 프롬프트 엔지니어링을 위한 기법

Susan Sarandon
풀어 주다: 2025-01-06 16:35:39
원래의
866명이 탐색했습니다.
echniques for Effective Prompt Engineering본드는 구성 요소를 자세히 설명하여 우수한 음료를 보장합니다. 마찬가지로, LLM(대형 언어 모델)과 상호 작용할 때 프롬프트의 특이성과 명확성이 출력 품질을 결정합니다.

신속한 엔지니어링으로 알려진 이 프로세스는 AI 시스템에서 정확하고 관련성 있는 응답을 얻는 데 필수적입니다.

프롬프트 엔지니어링이란?

신속한 엔지니어링에는 LLM 응답을 최적화하기 위한 정확한 지침을 만드는 것이 포함됩니다. 입력 프롬프트가 더 자세하고 구체적일수록 귀하의 요구에 더 관련성이 높고 정렬된 결과가 나올 것입니다.

예:

LLM에게 "프롬프트 엔지니어링 요약"이라고 묻는다면 대답이 모호할 수 있습니다. 그러나 다음과 같이 요청을 지정하면 됩니다.

프롬프트: "기술 지식이 없는 사용자를 대상으로 프롬프트 엔지니어링에 대해 100단어 요약을 제공합니다."

이제 LLM은 청중에 맞는 간결한 답변을 제공하도록 안내됩니다. 출력:

"프롬프트 엔지니어링은 최상의 결과를 얻기 위해 ChatGPT와 같은 AI 시스템에 대한 효과적인 지침을 작성하는 것입니다. 여기에는 구체적이고, 컨텍스트를 제공하고, 복잡한 질문을 세분화하는 것이 포함됩니다. 형식을 지정하고, 예를 제공하거나, 경계를 설정함으로써 프롬프트 엔지니어링은 고객과의 명확한 커뮤니케이션을 보장합니다. AI 비서."

특정 출력을 요청하는 이 방법은 원하는 정확한 결과를 얻기 위해 프롬프트를 "엔지니어링"하는 방법을 보여줍니다.
좋은 LLM 프롬프트의 구성 요소

1

컨텍스트

: 컨텍스트는 LLM이 귀하의 요청을 더 완벽하게 이해하는 데 도움이 되는 추가 정보를 제공합니다. 관련 컨텍스트를 삽입함으로써 AI는 더욱 정확하고 맞춤형 응답을 생성할 수 있습니다.

예:

C# 프로젝트에서 작업 중이고 클래스 정의를 수정한다고 가정해 보겠습니다. 여기의 컨텍스트는 코드 조각일 수 있습니다.

상황에 맞는 프롬프트:
"이 C# 코드에서:

공개 클래스 사용자 { 공개 int UserId { 가져오기; 세트; } 공개 문자열 이름 { get; 세트; } 공개 문자열 이메일 { get; 세트; } 공개 문자열 PhoneNumber { get; 세트; } } UserId 및 Name이 읽기 전용이 되도록 클래스를 수정하고 생성자에서 설정합니다."


출력:

이 예는 LLM이 올바른 응답을 생성하도록 안내하기 위해 관련 컨텍스트를 제공하는 것의 중요성을 보여줍니다.

  1. 사용자 질문: 질문은 프롬프트의 주요 부분입니다. 단일 목적, 구체적, 간결해야 합니다.

예:
특정 필드를 사용하여 C#에서 사용자 클래스를 생성하려면 필수 필드와 동작을 명확하게 지정하세요.

모호한 질문:

"사용자 클래스를 생성합니다."

구체적인 질문:

"UserId, Name, PhoneNumber 필드가 포함된 C# 사용자 클래스를 만듭니다. UserId를 읽기 전용으로 만들고 생성자를 추가하여 이러한 필드를 설정합니다."

출력:

public class User
{
    public int UserId { get; }
    public string Name { get; }
    public string Email { get; set; }
    public string PhoneNumber { get; set; }

    public User(int userId, string name)
    {
        UserId = userId;
        Name = name;
    }
}
로그인 후 복사
로그인 후 복사
  1. 출력 안내: 원하는 형식의 예시를 제공하여 모델의 출력을 안내할 수 있습니다.

예:
사용자 클래스에 대한 더미 데이터를 생성해야 하는 경우 데이터가 어떤 모습이어야 하는지에 대한 예를 제공하세요.

예시를 포함한 프롬프트:
"UserId, Name, Email, PhoneNumber 필드를 사용하여 User 클래스의 인스턴스 5개를 생성합니다. 예를 보려면 다음 형식을 사용하십시오.

var user1 = new User(1, "John Doe", "john.doe@example.com", "555-555-5555");

다음은 몇 가지 예입니다.

var user2 = new User(2, "Jane Doe", "jane.doe@example.com", "555-555-5556");

이제 5개의 인스턴스를 생성하세요."

출력:

public class User
{
    public int UserId { get; }
    public string Name { get; set; }
    public string PhoneNumber { get; set; }

    public User(int userId, string name, string phoneNumber)
    {
        UserId = userId;
        Name = name;
        PhoneNumber = phoneNumber;
    }
}
로그인 후 복사
로그인 후 복사

효과적인 프롬프트 엔지니어링을 위한 기법

  1. 제로샷 프롬프트: LLM은 명시적인 예 없이 교육 데이터를 기반으로 응답을 생성합니다. 이는 확립된 패턴을 기반으로 일반적인 솔루션이나 답변을 생성하는 데 효과적입니다.

예:
프롬프트: "C#에서 xUnit을 사용하여 사용자 클래스에 대한 단위 테스트를 만듭니다."

출력:

var user1 = new User(1, "John Smith", "john.smith@example.com", "555-555-5555");
var user2 = new User(2, "Jane Doe", "jane.doe@example.com", "555-555-5556");
var user3 = new User(3, "Mary Johnson", "mary.johnson@example.com", "555-555-5557");
var user4 = new User(4, "David Lee", "david.lee@example.com", "555-555-5558");
var user5 = new User(5, "Linda White", "linda.white@example.com", "555-555-5559");
로그인 후 복사
로그인 후 복사
  1. 퓨샷 프롬프트: 모델이 원하는 출력 형식을 생성하도록 안내하는 몇 가지 예를 제공합니다.

예:
사용자 클래스에 대한 데이터를 생성하려면 몇 가지 예제 데이터 포인트를 사용하여 출력 형식을 안내할 수 있습니다.

몇 가지 예를 사용한 프롬프트:
"다음은 User 클래스의 일부 인스턴스입니다.

var user1 = new User(1, "John Smith", "john.smith@example.com", "555-555-5555");

var user2 = new User(2, "Jane Doe", "jane.doe@example.com", "555-555-5556");

이제 동일한 패턴에 따라 인스턴스를 3개 더 만듭니다."

출력:

public class UserTests
{
    [Fact]
    public void UserConstructor_SetsProperties()
    {
        // Arrange
        var user = new User(1, "John Doe", "john.doe@example.com", "555-555-5555");

        // Act & Assert
        Assert.Equal(1, user.UserId);
        Assert.Equal("John Doe", user.Name);
        Assert.Equal("john.doe@example.com", user.Email);
        Assert.Equal("555-555-5555", user.PhoneNumber);
    }
}
로그인 후 복사
로그인 후 복사
  1. 프롬프트 연결: 이전 응답을 기반으로 쿼리를 반복적으로 구체화하여 모델이 이전 상호 작용을 기반으로 구축할 수 있도록 합니다.

예:
간단한 프롬프트로 시작하여 점진적으로 수정해 보세요.

첫 번째 프롬프트:

"Python에서 기본 사용자 클래스를 만듭니다."

출력:

public class User
{
    public int UserId { get; }
    public string Name { get; }
    public string Email { get; set; }
    public string PhoneNumber { get; set; }

    public User(int userId, string name)
    {
        UserId = userId;
        Name = name;
    }
}
로그인 후 복사
로그인 후 복사

후속 메시지:

"이 클래스를 C#으로 변환하세요."

출력:

public class User
{
    public int UserId { get; }
    public string Name { get; set; }
    public string PhoneNumber { get; set; }

    public User(int userId, string name, string phoneNumber)
    {
        UserId = userId;
        Name = name;
        PhoneNumber = phoneNumber;
    }
}
로그인 후 복사
로그인 후 복사

최종 메시지:

"비밀번호 속성을 비공개로 설정하고 생성자에서 초기화된 DateTime CreatedAt 속성을 추가하세요."

출력:

var user1 = new User(1, "John Smith", "john.smith@example.com", "555-555-5555");
var user2 = new User(2, "Jane Doe", "jane.doe@example.com", "555-555-5556");
var user3 = new User(3, "Mary Johnson", "mary.johnson@example.com", "555-555-5557");
var user4 = new User(4, "David Lee", "david.lee@example.com", "555-555-5558");
var user5 = new User(5, "Linda White", "linda.white@example.com", "555-555-5559");
로그인 후 복사
로그인 후 복사
  1. 사고 연쇄 유도: 다단계 지침을 제공하여 LLM이 복잡한 문제에 단계별로 접근할 수 있도록 돕습니다.

예:
프롬프트:

*"다음 C# 클래스에 대한 단위 테스트 세트를 만듭니다.

공개 클래스 사용자 { 공개 int UserId { 가져오기; 세트; } 공개 문자열 이름 { get; 세트; } 공개 문자열 PhoneNumber { get; 세트; } }

단계별로 생각해 보세요:

  1. 테스트할 주요 시나리오를 식별합니다.
  2. xUnit을 사용하여 단위 테스트를 작성합니다.
  3. 특정 사례를 고려하세요."*

출력:

public class UserTests
{
    [Fact]
    public void UserConstructor_SetsProperties()
    {
        // Arrange
        var user = new User(1, "John Doe", "john.doe@example.com", "555-555-5555");

        // Act & Assert
        Assert.Equal(1, user.UserId);
        Assert.Equal("John Doe", user.Name);
        Assert.Equal("john.doe@example.com", user.Email);
        Assert.Equal("555-555-5555", user.PhoneNumber);
    }
}
로그인 후 복사
로그인 후 복사

이 기사는 원래 Pieces for Developers의 Devreal 책임자인 Jim이 작성했습니다. 이 기사 https://pieces.app/blog/llm-prompt-engineering

에서 더 많은 예와 미묘한 차이를 찾을 수 있습니다.

위 내용은 효과적인 프롬프트 엔지니어링을 위한 기법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿