복습 노트

AI에이전트 구축

에이블러 2025. 12. 3. 19:01

Agent는 신생 기술 → 선구자도 별로 없고 변화도 빠름

머신러닝 → Vision 딥러닝 1. Tensorflow (Google) Agent

                                    2. Pytorch (Meta)

 

LangChain → 모든 에이전트 구축의 기반 Base

 

< LangChainLCEL >               # LangChain은 언어, LCEL은 그 언어를 쓰기위한 문법 체계

LangChain : LLM 앱을 블록처럼 조립하는 프레임워크

-      핵심 개념

n  Retriever : 자료를 찾는 부품 (벡터 DB에서 찾음)

#Transformer에서 임베딩해서 벡터로 만드니까

n  OutputParser : 모델 출력을 표, JSON, 문장으로 정리

n  Tool : 외부 기능 호출(웹 검색, 계산)

n  Runnable : 위 부품들을 하나의 흐름으로 다루는 공통 인터페이스

LCEL (LangChain Expression Language)

-      선언형, 함수형 스타일로 흐름을 한 줄에 표현

-      Chain = prompt | model | parser

위 코드처럼 | 기호를 사용해 입력 → 모델 → 출력 처리 흐름을 파이프로 간단하게 연결할 수 있는 것이 LCEL의 핵심

# 자연어 처리에 RNN으론(시퀀스to시퀀스) 한계가 있어 Transformer(attention알고리즘)의 등장

-      Runnable 프로토콜 (LCEL의 핵심)

n  LancgChain의 모든 부품이 같은 규칙으로 연결되는 공용 어댑터

# 같은 규칙 = 입력 형식, 출력 형식, 실행 방법이 통일

n  LangChain Runnable이 하나의 표준 인터페이스가 됨

u  부품(프롬프트, 리트리버, LLM, 파서)블록처럼 끼워 맞출 수 있음

u  다른 모델, 벡터DB로 갈아 끼워도 코드 대부분 그대로 유지 가능

1.     RunnableSequence – 순차적 파이프라인

여러 컴포넌트를 순서대로 연결한 실행 흐름 (직선 파이프라인)

# 가장 기본적인 조립 방식, 파이프( | )로 눈에 보이는 순서 표현

2.     RunnableParallel – 병렬적 멀티태스킹

하나의 입력을 router 에이전트를 이용해 여러 갈래로 동시에 보내고, 결과를 한 바구니에 모으는 패턴

 

 

 

< RAG 아키텍처 >

-      RAG (Retrieval-Augmented Generation)

n  외부 지식(최신 혹은 사내 자료)을 찾아 근거와 함께 답을 만드는 방식

n  LLM의 약점인 환각(Hallucination) 현상을 완화하는 것이 핵심 전략

1단계. 문서 적재 (Loading): PDF, 웹사이트, 노션, 위키, CSV, 내부 문서 등

2단계. 문서 분할 (chunking): LLM이 다룰 수 있는 크기로 잘라 검색 정확도와 맥락 보전의 균형을 맞추는 작업

-      권장 기본 설정 : 청크 크기( chunk_size ) : 300~800토큰 범위에서 시작

겹침(overlap) : 10~20% → 문장 끊김 완화

3단계. 색인화 (Indexing % Embedding): 분할된 문서 청크를 의미 기반으로 검색할 수 있도록 특수한 색인(벡터)로 저장

임베딩 모델 = 검색 품질의 절반 → 한국어 지원 및 도메인 적합성 확인 필요

4단계. 검색 (Retrieval): 사용자의 질문을 벡터 좌표로 전환(embedding), 의미적으로 가장 유사한 문서 청크들을 신속하게 탐색

최종흐름. 전달(주입 Prompt stuffing): 검색된 관련 문서 청크를 사용자 원본 질문과 함계 템플릿에 넣어 LLM에게 참고 자료로 전달 → LLM은 참고 자료를 바탕으로 최종 답변

 

-      RAG 성능 용소

1.     리트리버(Retriever)

A.     유사도 검색: 질문과 의미적으로 가장 유사한 문서 조각(Chunk)를 찾는 방식

B.     MMR(Maximal Marginal Relevance): 유사도 높은 결과만 제시할 경우 중복 가능성 존재 → 유사도를 유지하면서 결과의 다양성을 확보

2.     프롬프트 : 명확학게, 수치 기반 작성

A.     지시문: LLM의 역할과 답변 생성 규칙을 정의

B.     컨텍스트: 리트리버가 검색한 문서 조각들이 삽입되는 영역

C.     질문: 사용자의 원본 질문이 삽입되는 영역

 

LLM의 근본적인 특징: 상태 비저장(Stateless)

-      방금 말한 것을 알지 못함. 한번 대답하면 끝. 메모리가 없는 LLM 애플리케이션은 단답형 Q&A만 가능 → 대화 기록 저장소의 역할을 하는 메모리 아키텍처가 필요

 

LangSmith(=LangGraph) : AI 어플리케이션 관제 역할

복잡하고 예측 불가능한 LLM 애플리케이션을 안정적이고 지속적 개발 및 개선을 위해 필수인 관제 센터

-      LLM 앱의 블랙박스를 확인하여 어디서 비용이 발생하고 어디서 틀렸는지 확인 가능

-      주요 역할

n  추적(Tracing): “사용자 질문 → 검색 → 생성각 단계의 시간, 비용, 토큰을 기록

i.             문제 발생 시 원인을 신속하게 파악 가능

ii.            병목 지점과 비용 폭탄을 바로 확인 가능

n  평가(Eval): “AI가 얼마나 똑똑한가?” 를 정기적으로 시험하고 정량적으로 평가

n  피드백 수집 및 학습: 문제점 파악하고 지속적 개선

i.             실제 운영 데이터 기반 AI모델과 프롬프트를 점진적으로 발전시키는 LLMOps 핵심 활동

 

Ops = Operation (운영) : 배포된 모델에 대해서 계속 개선 → 자동화를 목표

1.     제일 먼저 등장 DevOps : 개발과 운영 사이 Operation 시스템 싸이클

CI(지속적인 통합), CD(지속적인 개발)

2.     MLOps : 머신러닝 Operation

CI(지속적인 통합), CD(지속적인 개발), CT(지속적인 훈련)

3.     LLMOps : 자연어 기반 처리 Operation

4.     AIOps, AgentOps

 

CrewAI: task(작업)기반으로 필요한 Agent 또는 Tool을 구현해서 Crew로 묶어서 Agent System을 만듦                               # 실습 → 모든 문서는 Markdown 형태로

-      역할, 목표가 명확한 여러 자율 에이전트들이 하나의 팀(Crew)를 이뤄 프로세스에 따라 협력 오케스트레이션 프레임워크

# yaml 파일: 반정형 타입으로, system 구성에 필요한 config 정보들을 텍스트 형태로 저장

 

# 프롬프트 분류 (config에 넣음)

Instruction (명령) : Role, Goal

Description (설명) : tool, task, information, Docstring

 

LLM은 어떻게 Agent를 어떻게 호출해서 사용할까?

-      프롬프트를 사용한다! 이때 프롬프트는 Description

 

CrewAI 구성 요소

-      Agent

n  특정 역할, 목표를 가진 자율 행위 단위

n  단순한 LLM 호출이 아닌 고유한 설정(config~.yaml 파일에)을 가진 상태 저장 객체(Stateful Object)

-      Task: 에이전트에게 할당된 상세한 업무 지시서(설명, 기대 산출물, 수행 담당 에이전트)

-      Crew: 작업을 조율하는 프로세스 관리자

 

Agent 설계: 세 가지 요소를 구체적, 명확히 정의할수록 에이전트의 일관성과 결과물 품질 향상

-      role: 에이전트의 전문성과 권한을 정의

-      goal: 에이전트가 달성해야 할 구체적인 산출물의 기준과 성공 조건을 명시

-      backstory: 에이전트의 응답 스타일, 상황 맥락, 전문성의 깊이를 부여          # 톤앤매너

-      행동 제어 및 주요 파라미터                     # 행동 제어: prompt, Hyper Parameter

n  llm: 에이전트가 사용할 특정 LLM모델 지정

n  max_iter: 최대 반복 횟수                   # 무한 루프 방지

n  max_rpm: 분당 요청 수 제한             # 과도한 API 비용 발생 방지

n  allow_delegation: 에이전트가 자신의 능력을 벗어나는 과업을 다른 에이전트에게 위임 여부 결정

n  verbose: 모든 사고 과정을 로그로 출력

Tools – 에이전트의 능력 확장

-      내장 도구: 웹 검색, 웹사이트 스크래핑, 파일 읽기/쓰기 등 CrewAI가 기본 제공하는 도구

-      커스텀 도구: 개발자가 직접 정의한 Python 함수                 # @tool 데코레이터 사용

Tasks – 업무 지시서

-      Task는 에이전트의 행동 범위를 명확히 하고 결과물의 품질을 보증하는 가장 중요한 수단

-      핵심 구성요소: description(설명), expected_output(기대 산출물)

Crew오케스트레이션

-      Sequential(순차적 프로세스): 정의된 순서대로 Task를 진행    # 프로세스가 정형화된 경우

-      Hierarchical(계층적 프로세스): 매니저 역할 LLM이 존재. 최종 목표를 분석하고 필요한 Task들을 동적으로 계획                   # 프로세스가 가변적인 경우 적합

 

CrewAIRAG를 구현하는 두가지 방법

1.     Knowledge (지속형 레퍼런스): CrewAgent에 연결되는 지속적으로 참조되는 핵심 지식 베이스

2.     Rag Tool (일회성, 실행형 툴): 특정 Task를 수행하는 중 즉시 특정 데이터 소스 기반 질의가 필요할 때 에이전트가 능동적으로 사용하는 툴

 

 

LLM들은 수학을 못한다. transformer는 자연어를 기반으로 다음에 올 단어를 예측해서 답을 주기 때문에 연산이 아님.

agenttemperature0~1의 값을 가짐 → 1에 가까울수록 상상력이 높다 = 환각(허구성)

보통 0.2~0.3정도 → 문장이 적당히 매끄러워지고 환각은 낮음

'복습 노트' 카테고리의 다른 글

IT 인프라 2  (0) 2025.12.17
IT 인프라 1  (1) 2025.12.15
생성형AI 2  (1) 2025.11.23
생성형AI 1  (0) 2025.11.14
딥러닝  (0) 2025.11.05