25P by neo 4달전 | favorite | 댓글 2개
  • 대규모 언어 모델(GPT 모델이라고도 함)에서 더 나은 결과를 얻기 위한 전략과 기술을 공유하는 가이드
  • 여기서 설명하는 방법들은 때때로 결합하여 더 큰 효과를 낼 수 있으며, 가장 적합한 방법을 찾기 위해 실험을 권장
  • 예시 프롬프트를 탐색하여 모델이 할 수 있는 일을 배울 수 있음

더 나은 결과를 얻기 위한 여섯 가지 전략

명확한 지시사항 작성

  • 모델은 마음을 읽을 수 없으므로, 원하는 것을 명확히 요청해야 함.
  • 세부사항을 포함하여 더 관련성 높은 답변을 얻고, 모델에게 특정 인물을 연기하도록 요청하거나, 입력의 구별된 부분을 명확히 나타내기 위해 구분자 사용.
  • 작업을 완료하기 위해 필요한 단계를 명시하고, 예시를 제공하며, 출력의 원하는 길이를 지정.

참조 텍스트 제공

  • 언어 모델은 특히 난해한 주제나 인용문, URL을 요청할 때 가짜 답변을 자신 있게 만들어낼 수 있음.
  • 모델에게 참조 텍스트를 사용하여 답변하도록 지시하거나, 참조 텍스트에서 인용하여 답변하도록 지시.

복잡한 작업을 간단한 하위 작업으로 분할

  • 복잡한 시스템을 모듈식 구성 요소로 분해하는 것이 소프트웨어 엔지니어링에서 좋은 관행처럼, 언어 모델에 제출된 작업도 마찬가지.
  • 복잡한 작업은 오류율이 높으며, 종종 간단한 작업의 워크플로우로 재정의될 수 있음.
  • 의도 분류를 사용하여 사용자 쿼리에 가장 관련성 높은 지시사항을 식별하고, 매우 긴 대화가 필요한 대화형 애플리케이션의 경우 이전 대화를 요약하거나 필터링.
  • 긴 문서를 조각별로 요약하고 재귀적으로 전체 요약을 구성.

모델에게 "생각할 시간" 주기

  • 모델이 답변을 서두르기보다는 답변을 작성하기 전에 "생각의 연쇄"를 요청하면 더 신뢰할 수 있는 답변을 도출할 수 있음.
  • 모델에게 자체 해결책을 먼저 마련하도록 지시하고, 모델의 추론 과정을 숨기기 위해 내부 독백이나 일련의 쿼리 사용.
  • 이전 패스에서 놓친 것이 있는지 모델에게 물어봄.

외부 도구 사용

  • 모델의 약점을 보완하기 위해 다른 도구의 출력을 모델에게 제공.
  • 임베딩 기반 검색을 사용하여 효율적인 지식 검색 구현, 코드 실행을 사용하여 더 정확한 계산 수행 또는 외부 API 호출.
  • 모델에게 특정 함수에 대한 접근을 허용.

변경 사항을 체계적으로 테스트

  • 성능 개선은 측정 가능할 때 더 쉬워짐.
  • 변경이 전반적인 성능에 긍정적인 영향을 미치는지 확인하기 위해 포괄적인 테스트 스위트(또는 "eval") 정의 필요.
  • 모델 출력을 금본답안과 비교하여 평가.

GN⁺의 의견

  • 가장 중요한 점: 프롬프트 엔지니어링은 언어 모델의 성능을 최적화하는 핵심적인 방법으로, 사용자의 의도를 정확하게 파악하고 원하는 결과를 얻기 위한 구체적인 지침을 제공.
  • 흥미로운 이유: 이러한 전략들은 인공지능 언어 모델의 사용을 더욱 효과적으로 만들며, 특히 GPT-4와 같은 최신 모델에서 더욱 높은 성능을 발휘할 수 있게 함.
  • 주목할 만한 점: 이 가이드는 초급 소프트웨어 엔지니어가 언어 모델을 사용할 때 겪을 수 있는 일반적인 문제들을 해결하는 데 도움이 되는 구체적인 예시와 전략을 제공함으로써, 실제 작업에서 모델을 더 효과적으로 활용할 수 있는 방법을 제시함.
Hacker News 의견
  • ChatGPT 시스템 프롬프트에 대한 논의

    • 복잡한 규칙을 수용하는 데 ChatGPT의 최신 모델이 효과적임.
    • 시스템 프롬프트를 사용하는 것보다 더 엄격한 명령을 내리는 것이 경험상 더 나음.
    • 함수 호출 및 구조화된 데이터 지원은 프롬프트 엔지니어링의 한 형태로, 시스템 프롬프트만 사용하는 것보다 훨씬 강력함.
    • 시스템 프롬프트와 구조화된 데이터 결과를 비교하는 재미있는 데모 예시가 있음.
  • 스페인어로 치즈버거 주문 경험담

    • ChatGPT와 Google 번역기가 제안한 스페인어 번역에 대해 서버가 이상하게 반응함.
    • 번역 개선에 관심이 있어, 멕시코계 미국인을 대상으로 한 스페인어 맞춤형 번역을 요청함.
    • 다음 날 "Cheeseburger sin pepinillos"라는 문구로 주문했을 때 서버는 그게 더 낫다고 함.
  • LLM(Large Language Models)의 특징에 대한 논의

    • 입력과 지시 사이에 거의 구분이 없어, 사용자의 입력이 프롬프트의 일부로 간주됨.
    • 이로 인해 알려진 "프롬프트 주입" 취약점이 발생하지만, 이는 모델이 지시와 입력을 구분하지 않는 본질적인 특성 때문임.
    • 프롬프트와 입력이 결합된 것이 프로그램의 전체 입력이 되며, 이로 인해 프로그램의 동작을 확신하기 어려움.
    • LLM이 아직 복잡한 작업에 대해 신뢰할 수 있을 정도로 사용되지 않는 이유임.
  • 프롬프트 작성에 대한 학습에 대한 주저함

    • 새로운 버전과 다른 LLM들이 다르게 반응하기 때문에 프롬프트 작성을 완벽하게 배우는 데 많은 시간을 할애하는 것에 대해 주저함.
    • 시스템이 더 똑똑해짐에 따라 복잡한 프롬프트가 필요 없어질 수도 있음.
  • 프롬프트 엔지니어링과 구글 고급 검색 쿼리의 비교

    • 기본적인 질문에는 챗봇이 잘 작동하지만, 요청된 정보가 복잡해질수록 정확한 정보를 얻기 어려움.
    • 구글 검색에서도 기본적인 정보는 쉽게 얻을 수 있지만, 명확하지 않은 결과를 원할 때 고급 검색 연산자를 사용함.
  • 구글 검색 프롬프트와 LLM 프롬프트의 비교

    • 사람들이 인터넷에서 필요한 것을 얻기 위해 구글에 간단한 키워드를 입력하는 방식에 익숙해짐.
    • 이제 복잡한 문장을 작성해야 하는 것은 시간이 걸릴 것이며, 이는 일시적인 단계일 수 있음.
  • 인간 간의 의사소통 실패와 LLM의 한계

    • 인간 간의 의사소통이 자주 실패하며, 대부분의 사람들이 효과적인 커뮤니케이터가 아님.
    • 기계도 인간의 마음과 의도를 읽는 데 더 나을 것이라고 기대하기 어려움.
    • 프롬프트 엔지니어링은 인간 간의 의사소통 능력 향상을 위해 존재해야 함.
  • "프롬프트 엔지니어링"이라는 용어에 대한 비판

    • "엔지니어링"이라는 단어가 남용되고 있다는 의견 제시.
  • LLM이 인간에게 명확한 의사소통을 가르치는 역할

    • LLM을 통해 인간이 더 명확하게 의사소통하는 방법을 배우고 있음.
  • LLM 기반 챗앱 구현의 용이성

    • 이론적 진보 없이도 LLM 기반 챗앱을 구현하는 데 많은 이점이 있음.
    • 현재보다 더 나은 결과를 얻기 위해 개발자의 노력이 필요함.