본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 05. 12. 06:09

생물학적 AI: 툴 호출 셀룰러 시뮬레이션 구축하기

요약

본 기사는 생물학적 시스템의 복잡하고 동적인 특성을 모방한 'Cyto Agent'라는 실시간 세포 시뮬레이션 구축 과정을 다룹니다. 기존의 하드코딩된 계단식 구조 대신, LLM 기반 오케스트레이터(Nucleus Agent)를 사용하여 세포 상태를 비정형 데이터로 인식하고 필요한 도구들을 추론하여 행동을 결정합니다. 이 아키텍처는 반응형 상태 기계와 Pub/Sub 이벤트 버스를 결합하며, 툴 호출 패턴을 통해 LLM에게 '감지 능력'과 '도메인 지식 검색 능력'을 부여함으로써 자율 진화가 가능한 생생한 시뮬레이션을 구현합니다.

핵심 포인트

  • LLM 기반 오케스트레이터(Nucleus Agent)를 사용하여, 기존의 하드코딩된 if/else 구조 대신 동적이고 적응적인 세포 행동을 모델링했습니다.
  • 시스템은 반응형 상태 기계(The Engine), Pub/Sub 이벤트 버스(Event Bus), 그리고 LLM 오케스트레이터로 구성되어 분산 지능을 구현합니다.
  • 툴 호출(Tool Calling) 패턴을 활용하여, LLM이 전체 상태를 한 번에 처리하는 대신 필요한 특정 소기관의 원격 측정 데이터나 외부 지식베이스를 검색하도록 했습니다.
  • 시뮬레이션은 자율 진화(Autonomous Evolution) 기능을 포함하며, 에너지를 사용하여 세포 구성 요소가 스스로 최적화되는 피드백 루프를 구현했습니다.

대사 과정은 복잡합니다. 생물학에서 미토콘드리아(Mitochondria)나 리소좀(Lysosomes) 같은 세포 소기관들은 중앙의 '스크립트'를 따르지 않습니다. 대신 화학 신호에 반응하고 자원을 협상하죠. Cyto Agent를 구축하면서, 저는 이러한 분산된 지능을 최신 LLM 에이전트 패턴을 사용하여 구현하고자 했습니다. 이 글에서는 'LangGraph 스타일' 툴 호출 오케스트레이터를 통해 실시간 세포 시뮬레이션을 구축하는 방법을 깊이 파고들어 보겠습니다.

문제점: 스크립팅 vs. 동적 지능
대부분의 시뮬레이션은 하드코딩된 if/else 계단식 구조를 사용합니다. if (pathogen) { defend(); }와 같은 방식입니다. 이는 효율적이지만, 생물학적 적응이 가진 미묘한 뉘앙스를 담아내지 못합니다. Cyto Agent는 이러한 계단식 구조를 Nucleus Agent로 대체했습니다. Nucleus Agent는 LLM 기반의 오케스트레이터로서, 세포 상태를 비정형 데이터(unstructured data)로 인식하고 사용 가능한 도구들을 추론하며 행동을 결정합니다.

고수준 아키텍처 (High-Level Architecture)
시스템은 세 가지 주요 구성 요소로 나뉩니다:

  1. The Engine (Simulation.ts): 세포의 '물리'를 처리하는 반응형 상태 기계(reactive state machine)입니다 (ATP 감소, 포도당 소비, 병원체 손상 등).
  2. The Event Bus (EventBus.ts): 에이전트들이 강하게 결합되지 않은 상태에서도 신호를 '듣게' 해주는 pub/sub 시스템입니다.
  3. The AI Orchestrator (LangChainService.ts): 시뮬레이션 상태와 LLM 추론 사이의 다리 역할을 합니다.

'감지 도구(Sensing Tools)' 패턴
이 구축 과정에서 가장 흥미로운 부분은 LLM에게 '눈'과 '손'을 제공하는 것입니다. 전체 상태를 모든 프롬프트에 주입하는 대신, 저는 툴 호출(Tool Calling)을 구현했습니다:

const queryStatus = tool (
  async ({ id }) => {
    // 내부 원격 측정 데이터 반환
  }
)

특정 소기관의 경우 ATP Efficiency: Level ${ state . mitoLevel } , Integrity: ${ state . lysoLevel } 를 반환합니다. }, { name : "query_organelle_status" , description : "소기관의 특정 원격 측정 데이터를 조사합니다." , schema : z . object ({ id : z . string () }), } ); 위기 상황이 발생하면, 핵(Nucleus)은 단순히 패닉에 빠지지 않습니다. 바이러스성 균주와 곰팡이성 균주 각각에 대한 구체적인 대응책을 검색하기 위해 check_genomic_database(pathogen_type)를 호출합니다. 이는 "도메인 지식" (데이터베이스)과 "추론" (LLM)을 분리하는 것입니다. 실시간 시각화 생태계를 살아있게 만들기 위해 Framer Motion을 사용하여 세포 구성 요소를 애니메이션 처리했습니다. 병원체는 단순히 정적인 점이 아닙니다. 그들의 행동은 유형에 따라 달라집니다: 바이러스성 : 고주파 복제를 반영하는 스파이크 모양의 빠르게 진동하는 푸크시아색 아티팩트. 박테리아성 : 대사 독성을 반영하는 느리게 움직이는 에메랄드빛 알약 모양. 곰팡이성 : 느리고 꾸준한 성장을 나타내는 맥동하는 호박색 포자. 결과: 자율 진화 가장 보람 있는 기능 중 하나는 "자율 진화(Autonomous Evolution)"입니다. 핵은 요약된 ATP를 사용하여 미토콘드리아를 "진화"시키기로 결정할 수 있습니다 (랭크 2 또는 3으로 업그레이드). 이는 사용자의 개입 없이도 시뮬레이션이 시간이 지남에 따라 스스로 최적화되는 피드백 루프를 만듭니다. 코드를 살펴보고 싶으신가요? 전체 리포지토리는 여기에서 확인하세요: https://www.dailybuild.xyz/project/128-cyto-agent

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
1

댓글

0