251208 AI 강의 정리
- 강의의 시작
- 난 30년 sk에서 했다.
- EBS에서도 강의해봤다
- 로또복권 시스템 내가 만들었다
- 은행, 보험 카드도 했었다.
- 정부와 전세계 시장이 그렇듯 SK도 AI 관련 프로젝트를 수주해서 이것저것 많이 하려고 한다
- 그런 관점에서 AI교육이 얼마나 중요한지 생각해달라
- 이 교육은 실무 중심적이다
- 할게 많다.
- 압도적인 목차의 양
- 우리의 최종 목적은 AI 에이전트를 만드는 것
- 에이전트 활용
- GPT의 특징
- 과거 데이터다
- 실시간 데이터를 검색할 수 없다
- AI가 필요한 경우 도구를 직접 활용하도록 판단 할 수 있도록 함
- 이것이 에이전트임
- 추론이라는것
- 이것이 에이전트임
- AI가 필요한 경우 도구를 직접 활용하도록 판단 할 수 있도록 함
- 단순하게 질문,답변하는게 아니라 생각(판단)을 하여 내장된 도구를 활용하는 것
- 추론 -> 액팅
- LLM관점이 아니라 기본적으로 에이전트 관점임.
- GPT의 특징
- Fast API
- Fast API를 통해 서비스를 서빙해야 함.
- Fast API로 프론트엔드와 백엔드를 연결해줌
- 앞단에서 요청을 받아주는 역할
- Fast API로 프론트엔드와 백엔드를 연결해줌
- 보통 스프링부트 많이 쓰는데 FastAPI가 동일 레벨이라고 보면됨
- 프론트엔드와 주고받는것 뿐만 아니라 백엔드끼리 주고받기도 함.
- Fast API를 통해 서비스를 서빙해야 함.
- Gradio + Streamlit
- UI임.
- LLM 핵심 이해 및 활용
- 이제 AI에 시작이다
- 도메인에 적용하려는 시도를 하는중이다.
- LLM의 특징
- 단어와 단어를 확률적으로 계산해서 그럴듯한 문장 생성
- GPT
- 트랜스포머 모델
- 가장 혁신적인 모델
- 왜 게임체인저가 되었냐면
- RML, LSTM과 달리 병렬처리를 함
- 긴 문맥을 읽음.
- 단어간의 관계 뿐만 아니라 문장과의 관계를 바라보며, 이를 병렬적으로 읽고 해석함.
- GPU는 단순 연산을 병렬적으로 처리하는데에 특화됨
- 병렬적인 작업이 혁신적임.
- 병렬작업이 되면 블루스크린을 볼 일이 적음
- 병렬적인 작업이 혁신적임.
- 트랜스포머 모델의 압도적인 성능(병렬처리 기술)이 파워풀했기 때문에 혁신적임.
- 병렬처리
- [[Self attention]] <- 가장 중요함
- 각 단어가 어떻게 연관되는지 계산
-
- 포지션 인코딩 -> 문장을 만들고 다듬기
- 트랜스포머 모델
- LLM의 한계
- 사전 지식에만 의존
- 허위 정보
- 토큰 제한
- LLM의 한계 보완
- RAG
- 외부 지식을 실시간 검색
- 검색엔진 활용과는 다름
- 구조화 된 외부 지식을 LLM이 검색한다는 의미임
- 검색엔진 활용과는 다름
- 기업에서는 우리만의 정보를 임베딩 처리해서 활용하고 싶어 함.
- 임베딩
- 텍스트를 숫자,실수화 처리하는것
- 뒤에서 배울거임
- 텍스트를 숫자,실수화 처리하는것
- 임베딩
- 외부 지식을 실시간 검색
- 툴 사용
- LLM이 api, 검색 등 직접 호출하여 작업
- 멀티 스탭 추론
- 복잡한 문제를 여러 단계로 해결
- 최근 AI는 대부분이 추론 모델임.
- RAG
- 결론적으로 LLM만으로는 실질적인 서비스로 활용하기 어렵다.
- RAG
- 구성 요소
- retriever
- 유사한 문서나 내용을 벡터 검색
- documents
- 검색된 텍스트
- generator
- 검색 결과를 바탕으로 응답 생성
- retriever
- 활용 방법
- QA
- 사내 위키 봇
- 학습 보조
- 구성 요소
- Tool 사용
- LLM이 지시자 역할
- 실제 실행은 외부 Tool이 처리
- LLM이 지시자 역할
- 멀티 스탭 추론
- CoT, ReAct, Plan-and-Execute 등
- AI Agent의 필요성
- LLM을 중심으로 기억, 도구, 계획, 실행, 멀티 모듈 조정이 가능한 시스템 아키텍처가 필요함
- AI Agent = RAG + Tool 사용 + 멀티스텝 추론 등을 조합한 실행 엔진
- LLM과 AI Agent간의 비교
- LLM : 주어진 입력에 대해 확률적으로 가장 그럴듯한 출력 생성
- AI Agent : LLM을 기반으로 다양한 행동을 수행, 능동적 시스템
- AI Agent 아키텍처
- 내부적으로 어떻게 구성되고 작동하는가
- 구성 단위 기준으로 분류
- 단일 Agent 아키텍처
- 하나의 Agent가 모든 역할
- 멀티 Agent 아키텍처
- 역할별 Agent가 협력
- 단일 Agent 아키텍처
- 제어 및 실행 방식 기준으로 분류
- 계층형
- Router 기반
- Workflow 기반
- FSM 기반
- MCP 기반
- 그 뒷부분은 추후 확인
- RAG 핵심
- RAG 방법론
-
인코더, 디코더의 역할
-
RAG 프로세스
- 지식 베이스를 만드는 단계
- 프리 프로세싱
- 원본 데이터 정제
- 텍스트 추출
- 인덱싱
- chunk 분할
- 벡터 변환
- 벡터디비 저장
- 프리 프로세싱
- 런타임
- retrieval
- 사용자 질문 기반으로 문서 검색
- 질문 벡터화
- generation
- 검색된 K개의 청크와 사용자 질문을 결합하여 LLM에 Prompt로 전달
- LLM은 입력받은 Context 기반으로 최종 응답 생성
- retrieval
- 답변
- 지식 베이스를 만드는 단계
-
RAG 프로세스 상세
- Document Loader
- 여러 문서를 통일된 형식으로 취급
- Document Object로 만드는 과정임
- page contents
- metadata
- 보통 페이지 컨텐츠를 임베딩하고, 메타데이터는 검색 시 필터링/출처 제시에 활용
- 취급할 문서의 유형에 따라 적절한 Document Loader를 선택해야함.
- 랭체인에서 이러한 Document Loader 를 제공함
- 그렇기때문에 랭체인을 써야한다.
- 랭체인에서 이러한 Document Loader 를 제공함
- 일괄 처리를 위해서는 Directory Loader 와 연계 가능
- 각각의 문서를 연결해줘야 제대로 동작함.
- Text Splitter
- 크고 복잡한 문서를 LLM이 받아들일 수 있도록 작게 쪼개는 작업
- 과정
- 문서 구조 파악
- 문서의 헤더, 푸터, 페이지번호, 섹션제목, 테이블 구조 등을 식별
- 단위 선정
- 문서를 어떤 단위로 나눌지 결정
- 단위는 문서의 내용과 목적에 따라 정의하는 것이 필요
- 단위 크기 선정(chunk size)
- 문서를 몇개의 토큰으로 나눌지 결정
- chunk overlap
- 분할된 끝 부분에서 맥락이 이어질 수 있도록 일부를 겹쳐서 분할하는 것이 필요함.
- 사실 청크가 굉장히 중요함
- 문서 구조 파악
- Document Loader
-
토큰과 임베딩
- 토큰은 단어조각
- 문장을 단어 또는 서브워드로 쪼개어 나눈 조각 -> 단어 조각
- 텍스트를 처리 가능하도록 최소 단위로 분할
- 예시 : "I love Orange" ->
[I, love, Orange]
- 임베딩은 토큰을 벡터 공간으로 변환한 수치표현
- 단어별 의미 점수
- 토큰-> 숫자로 바꿔 신경망이 학습 가능하게 함.
- 단어에 의미를 입한 숫자 ID카드
- 토큰은 단어조각
-
토큰과 청크
- 토큰은 모델 입력의 기본 단위임
- 모델 학습 시 토큰ID로 변환되어 사용
-
청크
- 정의
- 긴 텍스트를 일정한 크기의 토큰으로 나눈 블록
- 토큰의 집합
- 여러 토큰을 하나의 청크로 구성
- 긴 텍스트를 일정한 크기의 토큰으로 나눈 블록
- 역할
- 모델이 한번에 처리할 수 있는 길이를 초과하는 경우 여러 블록으로 분할
- 방식
- 고정 길이 청크
- 슬라이딩 청크(일부 겹치게 잘라서 문맥 유지)
- 오버랩
- 정의
-
청킹
- 예시 텍스트
This is an example text for demonstration.
- Tokenizer (WordPiece 적용 예)
- 토큰 결과:
This,is,an,example,text,for,demonstration - 토큰 개수: 7개
- 토큰 결과:
- Chunking
- chunk size: 4
- chunk overlap: 2
- 생성된 청크:
- Chunk 1:
This,is,an,example - Chunk 2:
an,example,text,for - Chunk 3:
text,for,demonstration
- Chunk 1:
- 예시 텍스트
-
토크나이저 vs 청킹
- 2가지 방식 모드 유효하며, 목적에 따라 전략적으로 선택 가능함.
-
임베딩
- Text Split 단계에서 생성된 문서 단위들을 기계까 이해할 수 있는 수치적 형태로 변환하는 과정
- 사용자가 입력한 질문에 대해 DB에 저장된 문서 조각/단락을 검색하여 가져올때 유사도 계산 시 활용
- 임베딩의 필요성
- ㅇ
-
벡터 스토어
- 이전 단계에서 생성된 임베딩 벡터들을 효율적으로 저장하고 관리하는 과정
- 향후 검색과정에서 벡터들을 빠르게 조회하고 관련 문서를 신속하게 찾아내는데 필수적
-
고차원 공간에서의 거리 계산 한계
- 차원이 증가하면 문제 발생
- 고차원 희소성 문제
- 2차원에서는 유사한 점들이 가깝지만 100차원에서는 모든 점들이 비슷해짐
- 차원의 저주
- 차원이 커질수록 벡터 간 거리가 균등하게 증가
- 거리 기반 검색이 무의미해짐
- 데이터가 희소해져서 유사 벡터 못찾음
- 차원이 커질수록 벡터 간 거리가 균등하게 증가
- 고차원 희소성 문제
- 유클리드 거리
- 가장 기본적인 거리 측정 방식
- 피타고라스 정리 기반으로 벡터간의 직선 거리 계산
- 차원이 증가할수록 의미가 약해짐
- 모든 점들이 멀리 떨어짐
- 해결방법 -> 코사인 유사도
- 고차원에서 벡터 간 거리는 무의미할 수 있지만 방향은 의미를 가짐.
- 단어벡터는 방향을 비교하는 것이 효과적임.
- 고차원에서 벡터 간 거리는 무의미할 수 있지만 방향은 의미를 가짐.
- 차원이 증가하면 문제 발생
-
벡터 디비 인덱싱이란
- 임베딩을 효율적으로 저장하고 빠르게 검색하기 위해 데이터 구조와 검색 알고리즘 설계하는 방식
- 벡터 데이터를 구조화한 인덱스에 담는 행위
- KNN이 아닌 ANN 가능한 구조로 설계
- GOAL
- 검색 정확도와 검색 속도 tradeoff 관계 최적화
-
벡터 스토어 간 비교
- pinecone
- faiss
- chroma
- 등등
-
벡터 데이터베이스 솔루션 비교
- faiss
- pinecone
- weaviate
- milvus
- qdrant
- chroma
- 등등
-
retriever
- 저장된 벡터디비에서 사용자의 질문과 관련된 문서를 검색하는 과정 -> 정보 검색의 질을 결정하는 핵심 역할
- 사용자 질문에 가장 적절한 Context를 제공하며, 언어 모델이 보다 정확한 답변을 생성할 수 있도록 함
-
코사인 유사도
- 문서간, 질문 + 문서간의 유사성 평가
- 두 벡터 간의 코사인을 계산하여 유사도를 측정하는 기법
- 방향에 초점을 맞추므로 문서와 쿼리 간의 유사도를 비교하는데에 사용함.
-
MMR
- 이미 선택된 문서들과 새로운 문서 간의 중복 최소화와 쿼리와의 유사성 최대화를 동시에 고려하는 방법
- 검색 결과의 관련성은 유지하면서 중복은 줄이고 다양성은 높이는 전략
- 질문과의 관련성은 최대화하면서, 서로 비슷한 문서는 줄이는 기법
-
이러한 일련의 과정들이 간단한 코드로 만들어져 있음.
- 그냥 함수만 쓰면 됨.
-
sparse retriever vs dense retriever
- 표현식으로 보면 sparse는 대부분이 0이고 일부만 실수
- dense 는 대부분이 실수
- sparse
- 키워드 중심이라 계산비용이 낮음
- 의미적 연관성을 고려하지 않기 때문에 품질이 키워드의 선택에 크게 의존
- 등장 빈도를 통해 단어의 중요도 계산
- 긴 문서에 취약
- dense
- 의미적으로 관련된 문서 검색
- 가장 관련성 높은 문서를 찾음
- 언어의 뉘앙스와 문맥을 이해하는데에 유리함.
- 비쌈
- 표현식으로 보면 sparse는 대부분이 0이고 일부만 실수
-
Retriever Summary
- 목적
- 대용량 문서 집합에서 관련성 있는 문서를 빠르게 찾아내는 것
- RAG 파이프라인에서 가장 먼저 수행되는 단계
- 우선순위
- 속도 중심
- 예시
- “카페 추천”이라는 질문 → 유사 단어를 포함하는 문서 Top N 검색
- Output
- 후보 문서 집합(Candidate Documents)
- 처리 방식
- 임베딩 벡터 생성 → Cosine Similarity 기반 유사도 계산
- 모델 구조
- Bi-Encoder
- 질문과 문서를 독립적으로 임베딩
- 임베딩 벡터 간 거리 또는 유사도 비교
- Bi-Encoder
- 주요 모델
- BGE
- E5
- Jina Embedding 등
- 장점
- 빠른 처리 속도
- 질문/문서 임베딩을 병렬 처리 가능
- 대규모 문서 검색에 필수적인 구조
- 단점
- 의미적 정밀도가 떨어질 수 있음
- 반환되는 후보의 품질이 낮을 가능성 있음
- 목적
-
Prompt
- 검색기(Retriever)에서 검색된 문서들을 바탕으로 언어 모델이 사용할 질문이나 명령을 생성하는 과정
- 검색된 정보를 바탕으로 최종 사용자의 질문에 가장 잘 대응할 수 있는 응답을 생성하기 위한 필수적인 단계
- 프롬프트 템플릿
- 지시사항
- 질문
- 문맥
- 이러한 것들도 다 랭체인에서 제공함.
-
LLM
- Prompt 단계에서 구성된 입력을 기반으로 대규모 언어 모델을 활용하여 응답을 생성하는 과정
- 결국은 말 생성하는 기능
- 언어 모델의 능력을 최대한 활용하여 사용자의 질문에 대해 정확하고 자연스러운 답변을 생성함
- LLM단계는 필요 데이터와 컨텍스트를 종합하여 사용자의 질문에 대한 답변의 질과 자연스러움 반영
- 즉 사용자의 질문을 LLM이 받아서 전처리하는것임.
- Prompt 단계에서 구성된 입력을 기반으로 대규모 언어 모델을 활용하여 응답을 생성하는 과정
-
모든 AI 관련 기술은 랭체인 생태계에 들어가고싶어 안달이 남
- 랭체인 랭그래프가 1.0이 나옴
- LLM을 개발하던 업체들이 다 그 에코안에 들어가서 활용되려고 애를 씀
- 왜지? 제대로 못들음
- 우리회사도 돈 엄청 씀
- api key 사용 비용이 그정도로 나옴
-
체인
- 이전의 과정을 하나로 묶어 RAG Pipeline으로 조립하여 완성하는 단계
- 단 몇줄로도 AI를 구현할 수 있음
-
Output Parser
- 결과물을 전처리하여 일관적이고 구조화된 답변으로 만들어줌
- 실제 AI Application 개발에서는 필수적임.
-
- RAG 방법론
- Vector DB 핵심 이해 및 활용
- 벡터 DB란
- 고차원 벡터 데이터를 저장, 관리, 검색하기 위해 설계된 데이터베이스
- 인덱싱-> 쿼링의 공통 단계를 준수
- 비정형 데이터를 벡터화하여 유사한 데이터를 빠르게 찾도록 설계
- 엔비디아가 병렬처리 시연한 적 있는데
- 이거보면 눈에 확들어옴
- 이미지를 막 한번에 그림
- 바야흐로 병렬처리의 세상임
- 셀프 어텐션은 정말 중요한 매커니즘임
- 랭체인 단방향인가, 양방향인가
- LangChain = 단방향/양방향 모델 개념이 아님
- 대신 단계적 흐름을 구성하는 프레임워크
- 계속 반복하는 이유
- 코드는 쉬움
- 컨셉을 이해하면 쉬운데 모르면 어렵고 뜬구름 잡게됨.
- 벡터 DB와 다른 DB와의 차이
- 수직 확장
- 서버 성능 업그레이드
- 성능 개선 한계
- 수평 확장
- 어려움
- 클러스터로 쉽게 확장
- 이부분은 다시 이해가 필요함.
- 벡터디비의 수평 확장 방식
- 샤딩
- 벡터 데이터를 여러 노드에 분산 저장
- 예를들어 10억개의 벡터를 10개 노드에 1억개씩 배치
- 분산 인덱싱
- 검색 시 여러 노드에서 병렬로 처리
- 부하분산
- 대량의 검색 요청을 균등하게 분배하여 성능 유지
- 샤딩
- 수직 확장
- 벡터디비에서 메타데이터
- 정리 필요
- 벡터디비에서 동적 데이터 업데이트 지원
- 기존 RDB의 문제점
- 벡터 디비에서 동적 업데이트 방식
- 활용 사례
- 벡터 디비의 중요성
- 대용량 데이터 빠르게 검색 가능
- 검색용 알고리즘 활용
- 메타데이터 통합 관리로 검색 결과가 풍부해짐
- 단순 검색 결과가 아니라 메타데이터 기반 고품질 결과
- 실시간 데이터 업데이트가 가능하여 최신 데이터 반영 가능
- 대용량 데이터 빠르게 검색 가능
- 벡터DB 기술 항목
- 이것저것
- 유사도 측정
- 머신러닝, 정보 검색, 자연어 처리 등 다양한 분야에서 활용함
- 데이터 간의 관계를 수치화 할 때 유용함
- 코사인 유사도
- 두 벡터 사이의 각도를 기준으로 유사도를 측정하는 방법
- 두 벡터의 각도가 작을수록 유사도가 높음.
- 유클리드 거리
- 두 점의 직선 거리를 측정
- 차원이 많아지면 문제가 생김
- 벡터 디비 스키마 설계
- 데이터 구조 계획
- 필드 정의
- 확장성 및 성능
- 인덱싱 전략
- HBM이 왜 중요한가
- HBM때문에 그냥 메모리도 수요가 많다.
- 필드 정의 및 인덱싱
- 벡터 필드
- 메타 데이터 필드
- 인덱싱
- HNSW, IVF,PQ 등
- 벡터디비 일반적인 스키마 구조
- 컬렉션1
- 어떤 데이터1
- 원천 문장
- 벡터
- 메타
- 어떤 데이터2
- 벡터
- 요약문장
- 어떤 데이터1
- 컬렉션2
- 벡터
- 원천문장
- 메타
- 컬렉션1
- 단일 컬렉션 사용 시
- 장점
- 간소화된 검색
- 단점
- 복합 표현의 한계
- 벡터 크기 증가
- 장점
- 컬렉션으로 나누는 기준
- 데이터의 크기와 스케일링
- 데이터의 접근 패턴
- 데이터의 생명 주기
- 등등
- 뉴스기사 데이터를 대상으로 컬렉션 설계
- 데이터 특성
- 접근 패턴
- 날짜 기준으로 나누기
- 주제 또는 카테고리 기준으로 나누기
- 멀티 컬렉션 관리
- 뉴스 벡터를 예시로 검증
- 벡터 DB란
- AI Agent 핵심 이해 및 활용
- AI Agent의 발전과정
- Agent <- 과거
- 특정 분야에서 전문적인 지식이나 기술을 갖추고 일을 처리
- AI Agent <-현재
- 특정 목표를 수행하기 위해 자율적으로 목표를 달성하기 위해 행동하는 소프트웨어 시스템
- Agentic AI <- 미래
- 외부 자극에 반응하는 것이 아니라 스스로 목표를 설정하고 행동하는 자기주도적 행동
- 특정 Task 수행을 넘어서
- 목표 설정
- 계획
- 도구 선택
- 협업까지 진행
- Agent <- 과거
- AI 에볼루션
- ANI(Artificial Narrow Intelligence)
- 특정 업무에 특화된 알고리즘 기반의 학습모델
- Generative AI
- GPT4
- LLM
- 로봇 제어 AI
- 자율주행
- AGI(Artificial General Intelligence)
- 광범위하고 유연한 학습 및 추론 능력
- ANI(Artificial Narrow Intelligence)
- AI Agent의 특징
- LLM + Tools
- 자연어 처리 능력
- 필요 도구 연결
- 지식 기반 생성
- 작업 자동화
- agenda of ai agent
- LLM : ai agent의 지능과 판단 담당(두뇌)
- Tools : ai agent가 실제로 작업을 수행하거나 환경과 상호작용하는 역할 담당
- Tools
- 에이전트, 체인 또는 LLM이 상호작용하기 위한 인터페이스
- 그냥 함수임
- LLM한테 연결해주기만 하면 됨
- Built in Tolls
- 랭체인에서 제공하는 도구와 툴킷
- Custom Tools
- 사용자가 직접 도구를 정의하여 사용
- langchain.tools 모듈에서 제공하는 @tool 데코레이터를 사용하여 함수를 도구로 변환하면 됨
- 데코레이터를 통해 일반 파이썬 함수를 도구로 변환하여 자동화된 업무 프로세스에 반영하는 것이 용이
- @tool
- 데코레이터임
- 함수를 도구로 변환함
- Tool Calling Agent
- 모델이 적절한 도구를 반복적으로 호출하고 결과를 받아 문제를 해결할 때까지 이를 반복하는 에이전트
- 도구 호출을 하면 모델이 하나 이상의 도구가 호출되어야 하는 시기를 감지하고 해당 내용을 전달할 수 있어야 함
- 일반 텍스트 완성하는 것 보다 더 안정적으로 유효하고 유용한 도구 호출Tool Calling을 반환함
- 워크플로우
- 질문 - 이번주에 볼만한 영화를 추천해줘
- LLM - 사용자 요청 이해
- 어떤 도구를 사용할지 호출 결정
- 필요한 도구를 찾아서 작업 수행
- 도구 호출 결과 분석
- 정보 확인
- 답변 - 최종 응답 전달
- ReAct = Reasoning + Acting
- 순차적이고 능동적인 프로세스를 통해 복잡한 사용자 요청 처리
- 작업이 완료될 때까지 지속적으로 사고와 행동을 조율하는데에 적합
- ReAct Framework
- 최초 - 순차적 실행
- Reasoning 과 Acting을 하나의 시스템으로 결합한 연구
- 2024 - Multi Agent로의 확대
- 에이전트간 협업, Supervisor의 동적 task 할당 처리 등 고려
- 최초 - 순차적 실행
- 모델이 적절한 도구를 반복적으로 호출하고 결과를 받아 문제를 해결할 때까지 이를 반복하는 에이전트
- Tool Calling Process
- 도구 생성
- 제공할 도구 정의
- @tool decorator로 구분
- Agent Prompt 생성
- ChatPromptTemplate를 활용하여 정의
- Agent 생성
- 실행할 에이전트를 하나로 묶어서 생성
- Agent 실행
- 도구를 사용하는 에이전트를 실행
- LangChain의 AgentExecutor 통해 처리
- 도구 생성
- Inference vs Reasoning
- 대충 훑어보면 됨
- Reasoning
- 생각의 전개 과정에 초점
- Inference
- 결론 또는 추론된 결과
- LLM Reasoning
- 정의에 대해 다시한번 이해 필요함.
- Reasoning : 주어진 정보로부터 논리적으로 결론을 도출하거나, 다음 행동을 결정하는 사고 과정
- AI Agent에게도 왜 이 행동을 해야 하는가 를 판단하게 하는 과정/기능
- LLM이 진짜로 Reasoning을 수행하는지 vs 그럴듯한 답변 생성만 하는지 -> 분리해서 확인하고, 연구 진행중
- Reasoning Prompt
- Reasoning Prompt는 LLM이 단순 답변이 아니라 ‘생각하는 과정(추론 과정)’을 생성하도록 유도하는 특별한 프롬프트를 말한다.
- LLM은 사실상 패턴 기반 언어 모델이라 그 자체로는 깊은 추론이 약할 수 있다.
- Reasoning Prompt는
- 문제를 나누어 생각하게 만들고
- 논리적 단계를 스스로 생성하도록 하고
- 최종 결론이 더 정확해지도록 돕는다.
- AI Agent 유형
- 반응형 에이전트
- 특징 : 과거 경험이나 내부 상태 없이, 현재 환경 상태에서만 반응
- 예시 : 간단한 조건-행동 규칙
- 장점 : 빠르고 단순
- 단점 : 복잡한 상황이나 추론에는 한계
- 계획형 에이전트
- ...
- 학습형 에이전트
- 자율 에이전트
- 반응형 에이전트
- AI Agent Architecture 쉽게 설명하기
- AI Agent는 사람이 문제를 해결하는 과정과 비슷하게 입력을 이해하고 → 생각하고 → 행동하는 3단계 구조로 이루어진다.
- 1) Perception Layer — “입력을 받아들이는 단계”
- 2) Cognitive Layer — “생각하는 단계(가장 핵심)”
- 3) Execution Layer — “행동하는 단계”
- AI Agent는 “입력을 이해하고 → 생각하고 → 행동하는” 구조로 되어 있고, 그 안에서 각각의 역할을 나누어 담당하는 요소들이 있다.
- 1. Environment / User Input / Output
- 2. Perception Layer (입력 이해 단계)
- 3. Cognitive Layer (생각하고 판단하는 단계)
- 4. Execution Layer (행동 실행 단계)
- AI Agent는 입력을 이해(Perception) → 생각하고 계획(Cognitive) → 실제 행동(Execution) 이 세 단계를 반복하며 목표를 달성하는 시스템이다.
- AI Agent는 사람이 문제를 해결하는 과정과 비슷하게 입력을 이해하고 → 생각하고 → 행동하는 3단계 구조로 이루어진다.
- Autonomous Agent 아키텍처를 한눈에 이해하기
- 기본 AI Agent는 Perception → Cognitive → Execution 이 3단계를 반복하며 일을 수행한다.
- 그런데 Autonomous Agent(자율형 에이전트) 는 여기에 하나가 더 추가된다.
- 바로 Meta Cognitive Layer(메타 사고 층) 이다.
- 이 층이 생기면서 에이전트는 “주어진 명령을 수행하는 존재”에서 “스스로 판단하고 목표를 조정하며 반복 작업을 관리하는 존재”로 발전한다.
- 바로 Meta Cognitive Layer(메타 사고 층) 이다.
- AI Agent 구현 절차
- 양 많으니까 좀 훑어보기
- AI Agent 유형 분류
- 도우미형
- 도구 활용형
- 계획 - 수행형
- 기억 기반형
- 문서 QA형
- 멀티 에이전트형
- AI Agent 구현
- 문제 정의
- 문제 정의란 해결하고자 하는 문제의 성격, 목표 사용자, Agnet의 역할 등을 명확히 규정하는 단계
- 좀 훑어보기
- 기능 정의
- Agent가 수행해야 할 기능을 세분화하여 각 구성 요소의 책임을 명확히 함
- 어떤 기능을 LLM, 어떤 기능을 Tool, 어떤 기능을 Memory가 담당할지 결정
- 이후 시스템 설계 시 구성 요소 간 인터페이스를 명확하게 정의할 수 있음
- 아키텍처 설계
- Agent 구성요소LLM, Tool, Memory 등 의 상호작용 방식 설계
- 실제 구현 구조를 반영한 데이터 흐름 및 컴포넌트 책임 명확화
- LangChain의 실행 흐름 AgentExecutor, Tool, Memory, Prompt이 어떻게 조립되는지 시각화
- 설계 예시 살펴보면 좋음.
- 구현 및 테스트
- 설계한 아키텍처를 코드로 구현
- 다양한 입력에 대해 Agent가 적절히 Tool을 사용하거나 LLM으로 직접 응답하는지 테스트
- Memory가 제대로 작동하는지 확인
- 예상치 못한 입력에 대한 Fallback 처리도 확인
- 평가 및 개선
- Agent의 정확성, 유용성, 안정성을 검증
- 도구 호출 판단과 응답 생성이 적절하게 작동하는지 평가
- 사용자 경험UX 중심으로 실제 사용성 문제 개선
- 문제 정의
- AI Agent의 발전과정
댓글
첫 번째 댓글을 남겨보세요.