AISmarteasy – 시맨틱 커널 포크로 개발하기 2a – PromptTemplate – prompt engineering(2/3)

Prompting Techniques – Level3

[ Retrieval Augmented Generation (RAG) ]

llm은 태생적 한계로, 훈련에 사용되지 않은 데이터에 대해서는 모른다. 훈련 이후에 생성된 데이터나 기업 내부 데이터. 공개된 모든 데이터를 모두 수집했는지도 모르니, 사용했으면 하는 공개 가능한 데이터라도 사용하지 않았을 수 있다.
RAG는 이런 llm의 한계를 보완 하기 위해 등장한, 필수적인 기법이다.

검색을 통해 얻을 수 있는 데이터는 구글과 같은 검색 엔진을 통해서 검색하면 된다. 검색 결과가 파일이나 텍스트 아닌 이미지나 오디오나 비디오가 포함되어 있을 수도 있다. 이들에 대한 처리 방법도 고민해야 한다. 기업이나 개인이 보유한 데이터는 데이터베이스나 파일을 읽어내야 한다. 이를 위한 기능을 기존 sw 개발 방식으로 개발할 수 밖에 없다. 이렇게 얻은 데이터는 프롬프트에 포함되어 전달되어야 한다.

 

rag를 통해 얻은 데이터를

  • 지시에 대한 추가적 데이터로 사용하려면, 프롬프트의 context 부분에 작성하면 된다.
  • 지시 내용으로 사용하려면, rag 데이터를 포함해 지시 프롬프트를 완성해야 한다.

 

context 데이터가 주어지면, 그것에 기반해서 응답하라고 할 수 있다.

LLamaIndex의 기본 프롬프트 – llm에 rag시 지켜야 할 기본을 언급

  • Context information is below. Given the context information and not prior knowledge, answer the query.

Semantic Kernel RAGSkill

 

rag에서는 llm이 가지고 있지 않는 데이터를 llm에게 제공하고, 이것에 응답이 크게 영향을 받기 때문에, 어떤 데이터를 어떻게 사용하는 지가 중요하다. 이런 영역의 필요성으로 Corrective RAG (CRAG)가 등장한다.

 

Prompting Techniques – Level4

[ Automatic Reasoning and Tool-use (ART) ]

이름 대로 추론 과정과 도구 사용을 자동화 하겠다는 것이다.

추론 과정을 자동화하겠다는 거는 다양한 문제들에 대해 추론 과정들이 관리되고 있고, llm은 문제에 적합한 추론 과정을 선택해 사용하는 것이다. 예제를 제공하거나 지식을 제공하면 llm이 응답을 더 잘 한다면, 이것도 관리되고 llm이 선택할 수 있도록 할 수 있다.

도구 사용해서 CoT 하자는 거.

도구라면 기존 방식으로 개발되는 function이라 생각하면 된다. llm은 제공되는 도구들에서 문제에 응답하기 위해 어떤 것을 사용할 지 선택 한다. 요즘 llm ai 서비스들은 직접 코드를 생성해서 실행 하기도 하니 이렇게 할 수 있는 것도 도구에 포함한다.

 

시맨틱 커널의 플래너가  이런 일을 한다고 할 수 있다.

 

[ Automatic Prompt Engineer (APE) ]

자연어라고 하지만, 프롬프트 프로그래밍도 쉽지는 않다. 프롬프트 생성하라고 llm에게 지시할 순 없을까?

이런 요구 등장은 자연스럽다.

 

프롬프트를 잘 작성하는 기법들은 왜 배우나? llm이 사용자가 원하는 출력을 잘 내놓도록 하려고.  시킨 일을 잘하게 하려고.

사용자는 원하는 결과가 있다. llm은 이런 결과를 낼 수 있는 프롬프트를 작성해 준다.

llm은 사용자가 원하는 결과를 얻기 위한 프롬프트를 작성한다. 한 번에 짠하고 원하는 결과를 주면 좋겠지만, 그렇지 않다면 작성한 프롬프트 실행 결과를 평가하고, 개선된 프롬프트를 도출한다. 여러 단계들로 구성되는 과정이 있고, 이 과정이 여럿으로 분기 된다면 여러 프롬프트들이 만들어지고 평가 선택 과정도 거쳐야 한다. 사용자가 원하는 결과가 나올 때까지 이 과정을 반복해서 최선의 프롬프트를 선택하고, 이에 대해 응답한다.

 

  1. 지시 수행 결과로 프롬프트를 작성해서 시작한다.
  2. 지시 내용과 1 프롬프트에 대한 llm 응답들로 프롬프트를 만들고 이에 대한 llm 응답에 대해서 평가한다.
  3. 2에서 평가 점수가 높은 것으로 의미가 같지만 변형된 프롬프트들을 만들라고 지시한다. 각 프롬프트의 응답에 대해 평가하고, 최종 프롬프트를 결정한다.

 

이 주제와 관련된 것들

 

기법들 다 알아야 하나?

llm 벤더들은 llm과 연계를 위한 ai 서비스를 제공한다.

ai 서비스 개발자는 프롬프트 엔지니어링 기법들을 사용자들이 기법들 몰라도 사용할 수 있도록 한다.

사용자들은 사용하는 ai 서비스에서, 자신이 원하는 결과를 얻기 위해 ai 서비스를 어떻게 사용하면 되는 지를 알면 된다. 이 정도 수준으로 프롬프트를 작성할 수 있으면 된다.

 

About the Author
(주)뉴테크프라임 대표 김현남입니다. 저에 대해 좀 더 알기를 원하시는 분은 아래 링크를 참조하세요. http://www.umlcert.com/kimhn/

Leave a Reply

*