AISmarteasy – 시맨틱 커널 개발하기 5 – Planner

누구에게 뭘 지시할 때는, 그 누구가 시킨 일을 잘 할 수 있을 거라고 생각해서 일거고, 지시하는 것에 대해서 지시 받는 입장에서 잘 알아 먹도록 설명을 할 거다. llm에게 지시할 때는 llm이 잘 할 수 있을 것을 잘 알아 먹도록 지시해야 한다. llm에게 전달되는 지시를 프롬프트라고 한다.

뭘 지시할 지 분명히 알 때에도, 대상이 그것을 잘 할 수 있도록 구체적으로 지시하기는 쉽지 않을 수 있다.  어떤 결과를 얻고자 하는 지에 따라  프롬프트 작성의 어려움이 달라진다. 프롬프트 엔지니어링이 등장한 이유가 있겠지.

사용자 입장에서는 뭘 하라고 지시만 한다면 좋을 거다. 사람들이 원하니 llm 관련해서도 뭔가 만들어지겠지. 목표만 주면 스스로 알아서 목표 달성을 위한 계획도 세우고 실행도 하는 ai 에이전트가 등장한다.  대표적인 ai 에이전트로 auto gpt가 있다.

* ai 에이전트가 계획을 세우는 것은 아니다. 그럼 주객이 전도된다. llm이 하도록 해야 한다. ai 에이전트는 계획을 세우는데 필요한 프롬프트를 작성하는 것이다.

 

뭘 해야 하는지 목표를 주면, ai 애플리케이션이 제공하는 기능(함수)들을 가지고 계획을 세우고 실행하는 것을 시맨틱 커널에서는 Planner라고 하고, ActionPlanner, SequentialPlanner, StepwisePlanner를 제공한다.

사용자 목표가 주어졌을 때, 목표를 보고 한 번에 짠 하고 단계들을 순차적으로 계획할 수 있는 게 ActionPlanner와 SequentialPlanner이다. ActionPlanner는 한 단계로만 계획을 만들고, SequentialPlanner는 여러 단계들을 사용해 순차적으로 계획을 만든다.

목표 달성을 위한 계획이 그렇게 안 될 때 한 발자국 한 발자국 목표를 향해 나아가야 할 때 StepwisePlanner가 사용한다. 한 발자국 한 발자국 나아가야 하기 때문에 한 단계만 계획하면 된다. 다음 단계에 뭘 해야 할지 계획을 세우고, 단계를 실행하고, 그 결과에 따라 필요하면 그 다음 단계를 계획하는. 이 과정을 목표 달성까지 반복한다. 단계가 이런 내용들을 반영해야 하다 보니, 함수로 만들어지던 ActionPlanner와 SequentialPlanner의 단계 보다 좀 복잡해진다.

 

플래너는 계획을 작성 하기 위해 llm과 연동 된다. 플래너도 시맨틱 함수라는 것이다. 플래너를 잘 살펴보자. 플래너를 알면, llm과 연동해서 ai 애플리케이션이 처리 해야 하는 좀 복잡한 일을 어떻게 해야 할 지에 대한 아이디어를 얻을 수 있다.

* ai 애플리케이션은 llm 연동하는 게 핵심이다. ai 애플리케이션이 해야 하는 일이 있을 때 개발을 먼저 하려고 하지 말고, 먼저 시맨틱 함수 즉 프롬프트로 해결 해 보려고 하자.

 

StepwisePlanner는 점차적으로 목표를 향해 가야 하는데, 이 과정 중에 단계 별로 뭘 해야 할 지 계획을 세우거나 단계를 실행할 때, llm과 여러 번의 상호작용이 필요하다.  이렇게 llm과 여러 번의 상호작용이 요구될 때를 위한 것이 chat completion이다. 챗 방식을 통해 상호 작용한다.

llm과 chat한다는 것은 결국 프롬프트를 작성한다는 것이다.
사용자는 목표만 주고, 그 목표를 달성하기 위해 StepwisePlanner가 프롬프트를 작성하는 것이다. 프롬프트 작성에 필요한 데이터가 있으면 시맨틱 함수나 네이티브 함수를 실행해서 구한다.

 

auto gpt와 같은 ai agent는 좀 더 정확하게 말 한다면, 플래너 중 StepwisePlanner이다. 시맨틱 커널은 StepwisePlanner를 등장 시켜, llm이 thought해서 지시에 직접 응답하거나 ai 애플리케이션이 실행할 기능(action)을 계획하도록 했다. llm의 응답이나 기능의 답변을 observation해서 chat을 위한 이력으로 사용하도록 한다.

 

* 사용자 목표가 주어질 때, 뭘 가지고 어떤 절차에 의해 할 것 인지가 정해져 있다면 어떻게 해야 할까? 뭘 해야 할 지에 대한 함수들을 찾고 그것들을 순차적으로 실행되게 해 주면 될 것이다. 파이프라인이 등장 한다.

 

 

[변경 사항]

플래너는 계획을 세우고 실행한다. 이런 관점에서 플래너 보다는 작업자로 보고 Worker라고 한다.

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

Leave a Reply

*