yhansol
hansol
yhansol
전체 방문자
오늘
어제
  • 분류 전체보기 (27)
    • 😎 (1)
    • database (5)
    • mobile (1)
    • node.js (7)
    • javascript (3)
    • java (4)
    • 자료구조 (1)
    • 관련서적 (0)
    • git & github (0)
    • http (2)
    • python (1)
    • aws (1)
    • ai (1)

블로그 메뉴

  • 방명록
  • 🐱github
  • 💡notion
  • instagram

공지사항

인기 글

태그

  • Asynchronous
  • NPM
  • velog
  • graphQL
  • GPT
  • github
  • 계층형쿼리
  • Chrome
  • llm
  • SQL
  • obejct
  • Synchronous
  • BASE64
  • Node
  • bun
  • Non blocking
  • JavaScript
  • JRebel
  • V8
  • intellij
  • NoSQL
  • RESTful
  • TypeScript
  • pm2
  • MongoDB
  • Database
  • decoding
  • redis
  • 생활코딩
  • node.js

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
yhansol

hansol

ai

Agent

2026. 3. 14. 18:38
728x90
반응형

AI Agent 개발 정의서

백엔드 개발자를 위한 AI Agent 개념 정리


1. AI Agent란?

정의

"LLM을 두뇌로 사용하는 자율 실행 프로세스"

단순히 질문에 답하는 LLM과 달리, Agent는 목표(Goal) 를 주면 스스로 계획을 세우고, 필요한 도구를 선택해 실행하며, 결과를 보고 다음 행동을 결정하는 루프를 반복해 목표를 달성한다.

기존 LLM과의 차이

구분 기존 LLM (ChatGPT 등) AI Agent
동작 방식 질문 → 답변 (단발성) 목표 → 계획 → 반복 실행 → 완료
상태 Stateless Stateful (메모리, 컨텍스트 유지)
외부 연동 없음 Tool 호출 (API, DB, 파일 시스템 등)
루프 없음 결과를 보고 다음 행동 결정 (ReAct Loop)
자율성 없음 목표 달성까지 스스로 판단 및 실행

2. 백엔드 관점으로 이해하기

백엔드의 일반적인 요청 처리 흐름:

Request → Controller → Service → Repository → External API → Response

Agent의 실행 흐름:

Goal → LLM (판단) → Tool 선택 → Tool 실행 → 결과 관찰 → LLM (재판단) → ... → 완료
백엔드 개념 Agent 개념
Service Layer (비즈니스 로직) LLM (자연어로 로직을 판단하는 레이어)
Repository / External API 호출 Tool (실제 실행 단위)
Workflow / Saga Pattern Planning (태스크 오케스트레이션)
Session / Cache Memory (상태 유지)
Event Loop ReAct Loop (Think → Act → Observe 반복)

핵심은 기존에 개발자가 if/else로 하드코딩했던 로직을, LLM이 런타임에 동적으로 판단한다는 것이다.


3. 핵심 구성요소

3-1. Tool

LLM이 호출할 수 있는 함수 단위. Agent의 "손발" 역할.

// Tool 정의 예시 (백엔드 함수와 동일한 구조)
const tools = [
  {
    name: "search_stock_price",
    description: "특정 종목의 현재 주가를 조회한다",
    parameters: {
      ticker: { type: "string", description: "종목 코드 (e.g. AAPL)" }
    },
    execute: async ({ ticker }) => stockApiClient.getPrice(ticker)
  },
  {
    name: "run_sql",
    description: "데이터베이스에서 데이터를 조회한다",
    parameters: {
      query: { type: "string", description: "실행할 SQL 쿼리" }
    },
    execute: async ({ query }) => db.query(query)
  },
  {
    name: "send_slack",
    description: "슬랙 채널에 메시지를 발송한다",
    parameters: {
      channel: { type: "string" },
      message: { type: "string" }
    },
    execute: async ({ channel, message }) => slackClient.send(channel, message)
  }
];

LLM은 Tool의 name과 description을 보고 어떤 Tool을 언제 쓸지 판단한다. 즉, Tool 설명을 잘 쓰는 것 = Agent 품질에 직결.


3-2. Memory

Agent가 상태를 유지하는 방식. 크게 두 가지로 나뉜다.

유형 설명 백엔드 비유
Short-term Memory 현재 대화/작업의 컨텍스트 Request-scoped 변수, 세션
Long-term Memory 과거 경험, 사용자 정보 등 영구 저장 Vector DB, Redis, RDB

Long-term Memory는 보통 Vector DB(Pinecone, pgvector 등)를 사용해 의미 기반 검색으로 필요한 과거 정보를 꺼내온다.


3-3. Planning

복잡한 목표를 서브태스크로 분해하고 실행 순서를 결정하는 단계.

Goal: "이번 달 실적 부진 종목 분석 후 리포트 발송"

Plan:
  1. DB에서 이번 달 종목별 수익률 조회
  2. 하위 10% 종목 필터링
  3. 각 종목의 최근 뉴스 수집
  4. 분석 리포트 작성
  5. 슬랙 발송

Saga Pattern이나 Workflow Orchestration과 개념이 유사하지만, 실행 계획 자체를 LLM이 동적으로 생성한다는 점이 다르다.


3-4. ReAct Loop

Agent의 실행 사이클. Reasoning + Acting의 합성어.

[Thought]   목표를 달성하려면 먼저 DB에서 데이터를 조회해야 한다.
[Action]    run_sql("SELECT * FROM stocks WHERE month = '2026-03'")
[Observe]   결과: [{ticker: 'AAPL', return: -12%}, ...]
[Thought]   AAPL이 부진하다. 관련 뉴스를 찾아봐야 한다.
[Action]    search_news("AAPL 2026년 3월")
[Observe]   결과: "실적 발표 미스로 주가 하락..."
[Thought]   분석이 충분하다. 리포트를 작성하고 발송한다.
[Action]    send_slack("#trading", "3월 부진 종목 분석: ...")
[Observe]   발송 완료
[Done]

4. Agent 아키텍처 패턴

Single Agent

하나의 LLM이 모든 Tool을 직접 사용해 목표를 달성.
단순한 태스크에 적합.

User → Agent (LLM) → [Tool A, Tool B, Tool C]

Multi-Agent

복잡한 태스크를 여러 Agent가 역할 분담해 처리. 마이크로서비스 아키텍처와 유사.

User → Orchestrator Agent
          ├── Research Agent   → [Web Search Tool, News Tool]
          ├── Analysis Agent   → [SQL Tool, Code Execution Tool]
          └── Reporter Agent   → [Slack Tool, Email Tool]
패턴 설명 적합한 상황
Single Agent LLM 1개 + 여러 Tool 간단한 자동화, 빠른 프로토타이핑
Multi-Agent 역할별 LLM 분리 복잡한 워크플로우, 병렬 처리 필요 시
Human-in-the-loop 중간에 사람 승인 고위험 작업 (결제, 배포 등)

5. "Agent 개발"이 실제로 의미하는 것

요즘 언급되는 "AI Agent 개발"은 크게 두 가지 맥락이 있다.

(1) Agent 플랫폼/런타임 개발

Anthropic, OpenAI, Google 등이 하는 일. LLM 자체 + Tool 실행 엔진 + Memory 시스템을 직접 구축.

(2) Agent 기반 애플리케이션 개발 ← 대부분의 개발자

기존 LLM API + Agent 프레임워크를 활용해 서비스를 만드는 것.

백엔드 개발자 입장에서의 실제 작업:

  • Tool 설계 및 구현 (기존 서비스 API를 Tool로 래핑)
  • Memory 저장소 설계 (Vector DB 도입, 스키마 설계)
  • 시스템 프롬프트 작성 (Agent의 역할, 제약 조건 정의)
  • 에러 처리 및 fallback 로직
  • 비용 최적화 (LLM API 호출 횟수, 토큰 관리)

주요 프레임워크

프레임워크 언어 특징
LangChain Python / JS 가장 범용적, 생태계 풍부
LangGraph Python / JS 그래프 기반 복잡한 워크플로우
CrewAI Python Multi-Agent 특화
Claude Agent SDK Python Anthropic 공식, 이 도구가 사용하는 것
Vercel AI SDK TypeScript Next.js 친화적

6. 패러다임 전환 요약

기존 백엔드
  개발자가 모든 분기를 코드로 정의
  → if (condition) doA() else doB()

AI Agent
  LLM이 런타임에 분기를 판단
  → "이 상황에선 A가 맞겠다" (자연어 추론)

결론:
Agent 개발은 새로운 언어나 프레임워크를 배우는 것이 아니라,
"코드로 제어하던 로직의 일부를 LLM의 판단에 위임하는 설계 방식" 을 익히는 것이다.
백엔드 개발자가 API 설계하듯, Agent 개발자는 Tool 설계와 프롬프트 설계를 한다.

    yhansol
    yhansol

    티스토리툴바