LLM 응용 : LLM Agent, Visual ChatGPT
LLM Agent
주어진 요청을 처리하기 위해 계획을 수립한다.
해당 상황에 적절한 도구를 사용하고, 과거 대화 기억이나 관련 기록을 참고하여 복잡한 과제를 차례대로 수행한다.
- System Prompt : 이 LLM 자체가 무엇인가에 대한 정의
- Commands : 우리가 쓸 수 있는 도구들을 정의
- Your Task : 이 LLM이 풀어야 하는 문제 정의
- Response strictly witth a JSON Object : LLM이 실제로 출력해야 하는 포맷
여기서 ' Commands'은 web_serch나 calculator 등이 될 수 있다.
gpt가 web_serch를 통해 인터넷 검색을 하고 그에 대한 결과값을 받은 다음, calculator 를 호출하는 등, 어려운 Task 를 단계별로 수행할 수 있다.
Visual ChatGPT
GPT-3.5는 텍스트만 다룰 수 있다.
그런데 이미지를 다룰려면 어떻게 해야할까?
이에 Visual ChatGPT는 LLM Agent와 유사한 형태로 다뤄서, 텍스트 뿐만 아니라 멀티 모달 데이터도 다루도록 만들었다.
이미지를 다룰 수 있는 모델들, VFM (Visual Foundation Models)은 기존에도 존재했었다.
문제는 사용자가 상호작용하는데 어려움이 있었다.
ChatGPT-3.5를 활용해 이미지 생성을 interactive하게 컨트롤 할 수 없을까? 그런 아이디어에서 시작됐다.
아이디어
Prompt를 구성하여 ChatGPT와 다양한 VFMs를 연결, 유저가 모델과 대화하며 이미지 생성 및 수정을 한다.
ChatGPT의 경우 어떤 작업을 수행할지 계획을 세워서 중간 결과를 생성 가이드한다.
ex
'A 이미지의 depth를 측정해서 그걸 기반으로 카툰 스타일로 바꿔줘!'
이런 복잡한 질의가 들어왔다고 가정하자.
' depth를 측정 ', ' 카툰 스타일로 수정', '이미지 수정', 이들에 대한 것은 기존의 모델이 존재하고 있었다.
이들을 동시에 호출할 수 없었다.
이제는 ChatGPT가 Prompt화를 통해 직접 도구를 호출하게 했다.
작동 방식(이미지 처리라고 가정할 때)
Prompt에 포함되는 내용
- 시스템 원리: 챗GPT가 지켜야 하는 기본 규칙 (예시 : 이미지 파일 형식)
- 이미지 처리 모델 종류와 특징
- 대화 기록 : 맥락에 따라 도구 호출하기 위해
- 유저 쿼리 : 유저가 풀고자 하는 유저 쿼리(예시 : 어떤 이미지를 만들어줘!)
- 최종 답을 생성하기 위한 중간 답의 기록
(1) Prompt manager
- 각 VFM의 특징을 ChatGPT에게 알려주고 입출력 포맷을 적시한다.
- 이미지 타입 변환 (예시 : png, depth, mask matrix)
- 대화의 로그 저장 및 VFMs의 충돌 통제
(2) ChatGPT를 통해 계획 수립
- 입력된 Prompt 기반으로 계획을 만든다.
(3) 이미지 처리가 필요한 경우, VFM 사용해서 중간 답안 생성한다.
- 이후 추론 기록과 합쳐서 다시 Prompt Manager에 넣어 계획 생성한 후, 이미지 처리가 필요한지 판별한다.
(4) 이미지 처리가 필요하지 않은 경우, 최종 결과로 반환한다.