시대가 발전되며, AI 오케스트레이션을 잘하는 것이 곧 개발을 잘하는 것이라 생각한다..!
세상에는 정말 많은 오픈소스 AI Agent 프레임워크들이 있다
따라서 처음 시작한다면 어떤 거를 써야 할지 막막할 거고, 나 역시 그렇다
그래서 오늘 이 글을 작성해보았다 🔫 빵야빵야
AI 에이전트 프레임워크란?
입력 → 처리 → 작업 실행(검색, 고객 응대 등) 흐름을 갖는
자율 에이전트를 개발할 수 있도록 도와주는 도구/플랫폼/라이브러리
⇒ 복잡한 AI 로직을 쉽게 구성하고, 유지보수 가능하게 만드는 핵심 인프라!
프레임워크 유형 2가지
💬 대화/챗봇 특화 | 예: 고객 응대, 가상 비서 (LangChain, Rasa 등) |
🔁 워크플로우 중심 | 복잡한 작업 흐름 구성에 최적 (LangGraph, CrewAI 등) |
AI 에이전트 프레임워크 선택 방법
AI 에이전트 프레임워크 선택이 어려운 이유...
"오픈 소스 플랫폼과 서비스가 너무 많아서 선택이 부담스럽게 느껴질 수 있음"
그래서 핵심은? 내 워크플로 요구사항에 집중하는 것!
그래서 프레임워크에는 뭐가 있는데?
간단하게 정리해보았다!
1. Botpress: AI 기반의 대화형 에이전트(AI Agent)를 누구나 쉽게 만들 수 있도록 돕는 오픈소스 플랫폼
이름부터 알 수 있듯이 'Bot'
챗봇을 위한 프레임워크이다!
기존의 챗봇은 정해진 규칙만 따르는 단순한 대화(Rule-Based)만 가능
하지만 Botpress는 LLM 기반으로 다양한 표현을 이해하고, 유연하게 대응할 수 있는 지능형 에이전트를 쉽게 생성 가능! 즉, 복잡한 질문에도 답변, 외부 서비스와 연동하여 업무 자동화까지 가능하다
2. RASA: 오픈소스 기반의 AI 대화형 에이전트 프레임워크
RASA는 크게 두 가지로 나뉜다
① RASA NLU: 간단한 RASA
'intent' 분류와 'entity' 추출에 사용
(Component)
1. 챗봇 구현 범위 설정
2. 데이터셋 생성 (data.json)
3. 모델 학습
4. 추론
1. 데이터 학습 및 모델 저장
from rasa_nlu.training_data import load_data
from rasa_nlu.model import Trainer
from rasa_nlu import config
# 학습 데이터 로드
training_data = load_data('data/nlu.md')
# 설정 파일 로드
trainer = Trainer(config.load('config.yml'))
# 모델 학습
trainer.train(training_data)
# 모델 저장
trainer.persist('models/nlu', fixed_model_name='current')
2. 추론
from rasa_nlu.model import Interpreter
# 저장된 모델 로드
interpreter = Interpreter.load('models/nlu/default/current')
# 사용자 입력 분석
result = interpreter.parse("오늘 서울 날씨 어때?")
print(result)
출력 예시
{
"intent": {"name": "ask_weather", "confidence": 0.98},
"entities": [{"entity": "location", "value": "서울"}],
"text": "오늘 서울 날씨 어때?"
}
② RASA Core: 심화적인 RASA
'intent' 추가와 같은 스케일 업을 돕는 라이브러리
챗봇 응답과 챗봇 동작을 명시! ( 이때 명시되는 정보를 ‘Action’이라고 함)
대화의 흐름을 관리하고, 이전 대화 이력을 바탕으로 다음에 수행할 ‘action’을 결정한다
(Component)
intent, entity, slot, template, action을 도메인 파일인 yaml파일로 정의하고, 대화가 어떤 시나리오로 흐를지 story 파일을 정의한다
1. 도메인 파일(domain.yaml) 설정
intents:
- greet
- ask_weather
entities:
- location
slots:
location:
type: text
influence_conversation: false
responses:
utter_greet:
- text: "안녕하세요! 무엇을 도와드릴까요?"
utter_ask_location:
- text: "어느 지역의 날씨를 알려드릴까요?"
actions:
- action_provide_weather
2. Story 파일 작성
stories:
- story: 날씨 문의 시나리오
steps:
- intent: ask_weather
- action: utter_ask_location
- intent: inform
entities:
- location: 서울
- action: action_provide_weather
해당 스토리는 사용자가 챗봇에게 인사를 하면, 챗봇이 환영 인사를 보내는 짧은 인사 흐름으로 구성
3. LlamaIndex: AI Agent가 외부 데이터를 사용할 수 있게 도와주는 프레임워크
API, PDF, SQL등을 포함한 여러 소스에서 데이터를 쉽게 가져올 수 있도록 Connector를 제공한다
(Langchain, Flask, Docker를 비롯한 여러 API와 상호작용할 수 있다)
Engine을 통해 내 데이터에 언어적 접근을 가능하게 해준다
- Query Engine: 강력한 Retrieve를 통해 Knowledge-Augmented된 데이터 추출
- Chat Engine: 보유하고 있는 데이터들과 멀티 메시지 상호작용 가능한 대화형 인터페이스 제공
(예시 코드)
import os
os.environ["OPENAI_API_KEY"] = '당신의_OPENAI_API_키'
from llama_index import GPTVectorStoreIndex, SimpleDirectoryReader
documents = SimpleDirectoryReader('data').load_data()
index = GPTVectorStoreIndex.from_documents(documents)
# 검색 쿼리:
query_engine = index.as_query_engine()
query_engine.query("<질문_텍스트>?")
# 기본적으로, 데이터는 메모리에 저장됩니다. 디스크에 저장하려면 (./storage 이하):
index.storage_context.persist()
# 재로드:
_from_storage
# 저장 컨텍스트 다시 구성
storage_context = StorageContext.from_defaults(persist_dir='./storage')
# 인덱스 로드
index = load_index_from_storage(storage_context)
4. LangGraph / 5. CrewAI
[생성형 AI] LangGraph vs CrewAI 라이브러리
https://claremont.tistory.com/entry/%EC%83%9D%EC%84%B1%ED%98%95-AI-LangChain%EC%9D%B4%EB%9E%80 [생성형 AI] LangChain이란?ㅁLangChain: LLM을 활용하여 응용 프로그램을 개발하는 프레임워크주로 OpenAI의 GPT, Google의 PaLM, Meta
claremont.tistory.com
(한 줄 정리)
LangGraph는 동적인 워크플로우 자동화에, CrewAI는 역할 기반 AI 협업 시스템 구축에 최적화된 라이브러리이다
'인공지능 > 생성형 AI' 카테고리의 다른 글
[생성형 AI] Claude API와 MCP 연동 방법(+실무 팁) (0) | 2025.04.07 |
---|---|
[생성형 AI] 요즘 핫한 Anthropic 클로드의 MCP(feat. Smithery 사이트) (0) | 2025.04.07 |
[생성형 AI] "Runners, Hi 챌린지" 캠페인 기획(w/프롬프트 엔지니어링) (6) | 2025.03.26 |
[생성형 AI] LangChain과 멀티모달 모델을 활용한 스마트 냉장고 앱 만들기 실습 (2) | 2025.03.11 |
[생성형 AI] LCEL(LangChain Expression Language) 실습: 체인을 더욱 간결하게 구성하기 (1) | 2025.03.11 |