생성형 AI 에이전트(Generative AI Agent)는 사용자의 요청을 처리하기 위해 외부 도구(API, DB, 검색엔진 등)와 상호작용하며 목표를 달성하는 AI 시스템이다.
단순한 언어 모델과 달리, 에이전트는 정보를 검색하고, 연산을 수행하며, 여러 단계를 거쳐 최적의 답변을 생성하는 기능을 포함한다.
에이전트 작동방식을 이해하려면 인지 아키텍처 개념을 이해해야한다.
The Model : 에이전트의 의사 결정을 담당하는 핵심 요소
The Tools : 외부 세계와 상호작용 할 수 있도록 지원하는 API 및 시스템
The Orchestration Layer : 데이터를 수집하고, 분석한 후 다음 실행 단계를 결정하는 과정을 관리하는 핵심 요소
에이전트(Agent)는 마치 요리사가 복잡한 요리를 준비하는 과정과 유사하게 작동한다.
에이전트 시스템 = 요리사 / 주어진 요리를 달성하기 위해 정보를 수집하고, 계획을 세우고, 행동을 실행하는 전체적인 과정을 담당한다.
Step 1. 정보 수집
Step 2. 내부 추론
Step 3. 행동 실행
Step 4. 피드백 및 조정
에이전트는 오케스트레이션 레이어에서 메모리, 상태, 추론, 계획을 관리하며, 프롬프트 엔지니어링 기술을 활용하여 더 효율적으로 작업을 수행한다.
에이전트가 언어 모델과 외부 시스템/데이터 사이의 연결 고리 역할을 하며 형태는 아래와 같다.
🤔 언제 사용할까?
✏️ 함수 호출 수명 주기 시퀀스 다이어그램
✏️ ReAct 추론/계획을 갖춘 RAG 기반 애플리케이션 샘플
RAG는 입력을 받아 해당하는 출처에서 관련 문서를 찾는다.
입력한 원래의 프롬프트와 이 문서들은 함께 컨텍스트로 연결되어, 텍스트 생성기를 통해 결과물을 만들어낸다.
→ 이 과정을 통해 RAG는 변화하는 정보에도 적응 가능함!
RAG 로 인해 언어 모델은 다시 학습할 필요 없이 검색 기반 생성을 통해 최신 정보에 기반한 신뢰성 있는 결과물을 만들어 낸다.
RAG 시스템은 Naive RAG에서 Advanced RAG, Modular RAG로 발전해왔으며, 이런 발전은 성능과 비용, 효율성과 관련된 특정 제한 사항을 해결하기 위함이다.
LangChain은 대규모 언어 모델(LLM)을 기반으로 애플리케이션을 구축하기 위한 오픈 소스 프레임워크이다. LangChain을 통해 개발자는 LLM과 다양한 데이터 소스를 통합하여 복잡한 작업 흐름을 단순화하고, 맞춤형 애플리케이션을 효율적으로 개발할 수 있다.
LLM이 가지고 있는 한계점을 해결하기 위해 LangChain이 만들어졌다.
LangChain은 프론트엔드 개발자가 LLM을 쉽게 활용할 수 있도록 여러 기능을 제공한다.
: LangChain의 핵심 개념으로, 여러 단계를 자동으로 연결하여 복잡한 AI 작업을 쉽게 처리함
ex) 사용자가 질문함 → AI 검색 → 결과 정리 후 응답 자동화
from langchain.chat_models import ChatOpenAI
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
# OpenAI API 설정
api_key = "your-api-key"
llm = ChatOpenAI(openai_api_key=api_key)
# 프롬프트 템플릿 설정
prompt = PromptTemplate.from_template("안녕하세요! {question}에 대해 알려드릴게요.")
chain = LLMChain(llm=llm, prompt=prompt)
# 질문 실행
response = chain.run("LangChain이 무엇인가요?")
print(response)
: LLM이 직접 어떤 행동을 할지 결정하도록 만든다.
에이전트는 LLM을 더 효율적이게 사용할 수 있도록 도와주는 역할을 한다.
ex) 1. 구글 검색이 필요하다. 2. DB에서 정보를 가져오면 되겠다. 같은 선택지에서 AI가 결정을 하도록 함
from langchain.chat_models import ChatOpenAI
from langchain.agents import initialize_agent, AgentType
from langchain.tools import Tool
# OpenAI API 설정
api_key = "your-api-key"
llm = ChatOpenAI(openai_api_key=api_key)
# 에이전트 설정
agent = initialize_agent(
tools=[], # 사용할 도구 추가 가능
llm=llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION
)
# 실행
response = agent.run("LangChain이란?")
print(response)
: AI가 최신 데이터를 검색하여 답변하도록 하는 기술
LangChain은 AI가 DB, 검색 엔진, 문서에서 정보를 가져와 최신 정보를 반영하도록 도와준다.
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings
from langchain.chat_models import ChatOpenAI
# AI Embedding 설정
embeddings = OpenAIEmbeddings()
# 검색 가능한 데이터 저장
vectorstore = FAISS.load_local("my_data", embeddings)
# LLM과 연결
llm = ChatOpenAI()
retriever = vectorstore.as_retriever()
# 사용자 질문 처리
query = "최근 AI 트렌드는?"
retrieved_docs = retriever.get_relevant_documents(query)
response = llm.predict(retrieved_docs)
print(response)
AI가 여러 단계의 복잡한 흐름을 처리할 수 있도록 도와줌
ex) 문서 요약 → 관련 질문 생성 → 번역 작업
from langchain.chains import SequentialChain
# 여러 개의 LangChain 작업을 순차적으로 연결
workflow = SequentialChain(
chains=[chain_1, chain_2, chain_3], # 각각 요약, 질문 생성, 번역 담당
input_variables=["text"]
)
LangChain은 LLM 애플리케이션을 쉽게 구축할 수 있도록 지원하는 프레임워크로, RAG를 포함하여 다양한 기능을 제공한다.
반면, RAG는 LLM의 한계를 극복하기 위한 검색 기반 기술로, LangChain 없이도 독립적으로 구현할 수 있다.
LangChain = LLM을 활용한 앱을 쉽게 만드는 도구 (레고 블록 같은 역할)
RAG = LLM이 최신 정보를 반영할 수 있도록 돕는 검색 기술
: LangChain을 활용하면 RAG 시스템을 쉽게 구축할 수 있다!