본문 바로가기
Study/LLM

AI와 함께하는 맞춤형 학습 도우미 '공부의 신' 개발기

by GodKim 2025. 3. 31.

🤖 멀티 에이전트 시스템을 활용한 AI 학습 도우미 구현기

안녕하세요! 오늘은 '공부의 신' 프로젝트에서 구현한 멀티 에이전트 시스템에 대해 자세히 소개해드리려고 합니다.

깃허브 ⬇️⬇️
https://github.com/GoDK36/God-of-Study

🌟 멀티 에이전트 시스템이란?

멀티 에이전트 시스템은 여러 개의 AI 에이전트가 서로 협력하여 복잡한 작업을 수행하는 시스템입니다.

각 에이전트는 특정 역할과 책임을 가지고 있으며, 서로 상호작용하면서 목표를 달성합니다.

💡 '공부의 신'의 멀티 에이전트 구조

1. 핵심 에이전트 구성

def create_agent(topic, difficulty):
    # LLM 모델 초기화
    llm = get_llm(st.session_state.selected_model)

    # Memory 초기화
    memory = ConversationBufferMemory(
        memory_key="chat_history",
        return_messages=True
    )

    # 도구 정의
    tools = [
        Tool(
            name="set_learning_goal",
            func=lambda x: set_learning_goal(topic, difficulty),
            description="학습 목표를 설정하는 도구입니다."
        ),
        Tool(
            name="create_learning_plan",
            func=lambda x: create_learning_plan(x),
            description="학습 플랜을 생성하는 도구입니다."
        ),
        # ... 기타 도구들
    ]

2. 각 에이전트의 역할

1) 학습 목표 설정 에이전트

  • 사용자의 학습 목표를 명확히 정의
  • 난이도에 맞는 적절한 목표 수립
  • 단계별 학습 계획 수립

2) 학습 플랜 생성 에이전트

  • 목표 달성을 위한 상세한 학습 계획 수립
  • 시간 추정 및 리소스 할당
  • 단계별 마일스톤 설정

3) 교육 에이전트

  • 개념 설명 및 예시 제공
  • 실제 사례 분석
  • 흥미로운 관련 지식 공유

4) 평가 에이전트

  • 이해도 테스트 생성
  • 답안 평가 및 피드백
  • 학습 진도 추적

5) 블로그 작성 에이전트

  • 학습 내용 정리
  • 논문 요약
  • 시험 결과 반영

🔄 에이전트 간 상호작용

1. 메모리 시스템

memory = ConversationBufferMemory(
    memory_key="chat_history",
    return_messages=True
)
  • 각 에이전트가 이전 대화 내용을 기억하고 참조
  • 학습 맥락 유지
  • 일관된 학습 경험 제공

2. 프롬프트 템플릿

prompt = ChatPromptTemplate.from_messages([
    ("system", f"""당신은 '공부의 신'입니다. 사용자가 {topic}에 대해 {difficulty} 수준으로 공부하고 싶어합니다.
    다음 순서와 규칙을 따라 학습을 진행해주세요:
    # ... 상세한 지침
    """),
    MessagesPlaceholder(variable_name="chat_history"),
    ("human", "{input}"),
    MessagesPlaceholder(variable_name="agent_scratchpad"),
])
  • 각 에이전트의 역할과 책임 정의
  • 일관된 응답 형식 유지
  • 학습 진행 순서 관리

🛠 구현 시 고려사항

1. 에이전트 실행 제어

agent_executor = AgentExecutor(
    agent=agent,
    tools=tools,
    memory=memory,
    verbose=True,
    max_iterations=5
)
  • 최대 반복 횟수 제한
  • 실행 상태 모니터링
  • 오류 처리 및 복구

2. 도구 통합

  • 각 에이전트별 필요한 도구 정의
  • 도구 간 의존성 관리
  • 도구 실행 결과 처리

3. 상태 관리

def initialize_session_state():
    if 'messages' not in st.session_state:
        st.session_state.messages = []
    if 'learning_stats' not in st.session_state:
        st.session_state.learning_stats = {
            'sessions': [],
            'topics': {},
            'progress': {}
        }
  • 세션 상태 유지
  • 학습 통계 추적
  • 진행 상황 저장

📈 향후 개선 방향

1. 에이전트 협업 강화

  • 에이전트 간 직접 통신 기능 추가
  • 협업 알고리즘 최적화
  • 실시간 피드백 시스템

2. 성능 최적화

  • 응답 속도 개선
  • 메모리 사용량 최적화
  • 에이전트 실행 효율성 향상

3. 새로운 에이전트 추가

  • 실시간 화면 공유 에이전트
  • 음성 처리 전용 에이전트
  • 이미지 생성 에이전트

💡 구현 시 얻은 인사이트

  1. 모듈화의 중요성
    • 각 에이전트를 독립적인 모듈로 설계
    • 유지보수와 확장이 용이한 구조
  2. 상태 관리의 복잡성
    • 세션 상태와 학습 진행 상황의 동기화
    • 안정적인 상태 관리 시스템의 필요성
  3. 사용자 경험 최적화
    • 자연스러운 대화 흐름
    • 직관적인 인터페이스
    • 부드러운 전환 효과

🎯 마무리

멀티 에이전트 시스템을 통해 '공부의 신'은 각각의 AI 모델의 장점을 최대한 활용하면서, 사용자에게 맞춤형 학습 경험을 제공합니다.

앞으로도 지속적인 개선을 통해 더 효율적이고 효과적인 학습 도우미가 되도록 하겠습니다.

반응형

댓글