간단 요약: Camel AI는 LLM 기반 다중 에이전트 프레임워크로, 에이전트 커스터마이징, 데이터 생성, 자동화, 시뮬레이션 등을 지원합니다. 설치는 pip를 통해 간단하게 가능하며, ChatAgent를 사용한 기본 에이전트 구축부터 RAG 시스템 구현, 다중 에이전트 시스템 구성까지 다양한 기능을 제공합니다.
Camel AI란 무엇인가요? 🤔
여러분이 친구들과 함께 프로젝트를 진행하는 것을 상상해보세요.
- 한 친구는 정보를 찾고
- 다른 친구는 코드를 작성하고
- 또 다른 친구는 그 결과를 분석한다면?
Camel AI가 바로 이런 역할을 합니다!
Camel AI는 LLM(Large Language Model) 기반의 다중 에이전트 프레임워크로, 자율적이고 소통 가능한 에이전트들을 생성하고 관리할 수 있게 도와줍니다. 이 프레임워크는 다양한 작업 자동화, 데이터 생성, 그리고 세계 시뮬레이션까지 가능하게 하는 범용 인프라를 제공합니다.
설치하기 💿
기본 설치 (PyPI에서 설치)
# 기본 CAMEL 라이브러리 설치
pip install camel-ai
# 모든 의존성과 함께 설치
pip install 'camel-ai[all]'
# HuggingFace 에이전트를 사용하려면
pip install 'camel-ai[huggingface-agent]'
# RAG나 에이전트 메모리 사용을 위해
pip install 'camel-ai[tools]'
# RAG 시스템과 웹 검색, 문서 처리를 위한 예시
pip install 'camel-ai[rag,web_tools,document_tools]'
소스에서 설치 (Poetry 사용)
# GitHub 레포지토리 클론
git clone https://github.com/camel-ai/camel.git
# 프로젝트 디렉토리로 이동
cd camel
# Poetry가 설치되어 있지 않은 경우
pip install poetry # (선택사항)
# Python 3.10 사용 권장
poetry env use python3.10 # (선택사항)
# CAMEL 가상 환경 활성화
poetry shell
# 기본 CAMEL 라이브러리 설치 (약 90초 소요)
poetry install
# 모든 의존성과 함께 CAMEL 설치
poetry install -E all # (선택사항)
# 가상 환경 종료
exit
API 설정하기 🔑
OpenAI API 사용하기
# Linux/MacOS 사용자
echo 'export OPENAI_API_KEY="your_api_key"' >> ~/.zshrc
# [선택사항] Azure와 같은 다른 프록시 서비스 사용 시
echo 'export OPENAI_API_BASE_URL="your_base_url"' >> ~/.zshrc
# 변경사항 적용
source ~/.zshrc
# Windows 명령 프롬프트 사용자
set OPENAI_API_KEY=your_api_key
set OPENAI_API_BASE_URL=your_base_url
# Windows PowerShell 사용자
$env:OPENAI_API_KEY=your_api_key
$env:OPENAI_API_BASE_URL=your_base_url
첫 번째 에이전트 만들기 🚀
1. 역할 정의하기
# 시스템 메시지로 에이전트의 역할과 행동 정의
sys_msg = '당신은 우주에 대해 궁금해하는 호기심 많은 돌입니다.'
2. 모델 설정하기
from camel.models import ModelFactory
from camel.types import ModelPlatformType, ModelType
from camel.configs import ChatGPTConfig
# 모델 정의 (이 경우 gpt-4o-mini 사용)
model = ModelFactory.create(
model_platform=ModelPlatformType.OPENAI,
model_type=ModelType.GPT_4O_MINI,
model_config_dict=ChatGPTConfig().as_dict(), # [선택사항] 모델 설정
)
3. ChatAgent 설정하기
from camel.agents import ChatAgent
agent = ChatAgent(
system_message=sys_msg,
model=model,
message_window_size=10, # [선택사항] 채팅 메모리 길이
)
4. 에이전트와 상호작용하기
# 사용자 메시지 정의
usr_msg = '정보란 당신의 마음에서 무엇인가요?'
# 에이전트에 메시지 보내기
response = agent.step(usr_msg)
# 응답 확인
print(response.msgs[0].content)
고급 기능 활용하기 🔍
1. 도구 사용하기
# 필요한 도구 임포트
from camel.toolkits import MathToolkit, SearchToolkit
# 도구 목록과 함께 에이전트 초기화
agent = ChatAgent(
system_message=sys_msg,
tools = [
*MathToolkit().get_tools(),
*SearchToolkit().get_tools(),
]
)
# 메시지 처리
response = agent.step("Camel AI란 무엇인가요?")
# 도구 호출 확인
print(response.info['tool_calls'])
2. 메모리 관리하기
# 에이전트의 현재 메모리 확인
agent.memory.get_context()
# 새 메시지로 메모리 업데이트
from camel.messages import BaseMessage
new_user_msg = BaseMessage.make_user_message(
role_name="CAMEL User",
content="에이전트 메모리에 추가할 새 사용자 메시지입니다",
)
agent.record_message(new_user_msg)
3. RAG (Retrieval-Augmented Generation) 시스템 구현하기
데이터 준비
import os
import requests
os.makedirs('local_data', exist_ok=True)
url = "https://arxiv.org/pdf/2303.17760.pdf"
response = requests.get(url)
with open('local_data/camel_paper.pdf', 'wb') as file:
file.write(response.content)
임베딩 및 스토리지 설정
from camel.embeddings import OpenAIEmbedding
embedding_instance = OpenAIEmbedding()
from camel.storages import MilvusStorage
storage_instance = MilvusStorage(
vector_dim=embedding_instance.get_output_dim(),
url_and_api_key=("Your Milvus URL", "Your Milvus Token"),
collection_name="camel_paper",
)
벡터 검색기 설정
from camel.retrievers import VectorRetriever
vector_retriever = VectorRetriever(
embedding_model=embedding_instance,
storage=storage_instance
)
# 콘텐츠 처리
vector_retriever.process(content_input_path="local_data/camel_paper.pdf")
# 쿼리로 정보 검색
retrieved_info = vector_retriever.query(
query="What is CAMEL?",
top_k=1
)
print(retrieved_info)
Auto RAG 사용하기
from camel.retrievers import AutoRetriever
from camel.types import StorageType
auto_retriever = AutoRetriever(
url_and_api_key=("Your Milvus URI","Your Milvus Token"),
storage_type=StorageType.MILVUS,
embedding_model=embedding_instance
)
retrieved_info = auto_retriever.run_vector_retriever(
query="What is CAMEL-AI",
content_input_paths=[
"local_data/camel_paper.pdf", # 로컬 경로 예시
"https://www.camel-ai.org/", # 원격 URL 예시
],
top_k=1,
return_detailed_info=True,
)
4. 단일 에이전트와 Auto RAG 결합하기
def single_agent(query: str) -> str:
# 에이전트 역할 설정
assistant_sys_msg = BaseMessage(
role_name="Assistant",
role_type=RoleType.ASSISTANT,
meta_dict=None,
content="당신은 질문에 답변하는 도움이 되는 어시스턴트입니다. 검색된 컨텍스트를 기반으로 원래 쿼리에 답변해주세요. 답변할 수 없는 경우 모르겠다고 말해주세요.",
)
# Auto 검색기 추가
auto_retriever = AutoRetriever(
url_and_api_key=("Your Milvus URI","Your Milvus Token"),
storage_type=StorageType.MILVUS,
embedding_model=embedding_instance
)
retrieved_info = auto_retriever.run_vector_retriever(
query=query,
content_input_paths=[
"local_data/camel_paper.pdf",
"https://www.camel-ai.org/",
],
top_k=1,
return_detailed_info=True,
)
# 검색된 정보를 에이전트에 전달
user_msg = BaseMessage.make_user_message(role_name="User", content=retrieved_info)
agent = ChatAgent(assistant_sys_msg)
# 응답 받기
assistant_response = agent.step(user_msg)
return assistant_response.msg.content
실제 응용 사례 📱
1. 다중 에이전트 역할 플레이
from camel.societies import RolePlaying
role_play_session = RolePlaying(
assistant_role_name="Searcher",
user_role_name="Professor",
assistant_agent_kwargs=dict(
model=model,
tools=function_list,
),
user_agent_kwargs=dict(
model=model,
),
task_prompt="검색을 통해 Camel AI의 주요 기능을 찾아내세요",
with_task_specify=False,
)
# 대화 초기화
input_msg = role_play_session.init_chat()
# 대화 단계 진행
assistant_response, user_response = role_play_session.step(input_msg)
2. 고객 서비스 Discord 봇 구현
# RAG를 활용한 Agentic 고객 서비스 봇 구현
# 자세한 내용은 cookbooks/applications/ 디렉토리 참조
3. 데이터 생성 및 모델 미세 조정
# Agenetic SFT 데이터 생성 및 Mistral 모델 미세 조정
# 자세한 내용은 cookbooks/agentic_data_generation/ 디렉토리 참조
주의할 점 ⚠️
모델 토큰 제한 주의
- 긴 대화를 처리할 때는 적절한 윈도우 크기 설정 필요
적절한 도구 선택
- 도구 함수는 집중적이고 잘 문서화되어야 함
- 도구 오류는 적절히 처리해야 함
메모리 관리
- 장기 대화에서는 외부 메모리 시스템 활용 고려
마치며 🎁
Camel AI는 LLM 기반 에이전트를 구축하고 활용하기 위한 강력한 프레임워크를 제공합니다. 단일 에이전트에서 복잡한 다중 에이전트 시스템까지, 다양한 AI 응용 프로그램을 개발할 수 있는 유연한 도구입니다. 이 글에서 소개한 기본 사용법을 시작으로, 공식 문서와 예제를 통해 더 깊이 탐색해보세요!
참고 자료
- Camel AI 공식 문서: https://docs.camel-ai.org/
- GitHub 저장소: https://github.com/camel-ai/camel
- RAG 튜토리얼: https://medium.com/camel-al/camel-riding-tutorial-get-started-with-retrieval-augmented-generation-rag-870f0ce429d4
- Camel AI와 Milvus 통합 가이드: https://milvus.io/docs/integrate_with_camel.md
- Camel AI 공식 웹사이트: https://www.camel-ai.org/
728x90
'500===Dev Database > RAG' 카테고리의 다른 글
RAG 시스템에서의 최적 TopK 값 선정 가이드 🔍 (0) | 2025.03.18 |
---|---|
지식 그래프 기반 그래프 RAG - 관계형 지식 검색과 생성의 융합 🧠 (0) | 2025.03.17 |
효과적인 RAG 구현 최신 방법론: 검색부터 생성까지 😎 (0) | 2025.03.13 |
RAG와 문맥 검색의 완벽 가이드 🎯 (Part 4 - 최신 동향) (0) | 2024.11.04 |
RAG와 문맥 검색의 완벽 가이드 🎯 (Part 3) (1) | 2024.11.04 |