LLM + RAG + Function Calling은 AI 에이전트가 아닙니다
많은 사람들이 LLM, RAG, 그리고 function calling을 사용하는 모든 애플리케이션을 AI 에이전트라고 부릅니다.
이것은 틀렸습니다.
이러한 도구들은 능력을 추가할 뿐, 자율성을 추가하는 것은 아닙니다. 자율성이 없다면 에이전트라고 할 수 없습니다.
이러한 혼동이 발생하는 이유는 사람들이 시스템의 능력(capability)과 시스템의 동작(behavior)을 혼동하기 때문입니다.
각 구성 요소의 역할을 살펴보겠습니다:
- LLM은 문맥을 바탕으로 응답을 생성합니다. 시스템의 흐름을 제어하지는 않습니다.
- RAG는 관련 데이터를 가져옵니다. 문맥을 제공할 뿐, 의사결정을 내리거나 단계를 계획하지는 않습니다.
- Function calling은 LLM이 동작을 요청할 수 있게 합니다. 어떤 함수가 존재하고 언제 실행할지는 여전히 시스템이 결정합니다.
이 세 가지를 모두 결합하더라도, 시스템은 여전히 실행 흐름에 대한 제어권이 부족합니다.
대부분의 설정에서 애플리케이션은 미리 정의된 파이프라인을 따릅니다. 코드가 다음을 결정합니다:
- 언제 RAG를 사용할지.
- 언제 LLM을 호출할지.
- 언제 함수를 실행할지.
- 응답을 어떻게 반환할지.
이것은 제한된 워크플로우(bounded workflow)입니다. 모델은 정해진 경로를 따르다가 멈춥니다. 스스로 계획을 세우거나 반복(iterate)하지 않습니다.
AI 에이전트는 다르게 작동합니다. 고정된 순서를 따르지 않습니다. 프로세스 중에 발생하는 상황에 따라 다음 단계를 결정합니다.
차이점은 간단합니다:
- 에이전트가 아닌 시스템은 워크플로우를 따릅니다.
- 에이전트 시스템은 목표를 추구합니다.
에이전트는 도구가 아닌 동작에 의해 정의됩니다. 에이전트는 다음과 같은 능력을 갖추어야 합니다:
- 다음 동작을 선택할 수 있어야 함.
- 도구를 동적으로 선택할 수 있어야 함.
- 루프 내에서 여러 단계를 실행할 수 있어야 함.
- 새로운 결과에 따라 계획을 변경할 수 있어야 함.
- 목표에 도달할 때까지 작업할 수 있어야 함.
책임(responsibility)에 대해 생각해 보십시오.
LLM 애플리케이션에서는 시스템이 모델에게 무엇을 할지 알려줍니다.
에이전트에서는 시스템이 모델에게 목표를 알려줍니다. 모델은 그 목표에 도달하는 방법을 스스로 결정합니다.
RAG는 문맥을 개선하고, function calling은 동작을 가능하게 하며, LLM은 추론을 제공합니다. 이 중 어느 것도 단독으로는 에이전트를 만들지 못합니다.
에이전트는 모델이 자신의 동작 순서를 직접 제어할 때에만 존재합니다.
출처: https://dev.to/rohith_kn/llm-rag-function-calling-is-not-an-ai-agent-5459
