AISmarteasy – 시맨틱 커널 포크로 개발하기 6 – Agent
llm 연동 ai 애플리케이션이 할 일은 llm 공급자가 제공하는 ai service 범위 안에서 가능하다. llm으로 할 수 있는 대표적인 일은 text completion이다. 프롬프트로 작성한 텍스트를 입력으로 받아 llm이 text completion해서 응답 텍스트로 리턴 한다.
사람과 llm 사이의 text completion은 텍스트를 주고 받으면서 chat 하는 것으로 보일 수 있다. text completion 다음 chat completion이 등장하고, chat 방식으로 ai service가 제공되는 것은 llm 세계에서는 자연스럽다.
llm과의 상호작용이 흥미롭고 재미 있을 수도 있지만, 이런 과정을 귀찮아 하고, 목표 수준으로 지시하면 llm이 알아서 해주기를 원할 수도 있다. ai agent가 등장한다.
llm은 언어 모델이고, 훈련 이후에 생성된 데이터나 기밀 데이터를 모르는 한계가 있다. llm 공급자가 더 나은 ai service 제공을 위해 더 많은 기능들을 개발하고 있지만, 특별한 조직 내에서만 사용해야 하는 기능을 제공한다는 것은 기대하기 어렵다. llm 연동 ai 애플리케이션은 이러한 llm 문제를 해결하기 위해 자체 기능을 개발해서 사용할 수 있어야 한다.
목표를 주고 그 목표를 달성할 기능들을 개발하고, 그 기능들을 어떤 절차로 실행할 것인지 프로그래밍 하는 것이 기존 개발자들이 하는 일이었다. llm 연동 ai 애플리케이션에서는 목표와 기능 목록을 주면, llm이 절차를 계획한다. 실행은 llm 연동 ai 애플리케이션 개발 프레임워크가 담당한다. 개발자는 추가적인 기능을 개발해 주기만 하면 된다.
절차를 계획할 때, 가장 일반적인 방법은 순차(sequential)적으로 단계들을 계획하는 것이다. 하나의 단계에서 하나의 기능이 실행되도록 계획 한다. 절차 계획에는 순차 외에도 병행이 필요하고, 단계는 순차 뿐만 아니라 조건 분기(if)나 반복(for)으로 실행되어야 할 수도 있다.
목표 달성을 위한 절차가 llm에 의해 하나의 계획으로 확정되어 제시될 수도 있지만, 그렇게 못 할 경우도 있다. 그렇게 못 할 경우에는, 한 번의 계획을 세울 수 없으니, 목표에 조금 더 나아갈 수준으로 “계획하고, 계획을 실행하고”, “계획 실행 결과를 평가하고 다시 계획하고”, 다시 계획을 실행하고, 계획 실행 결과를 평가하고,… 이런 과정을 목표 달성할 때까지 반복해야 할 수도 있다. 시맨틱 커널에서는 이렇게 하는 것을 stepwise로 계획한다고 한다.
목표와 ai 애플리케이션에서 제공하는 함수들을 포함한, 계획을 세워 달라는 지시를 전달 받은 llm이 계획을 세워서 응답해야 한다. 계획을 세워 달라는 프롬프트가 있어야 한다. plan worker는 계획을 세워 달라는 기능이 있어야 한다. 이 기능은 프롬프트로 작성되는 지시를 llm에 하는 것이니, semantic function이다. 시맨틱 커널에서는 이 기능을 Plan이라 한다.
plan worker는 plan을 빌드 해야 한다.
[ChatCompletion]
Stepwise 방식이 가능한 것은 챗이력을 가지고 챗 방식으로 사용자와 llm이 상호작용하기 때문이다.
소프트웨어 개발에서 사용자와의 상호작용 방식이 얼마나 중요한 지를 한 껏 보여준다. llm 공급자가 챗이력을 가지고 챗방식을 지원하지 api를 제공하지 않는다면, llm 연동 ai 애플리케이션 개발에서는 웬만하면 걸러내는 것이 건강에 좋다.
[설계 결정]
- 절차를 계획하는 것과 계획 대로 실행하는 역할을 구분한다. 계획 세우는 것을 Planner, 실행하는 것을 Agent
- 시맨틱 커널은 지시 수준에 상관 없이, llm 벤더가 제공하는 ai service를 통해 llm과 상호작용하는 역할을 에이전트(agent)라 한다. 우리는 작업자(worker)라 한다. 지시 수준으로 작업을 지시할 경우 instruction worker라 하고, 목표 수준으로 작업을 지시할 경우 agent라 한다.
- 질의 응답은 InstructionWorker가 모두 담당하고, Agent는 목표가 주어진 생성 만 하도록 한다. 가이드를 할 뿐이다. 사용자가 목표로 질의 를 작성하는 경우 질의에 답할 수 있는 함수가 있다면, 질의 응답을 할 수도 있다.
- 계획을 세우는 작업자는 plan worker라고 하자.
- plan worker는 절차를 순차적으로 계획하는 sequential plan worker와, 점차적으로 목표를 달성해가는 작은 단계를 계획하는 stepwise plan worker를 둔다.
- plan worker는 계획 생성에 대한 지시를 만들어야 한다. 이 지시 프롬프트 템플릿에서 사용할, ai 애플리케이션에서 제공하는 function들에 대한 정보를 만들어 제공해야 한다.
- 순차적으로 절차를 계획할 수 있는 지 Agent가 판단해야 한다.