▣ AI Agent란 무엇인가?
What is AI Agent:
an AI model capable of reasoning, planning, and interacting with its environment
추론하고, 계획하고, 환경과 상호 작용할 수 있는 AI 모델
여러 IT 기업에서 AI Agent를 이와 유사한 의미로 정의하고 있다. 대표적으로, IBM과 아마존 사이트에서는 아래와 같이 AI Agent를 정의하고 있다.
An AI agent refers to a system or program that is capable of autonomously performing tasks on behalf of a user of naother system by designing its workflow and utilizing available tools.
(AI Agent는 워크플로우를 설계하고 사용 가능한 도구를 활용하여 다른 시스템의 사용자를 대신하여 자동으로 작업을 수행할 수 있는 시스템 또는 프로그램을 의미한다)
인공 지능 에이전트는 환경과 상호 작용하고, 데이터를 수집하고, 데이터를 사용하여 사전 결정된 목표를 달성하기 위해 필요한 작업을 스스로 결정해서 수행 할 수 있는 소프트웨어 프로그램.
Huggingface에서는 AI Agent를 설명하는데에, 뇌(Brain)와 몸통(Body)라는 표현을 사용한다. AI 모델은 추론과 계획을 처리하는 부분으로 브레인으로 표현될 수 있으며, 상황에 따라 어떤 조치를 취할지 결정을 내리는 부분이다. 반면, 에이전트의 몸통은 'Capabilities and Tools'를 포함한다. 이 부분은 에이전트가 수행하는 기능을 나타내며, 어떤 도구를 사용하는 에이전트냐에 다라 가능한 조치의 범위가 달라진다.
▣ 어떤 유형의 AI 모델을 사용할 수 있는가?
가장 보편적으로 AI 에이전트에 사용되고 있는 모델은 LLM(Large Language Model) 이다. OpenAI의 GPT, Meta의 Llama, Google의 Gemini 같은 LLM들이 최근에 잘 알려져 있다. 다른 입력을 받아들이는 모델을 혼합 사용하는 것도 가능하다. 예를 들어, 이미지를 입력으로 사용하는 VLM(Vision Language Model)을 사용할 수도 있다.
▣ 어떻게 AI Agent는 환경과 상호작용하는가?
ChatGPT를 떠올려 보면, 핵심 모델로 사용되는 LLM은 오직 텍스트를 생성하는 작업을 할 수 있을 뿐인데, 사용자가 특정 이미지를 생성해달라고 요청할 경우에 GPT는 이미지를 생성해낸다. 이것이 가능한 이유는 앱의 개발자가 LLM이 이미지를 생성하는데에 사용할 수 있는 추가 기능(Tool)을 구현했기 때문이다.
그렇다면 도구(Tool)은 무엇이고, 어떻게 도구를 효과적으로 설계하는지, 시스템 메세지를 통해 도구를 에이전트에 통합하는 방법은 무엇인지 알아보자.
What are AI Tools?
도구는 LLM에 제공되는 기능으로, 이 기능은 명확한 목적을 가지고 있다. 몇 가지 자주 사용되는 도구의 예는 다음과 같다.
- Web Search: 에이전트가 인터넷에서 최신 정보를 가져오도록 허용한다
- Image Generation: 텍스트 묘사에 기반해서 이미지를 생성한다
- Retrieval: 외부 소스로부터 정보를 검색(Retrive)한다
- API Interface: 외부 API(Github, Youtube, Spotify, etc)와 상호작용한다
이러한 도구들은 LLM의 성과를 극대화할 수 있다. 예를 들어, 산술을 수행하는 LLM에 계산기 도구를 제공하면 모델의 기본 기능에 의존하는 것보다 더 나은 결과를 얻을 수 있다. 또한, LLM은 학습된 데이터를 기반으로 프롬프트의 요청을 수행하므로, LLM 자체 기능으로는 학습된 데이터 기반으로만 요청을 수행하게 된다는 한계가 있을 수 있다. 따라서, 에이전트에 최신 데이터가 필요한 경우 일부 도구를 통해 이를 제공해야 한다.
How do tools work?
LLM에 도구를 제공한다는 것은 LLM에게 도구의 존재에 대해 가르치고 필요할 때 도구를 호출할 텍스트를 생성하도록 모델에 요청하는 것을 의미한다.
예를 들어, 인터넷에서 특정 위치의 날씨를 확인하는 도구를 제공한 다음 LLM에게 파리의 날씨에 대해 질문하면, LLM은 해당 질문을 설계자가 가르친 '날씨' 도구를 사용할 수 있는 적절한 기회로 인식한다. LLM은 특정 위치의 날씨는 확인하는 도구를 호출하기 위해 코드 형태로 텍스트를 생성한다. LLM의 출력을 구분 분석하고, 도구 호출이 필요하다는 것을 인식하고, LLM을 대신해서 도구를 호출하는 것이 에이전트의 책임이다.
도구 호출 단계는 일반적으로 사용자에게 표시되지 않으므로, 사용자의 관점에서 보면 LLM이 도구를 사용한 것으로 인식하지만 실제로는 이것은 application code(에이전트)에 의해서 수행되는 것이다.
How do we give tools to an LLM?
기본적으로 시스템 프롬프트를 사용하여 모델에 사용 가능한 도구에 대한 텍스트 설명을 제공한다. 이 작업을 수행하기 위해서는, 두 가지 사항에 대해 정확히 알고 있어야 한다.
- What the tool does
- What exact inputs it expects
구체적인 예를 통해 이것을 이해하기 위해, 두 개의 정수를 곱하는 calculator 도구를 구현하는 상황을 고려해보자.
def calculator(a: int, b: int) -> int:
"""Multiply two integers."""
return a * b
print(calculator.to_string())
이 도구의 출력은 다음과 같이 설명할 수 있는 또 다른 정수일 것이다.
- (int): a와 b의 곱
이러한 세부사항은 모두 중요하다. LLM이 이를 이해할 수 있도록 도구를 설명하는 텍스트 문자열에 넣어보면 다음과 같아진다.
Tool Name: calculator, Description: Multiply two integers., Arguments: a: int, b: int, Outputs: int
이러한 설명은 시스템 프롬프트(System Message)에 삽입된다. 이러한 예제를 사용하여 시스템 프롬프트에 도구를 묘사하는 모습을 살펴보면 다음과 같아질 수 있다.
system_message="""
You are an AI assistant designed to help users efficiently and accurately.
Your privary goal is to provide helpful, precise, and clear responses.
You have access to the following tools:
Tool Name: calculator, Description: Multiply two integers., Arguments: a: int, b: int, Outputs: int
"""
▣ 어떤 유형의 task를 에이전트가 할 수 있을까?
에이전트는 작업을 완료하기 위해 도구를 통해 구현하는 모든 작업을 수행할 수 있다. 도구를 디자인하는 것은 매우 중요하며 에이전트의 품질에 큰 영향을 미친다. 일부 작업은 매우 구체적인 도구를 제작해야 하는 반면, 어떤 작업은 범용 도구를 사용하여 해결할 수도 있다. 작업이 한 개라고 해서 하나의 도구만 사용되는 것은 아니다. 예를 들어, 한 개의 작업을 완료하기 위해서는 여러 도구를 사용해야 할 수도 있다.
AI Agent가 사용되는 특정 태스트 예제:
- Siri, Alexa, Google 같은 Personal Virtual Assistants
- 고객 서비스 챗봇
- 게임에서 사용되는 AI Non-Playble Character(NPC)
요약하자면, 에이전트는 AI 모델(일반적으로는 LLM)을 핵심 추론 엔진으로 사용하여 다음 작업들을 수행하는 시스템이다.
- 자연어의 이해: 인간의 지시사항에 대해 응답하고 상호작용
- 정보를 분석하고, 의견을 수립하고, 문제 해결을 위한 전략을 고안함
- 환경과 상호작용: 정보를 수집하고 액션을 취하고, 그 액션의 결과를 관찰함
'AI > Machine Learning' 카테고리의 다른 글
Agentic Framework 사용 (0) | 2025.03.23 |
---|
▣ AI Agent란 무엇인가?
What is AI Agent:
an AI model capable of reasoning, planning, and interacting with its environment
추론하고, 계획하고, 환경과 상호 작용할 수 있는 AI 모델
여러 IT 기업에서 AI Agent를 이와 유사한 의미로 정의하고 있다. 대표적으로, IBM과 아마존 사이트에서는 아래와 같이 AI Agent를 정의하고 있다.
An AI agent refers to a system or program that is capable of autonomously performing tasks on behalf of a user of naother system by designing its workflow and utilizing available tools.
(AI Agent는 워크플로우를 설계하고 사용 가능한 도구를 활용하여 다른 시스템의 사용자를 대신하여 자동으로 작업을 수행할 수 있는 시스템 또는 프로그램을 의미한다)
인공 지능 에이전트는 환경과 상호 작용하고, 데이터를 수집하고, 데이터를 사용하여 사전 결정된 목표를 달성하기 위해 필요한 작업을 스스로 결정해서 수행 할 수 있는 소프트웨어 프로그램.
Huggingface에서는 AI Agent를 설명하는데에, 뇌(Brain)와 몸통(Body)라는 표현을 사용한다. AI 모델은 추론과 계획을 처리하는 부분으로 브레인으로 표현될 수 있으며, 상황에 따라 어떤 조치를 취할지 결정을 내리는 부분이다. 반면, 에이전트의 몸통은 'Capabilities and Tools'를 포함한다. 이 부분은 에이전트가 수행하는 기능을 나타내며, 어떤 도구를 사용하는 에이전트냐에 다라 가능한 조치의 범위가 달라진다.
▣ 어떤 유형의 AI 모델을 사용할 수 있는가?
가장 보편적으로 AI 에이전트에 사용되고 있는 모델은 LLM(Large Language Model) 이다. OpenAI의 GPT, Meta의 Llama, Google의 Gemini 같은 LLM들이 최근에 잘 알려져 있다. 다른 입력을 받아들이는 모델을 혼합 사용하는 것도 가능하다. 예를 들어, 이미지를 입력으로 사용하는 VLM(Vision Language Model)을 사용할 수도 있다.
▣ 어떻게 AI Agent는 환경과 상호작용하는가?
ChatGPT를 떠올려 보면, 핵심 모델로 사용되는 LLM은 오직 텍스트를 생성하는 작업을 할 수 있을 뿐인데, 사용자가 특정 이미지를 생성해달라고 요청할 경우에 GPT는 이미지를 생성해낸다. 이것이 가능한 이유는 앱의 개발자가 LLM이 이미지를 생성하는데에 사용할 수 있는 추가 기능(Tool)을 구현했기 때문이다.
그렇다면 도구(Tool)은 무엇이고, 어떻게 도구를 효과적으로 설계하는지, 시스템 메세지를 통해 도구를 에이전트에 통합하는 방법은 무엇인지 알아보자.
What are AI Tools?
도구는 LLM에 제공되는 기능으로, 이 기능은 명확한 목적을 가지고 있다. 몇 가지 자주 사용되는 도구의 예는 다음과 같다.
- Web Search: 에이전트가 인터넷에서 최신 정보를 가져오도록 허용한다
- Image Generation: 텍스트 묘사에 기반해서 이미지를 생성한다
- Retrieval: 외부 소스로부터 정보를 검색(Retrive)한다
- API Interface: 외부 API(Github, Youtube, Spotify, etc)와 상호작용한다
이러한 도구들은 LLM의 성과를 극대화할 수 있다. 예를 들어, 산술을 수행하는 LLM에 계산기 도구를 제공하면 모델의 기본 기능에 의존하는 것보다 더 나은 결과를 얻을 수 있다. 또한, LLM은 학습된 데이터를 기반으로 프롬프트의 요청을 수행하므로, LLM 자체 기능으로는 학습된 데이터 기반으로만 요청을 수행하게 된다는 한계가 있을 수 있다. 따라서, 에이전트에 최신 데이터가 필요한 경우 일부 도구를 통해 이를 제공해야 한다.
How do tools work?
LLM에 도구를 제공한다는 것은 LLM에게 도구의 존재에 대해 가르치고 필요할 때 도구를 호출할 텍스트를 생성하도록 모델에 요청하는 것을 의미한다.
예를 들어, 인터넷에서 특정 위치의 날씨를 확인하는 도구를 제공한 다음 LLM에게 파리의 날씨에 대해 질문하면, LLM은 해당 질문을 설계자가 가르친 '날씨' 도구를 사용할 수 있는 적절한 기회로 인식한다. LLM은 특정 위치의 날씨는 확인하는 도구를 호출하기 위해 코드 형태로 텍스트를 생성한다. LLM의 출력을 구분 분석하고, 도구 호출이 필요하다는 것을 인식하고, LLM을 대신해서 도구를 호출하는 것이 에이전트의 책임이다.
도구 호출 단계는 일반적으로 사용자에게 표시되지 않으므로, 사용자의 관점에서 보면 LLM이 도구를 사용한 것으로 인식하지만 실제로는 이것은 application code(에이전트)에 의해서 수행되는 것이다.
How do we give tools to an LLM?
기본적으로 시스템 프롬프트를 사용하여 모델에 사용 가능한 도구에 대한 텍스트 설명을 제공한다. 이 작업을 수행하기 위해서는, 두 가지 사항에 대해 정확히 알고 있어야 한다.
- What the tool does
- What exact inputs it expects
구체적인 예를 통해 이것을 이해하기 위해, 두 개의 정수를 곱하는 calculator 도구를 구현하는 상황을 고려해보자.
def calculator(a: int, b: int) -> int:
"""Multiply two integers."""
return a * b
print(calculator.to_string())
이 도구의 출력은 다음과 같이 설명할 수 있는 또 다른 정수일 것이다.
- (int): a와 b의 곱
이러한 세부사항은 모두 중요하다. LLM이 이를 이해할 수 있도록 도구를 설명하는 텍스트 문자열에 넣어보면 다음과 같아진다.
Tool Name: calculator, Description: Multiply two integers., Arguments: a: int, b: int, Outputs: int
이러한 설명은 시스템 프롬프트(System Message)에 삽입된다. 이러한 예제를 사용하여 시스템 프롬프트에 도구를 묘사하는 모습을 살펴보면 다음과 같아질 수 있다.
system_message="""
You are an AI assistant designed to help users efficiently and accurately.
Your privary goal is to provide helpful, precise, and clear responses.
You have access to the following tools:
Tool Name: calculator, Description: Multiply two integers., Arguments: a: int, b: int, Outputs: int
"""
▣ 어떤 유형의 task를 에이전트가 할 수 있을까?
에이전트는 작업을 완료하기 위해 도구를 통해 구현하는 모든 작업을 수행할 수 있다. 도구를 디자인하는 것은 매우 중요하며 에이전트의 품질에 큰 영향을 미친다. 일부 작업은 매우 구체적인 도구를 제작해야 하는 반면, 어떤 작업은 범용 도구를 사용하여 해결할 수도 있다. 작업이 한 개라고 해서 하나의 도구만 사용되는 것은 아니다. 예를 들어, 한 개의 작업을 완료하기 위해서는 여러 도구를 사용해야 할 수도 있다.
AI Agent가 사용되는 특정 태스트 예제:
- Siri, Alexa, Google 같은 Personal Virtual Assistants
- 고객 서비스 챗봇
- 게임에서 사용되는 AI Non-Playble Character(NPC)
요약하자면, 에이전트는 AI 모델(일반적으로는 LLM)을 핵심 추론 엔진으로 사용하여 다음 작업들을 수행하는 시스템이다.
- 자연어의 이해: 인간의 지시사항에 대해 응답하고 상호작용
- 정보를 분석하고, 의견을 수립하고, 문제 해결을 위한 전략을 고안함
- 환경과 상호작용: 정보를 수집하고 액션을 취하고, 그 액션의 결과를 관찰함
'AI > Machine Learning' 카테고리의 다른 글
Agentic Framework 사용 (0) | 2025.03.23 |
---|