- Published on
AI agent
- Authors

- Name
- valery
AI agent
환경을 인식(Perceive)하고, 계획(Plan)을 세우며, 도구(Tool)를 활용해 자율적으로 목표를 달성하는 소프트웨어 시스템
1. 일반 LLM vs Agentic LLM (LLM-based agent)
| 구분 | 일반 LLM | Agentic LLM |
|---|---|---|
| 기본 동작 방식 | 한번의 응답 생성 | 여러 단계를 거쳐 작업 수행 |
| 외부 도구 활용 | 불가능 또는 제한적 | 가능(검색, 계산, 코드 실행 등) |
| 문제 해결 방식 | 주어진 입력에 반응 | 목표를 세우고 능동적으로 진행 |
| 실행 흐름 | 단발성 | 목표 달성 시까지 반복적 루프 실행 |
2. 에이전트의 형태
- 발전 1 > 5
- Simple-Reflex Agent
- 조건이 보이면 정해진 행동을 한다
- 벽 만나면 방향 바꿈
- Model-based Reflex Agent
- 현재 입력 + 내부 상태/세계 모델 → 행동 선택
- 벽 위치와 지나간 곳을 기억하면서 이동
- Goal-based Agent
- 행동의 기준이 목표 달성 여부
- 방 전체 청소라는 목표를 향해 이동
- Utility-based Agent
- 가능한 행동들 중에서 가장 만족도/효용이 높은 행동 선택
- 배터리, 시간, 효율을 고려해서 최적 경로 선택
- LLM-based Agent / Agentic LLM
- LLM을 두뇌처럼 쓰고, 도구·메모리·계획을 붙여서 작업을 수행하는 에이전트
- “거실 먼저 청소하고, 먼지 많은 곳은 두 번 돌고, 배터리 부족하면 충전 후 이어서 해” 같은 복잡한 지시를 이해하고 계획을 세워 도구와 센서를 쓰며 수행
3. 에이전트의 구성요소
1. 지식기반 및 추론엔진(LLM)
- 두뇌 역할
- 사용자의 말을 이해하고, 지금 상황을 해석하고 다음에 뭘 할지 판단하고 마지막에 답변을 생성
2. 도구 사용
- 외부 도구 호출
- 도구는 일종의 함수이다
- 도구 호출 = func call
3. 메모리
- 단기메모리: 현재 세션
- 장기메모리: 사용자 선호도 같은 거
4. 계획수립
- 복잡한 목표를 작은 작업들로 쪼개고 순서를 정함
5. 실행환경(Runtime)
- LLM, Tool, Memory, Planning들을 연결해서 동작하게하는 역할
- 에이전트 루프를 관리하고, 이벤트 큐, 비동기 실행, 오류 복구를 담당
에이전트의 기본 루프
- 사용자 입력을 받음
- 현재 상황을 이해함
- 계획을 세움
- 필요한 도구를 호출함
- 도구 결과를 관찰함
- 다음 행동을 정함
- 목표 달성까지 반복함
- 최종 답변을 생성함
에이전트 추론 패턴
ReAct(Reasoning + Acting)
생각하고 → 도구를 사용하고 → 결과를 관찰하고 → 다시 생각하는 방식.
CoT(Chain-of-Thought)
단계별로 순차적으로 추론하는 방식.
ToT(Tree-of-Thoughts)
여러 해결 경로를 트리처럼 탐색하고 비교하는 방식.
MCTS(Monte Carlo Tree Search)
여러 선택지를 시뮬레이션하면서 좋은 경로를 찾는 탐색 방식.
게임이나 최적화 문제에 강하지만 평가 함수가 필요하다.
4. 에이전트 실행환경
LLM 호출, 도구 실행, 메모리 관리, 오류처리, 루프 제어 등을 조율하는 인프라
1. Cloud에서 로컬환경으로 넘어갈 때의 특징
환경 접근성 System Access 에이전트가 로컬 파일, 터미널, 이메일 같은 실제 환경에 접근할 수 있음.
보안 Security 로컬에서 실행하면 민감한 정보 보호에 유리할 수 있음. 단, 로컬 접근 권한이 커지면 위험도 같이 커짐.
지속성 Persistence 몇 시간 또는 며칠 동안 이어지는 장기 작업을 수행할 수 있음.
2. 에이전트 실행환경의 주요요소
- 이벤트 시스템(event system)
- event loop, queue system
- 컨텍스트 관리(context management)
- 라우팅(routing)
- 도구 사용(tool use)
- MCP(Model Context Protocol)
- 능력 확장(capability extension)
- Skills, hooks
- UI 및 협업
- 외부 channel
- 에이전트간 통신: A2A(agent-to-agent), ACP(agent communication protocol)
흐름
사용자 요청이 들어옴
→ 작업 이벤트로 등록
→ 필요한 컨텍스트 불러옴
→ 어느 도구/에이전트가 처리할지 라우팅
→ 도구 실행
→ 결과를 다시 컨텍스트에 반영
→ 필요하면 다른 에이전트나 UI 채널과 협업
→ 최종 응답 생성
5. 단일 에이전트와 다중 에이전트
- 단일: 혼자 작업
- 다중: 복수의 상호작용하는 에이전트로 구성
6. 에이전트 통신
Model Context Protocol (MCP)
- LLM 애플리케이션과 외부 데이터 소스·도구를 연결하는 표준 프로토콜
- AI 모델과 외부 시스템 사이의 공통 인터페이스 역할
- 기존 API 방식은 도구마다 개별 연결이 필요함
- MCP는 다양한 도구를 일정한 방식으로 연결할 수 있게 함
- 에이전트의 Tool Use와 Context 연결을 표준화하는 개념
MCP 구조
MCP Host // Claude Desktop, Cursor, 자체 앱처럼 LLM을 구동하는 바깥 환경
├─ MCP Client // Host 안에서 MCP Server와 1:1 연결을 관리하는 컴포넌트. 사용자가 관리하진 않음
│ └─ MCP Server // 실제 기능 제공
│ ├─ Tools // 실행가능한 함수(ex: search_file(), query_db())
│ ├─ Resources // 읽을 수 있는 데이터(ex: 파일, 문서, DB)
│ └─ Prompts // 재사용 가능한 프롬프트 템플릿
예시
사용자:
"DB에서 최근 가입자 10명 조회해줘"
Host:
Claude Desktop 또는 Cursor
MCP Client:
DB MCP Server와 연결 관리
MCP Server:
query_db(sql) 도구 제공
Tool:
query_db("SELECT ... LIMIT 10")
Result:
DB 조회 결과 반환
LLM:
결과를 읽고 사용자에게 답변
MCP 통신 채널 방식
SSE(Server-Sent Events)
- HTTP 기반
- URL로 접근
- 서버가 먼저 실행되어 있어야 함
- 원격/상시 실행 서버에 적합
예시
Claude Host
→ http://localhost:3000/mcp
→ MCP Server
→ 도구 실행 결과 반환
Stdio
- 표준 입력/출력 기반
- 로컬 프로세스를 Host가 직접 실행
- HTTP 서비스가 아님
- 로컬 도구나 CLI 기반 MCP 서버에 적합
예시
Claude Host
→ python weather_server.py 실행
→ stdin으로 get_weather 요청
→ stdout으로 결과 받음
A2A(Agent-to-Agent)
에이전트끼리 서로 통신하기 위한 표준 프로토콜
서로 다른 에이전트들이 자신의 능력을 공개하고, 상대 에이전트와 직접 통신하며, 작업을 주고받을 수 있게 하는 것
MCP와의 차이점
- MCP
- 에이전트 ↔ 도구 / 데이터 / API
- 에이전트가 손에 도구를 쥐는 방식
- 수직 연결
- A2A
- 에이전트 ↔ 에이전트
- 에이전트끼리 서로 일을 주고받는 방식
- 수평 연결
Agent Card
Agent 자기 명세서
에이전트의 능력과 접속 정보를 JSON으로 표현한다.
- 예시
{
"name": "BackendAgent",
"description": "Express API와 DB 로직을 구현하는 에이전트",
"capabilities": {
"streaming": true,
"stateTransitionHistory": true
},
"skills": [
{
"id": "create_api",
"name": "Create API Endpoint",
"description": "요구사항에 맞는 API 엔드포인트를 생성합니다."
}
]
}
7. 개발 프레임워크
LangChain
LangChain은 LLM 애플리케이션 개발을 위한 오픈소스 프레임워크이다.
LLM 연결, 프롬프트 템플릿, 체인 구성, 외부 데이터 연결, 메모리 관리 등을 지원한다.
RAG(Retrieval-Augmented Generation): 검색으로 보강된 생성
LangChain이란 프레임워크를 이용한 RAG 워크플로우 구성 예:
- Document Loader로 문서를 불러오고,
- Splitter로 문서를 나누며,
- Vector Database에 임베딩으로 저장하고,
- 질문과 관련된 문서를 검색해 LLM 답변에 활용한다.
LangChain 기본 구조: PromptTemplate + LLM + Chain
LangGraph
LangChain이 “LLM 작업 부품을 연결하는 프레임워크”라면, LangGraph는 그 작업 흐름을 그래프 구조로 더 명확하게 제어하는 프레임워크
- 각 작업 후 자동으로 상태 저장 > 에이전트가 이전 대화 기록과 상태 기억
- Researcher: 정보 수집 담당 노드
- Router: 다음에 어느 노드로 보낼지 결정하는 노드
예시
사용자 질문:
"이 프로젝트의 로그인 오류 원인 찾아줘"
Router:
이건 코드 분석 작업이네.
→ Code Analysis Agent로 보냄
Code Analysis Agent:
파일과 로그 분석
Router:
테스트가 필요하네.
→ Test Agent로 보냄
Test Agent:
테스트 실행 후 결과 반환
구성요소
1. Node
하나의 작업 단계
예:
- 사용자 입력 받기
- 문서 검색하기
- LLM 답변 생성하기
- 코드 실행하기
- 테스트하기
- 리뷰하기
2. Edge
다음에 어떤 노드로 갈지 정하는 연결 경로
예:
입력 노드 → 전처리 노드 → 답변 생성 노드 → 종료
3. State
워크플로우가 진행되면서 유지되는 정보
예:
- 대화 기록
- 사용자 요청
- 검색 결과
- 도구 실행 결과
- 에러 로그
- 현재 작업 단계
Prompt Engineering
프롬프트: 언어 모델에 전달할 정보를 포함한 문장
1. 프롬프트 구성요소
- 지시(instruction): 언어 모델이 수행하길 원하는 특정 작업 내용 지시
- 아래 글을 세 문장으로 요약하시오
- 문맥(context): 모델의 대답을 원하는 형태로 가공하기 위한 외부정보 또는 추가 문맥
- 대상 독자는 고등학생이고, 어려운 용어는 피해야 한다
- 입력데이터(input data): 답변을 얻고자 하는 질문 입력
- "인공지능은 대량의 데이터를 학습하여 패턴을 찾아내고..."
- 출력 지시자(output indicator): 출력 형태 지시
- 출력은 번호 목록으로 작성하시오
- 주어진 텍스트를 파악해 반응할 감정을 긍정적 부정적 ... 으로 분류하시오.
- 주어진 감정에서 소분류를 진행하시오(부정적이면 분노, 짜증, 귀찮음 등등)
- 프롬프트에는 주어진 양식이 없으며, 일관성 있게 표현하면 언어모델이 이해하는 형태
2. 프롬프트 설계의 일반론
- 반복적 개선: 간단하게 시작해서 최적의 결과가 나올 때까지 삽질하기
- 지시의 구체적 단어 사용: 언어모델에게 지시하는 명령어 사용(ex: write, classify, order 등)
- 상세한 질문과 지시 표현: 자세하고 구체적으로 지시할 수록 답변 품질 개선
- 애매한 표현 회피: 구체적이고 직접적인 표현 사용
- 하지 말 것 대신 할 것을 지시: '~를 하지 마십시오' 보다 '~를 해라'가 성능이 더 좋다
- 복잡한 작업인 경우 수행할 과정의 분명한 기술: 번호 등을 사용한 구체적 단계 표현
3. 프롬프트 설계에 유용한 지시사항 예제문
1. 언어 스타일과 형식 지정
격식 있는 언어, 불릿 포맷, 용어 병기, 분량 제한 등 출력 스타일을 통제하는 예제.
## General Instructions
- Use formal language.
- Provide answers in a bullet-point format.
- When discussing technical concepts, include both the Korean term and its English equivalent in parentheses.
## Response Requirements
- Answer should not exceed 300 words.
- Include examples to illustrate complex points.
- Use Markdown headers for organization.
2. 기술적 내용에 대한 자세한 설명 요청
어려운 개념을 쉬운 용어와 비유로, 단계별로 풀어서 설명하게 하는 예제.
## Technical Explanation Instructions
- Explain technical concepts in simple terms.
- Use analogies to make the explanation more relatable.
- Break down the explanation into step-by-step processes.
## Additional Requirements
- For each technical term, provide a brief definition.
- Include a practical example of how the concept is applied in real life.
- If relevant, link to official documentation or further reading (note: assume links will be added manually).
3. 창의적인 작업을 위한 지시사항
스토리 설정과 시점, 톤·문체까지 지정해 창작 결과물의 방향을 잡는 예제.
## Creative Writing Instructions
- Write a short story set in a futuristic world.
- The narrative should be from the perspective of a non-human character.
- Incorporate themes of technology and isolation.
## Style and Tone
- The tone should be reflective and slightly melancholic.
- Use descriptive language to create vivid imagery.
- Dialogues should be minimal but impactful.
4. 데이터 분석 요청
핵심 발견 요약, 시각화, 패턴·이상치 도출과 보고서 구성까지 지정하는 예제.
## Data Analysis Request Instructions
- Provide a summary of the key findings from the data provided.
- Use charts or graphs to illustrate data points (note: assume visual aids will be created based on instructions).
- Highlight any patterns, anomalies, or interesting insights.
## Presentation and Format
- Begin with a brief introduction to the data set.
- Organize the analysis into sections: Overview, Key Findings, Visual Aids, and Conclusion.
- Conclude with recommendations based on the analysis.
4. 프롬프트 엔지니어링 기법
1. 제로-샷 프롬프팅(Zero-shot Prompting)
예시 없이 프롬프팅
2. 퓨-샷 프롬프팅(Few-shot Prompting)
몇 개의 예시를 제공
3. 사고사슬 프롬프팅(Chain-of-Thought/CoT Prompting)
- 생각을 연결해서 제시. step-by-step 설명
- 논리적인 순서로 설명
- 코드 학습은 단계적·절차적 패턴을 제공하기 때문에 CoT 능력 형성에 기여했을 가능성이 있다.
예시
요구사항:
사용자가 이메일과 비밀번호로 로그인할 수 있어야 한다.
단계:
1. 사용자가 이메일과 비밀번호를 입력한다.
2. 이메일 형식이 올바른지 확인한다.
3. DB에서 해당 이메일의 사용자를 찾는다.
4. 사용자가 없으면 로그인 실패를 반환한다.
5. 사용자가 있으면 비밀번호를 비교한다.
6. 비밀번호가 맞으면 JWT를 발급한다.
7. 클라이언트에 토큰을 반환한다.
Few-shot CoT
- 사고 과정에 대한 적어도 하나 이상의 사례 제공
예시
Q: 철수는 사과 3개를 가지고 있고, 2개를 더 샀다. 사과는 몇 개인가?
A: 철수는 처음에 사과 3개를 가지고 있다.
거기에 사과 2개를 더 샀다.
따라서 3 + 2 = 5이다.
정답은 5이다.
Q: 영희는 연필 10자루를 가지고 있었다. 친구에게 4자루를 주었다. 몇 자루가 남았는가?
A: 영희는 처음에 연필 10자루를 가지고 있었다.
친구에게 4자루를 주었으므로 빼야 한다.
따라서 10 - 4 = 6이다.
정답은 6이다.
Q: 민수는 공책 7권을 가지고 있고, 3권을 더 샀다. 공책은 몇 권인가?
A:
Zero-shot CoT (2022)
사례를 제공하지 않고, 첫번째 프롬프트 끝에 아래 문장 추가
- “Let’s think step by step.” (trigger sentence/magic sentence)
프롬프트와 출력 결과에 답변 출력을 위해 아래 문장 추가한 프롬프트 적용
- “Therefore, the answer (arabic numerals) is”
예시
Q: 철수는 사과 3개를 가지고 있고, 2개를 더 샀다. 그 후 1개를 먹었다. 사과는 몇 개인가?
Let's think step by step.
4. 자기 일관성 (Self-Consistency, 2022) 기법
동일한 프롬프트로 여러 결과를 생성하고 좋은 것을 사용자 또는 ChatGPT가 선택
5. 사고 트리(tree of thoughts, ToT, 2023) 프롬프팅
여러 문제해결 방법을 동시에 탐색해가며 각 경로의 장단점을 비교하면서 적합한 답변 선택
예시
경로 A: 수학/이론 중심
- 선형대수, 확률, 미적분
- 머신러닝 이론
- 딥러닝 구조
- 논문 읽기
경로 B: 구현/프로젝트 중심
- Python, PyTorch
- 간단한 신경망 구현
- Transformer 미니 구현
- RAG/챗봇 프로젝트
경로 C: 제품/응용 중심
- API 사용
- 프롬프트 엔지니어링
- LangChain/LangGraph
- 서비스 배포
경로 D: 취업/포트폴리오 중심
- 기본 CS
- CRUD + AI 기능 결합
- GitHub 정리
- 블로그 기록
경로 A:
이론은 강해지지만, 초반 진입 장벽이 높고 결과물이 늦게 나온다.
경로 B:
실력이 빨리 붙고 결과물이 생기지만, 이론 이해가 얕아질 수 있다.
경로 C:
서비스는 빨리 만들 수 있지만, 모델 원리를 모른 채 도구 사용에 머물 수 있다.
경로 D:
취업/포트폴리오에는 좋지만, 생성형 AI 자체의 깊이는 부족할 수 있다.
6. 사고 그래프(graph of thoughs, 2023)
- 문제 해결 구조로 그래프를 사용
- 생각이 독립된 가지로만 끝나는 게 아니라, 서로 합쳐질 수 있고, 수정될 수 있고, 이전 단계로 되돌아갈 수 있다.
7. ReAct(Reason + Act)
주어진 입력에 대해 모델이 응답을 생성한 후, 그 응답을 스스로 평가하고 응답을 수정하거나, 추가적인 정보를 요청하거나, 다른 접근 방식을 시도하는 등의 행동 반복
8. Reflexion
ReAct에 자기 평가, 자기 성찰, 메모리를 추가한 것
a 작업 정의,
b 궤적 생성,
c 평가,
d 성찰(reflection) 수행,
e 다음 궤적 생성
1. Actor가 행동한다
2. Environment가 결과나 보상을 준다
3. Evaluator가 성공/실패를 평가한다
4. Self-reflection이 실패 원인이나 개선점을 언어로 정리한다
5. 그 내용을 Memory에 저장한다
6. 다음 시도에서 Actor가 그 메모리를 참고한다
7. 성공할 때까지 반복한다