재사용 가능한 컴포넌트처럼 AI 에이전트 구성하기
요약
React의 컴포넌트 모델을 활용하여 AI 에이전트를 구성하는 Agent Markup Language(AML)를 소개합니다. AML은 TypeScript와 JSX를 통해 에이전트 간의 데이터 흐름과 워크플로를 선언적으로 정의하여 복잡한 접착제 코드를 줄여줍니다.
핵심 포인트
- 에이전트 구성을 React 컴포넌트 방식처럼 선언적으로 설계 가능
- AML을 통해 에이전트 간의 명시적인 데이터 흐름(Dataflow) 제어
- JSX 문법을 사용하여 에이전트의 입력(Props)과 출력 구조를 직관적으로 표현
- 워크플로 재사용성을 높이고 복잡한 프롬프트 조립 과정을 간소화
재사용 가능한 React 컴포넌트를 만드는 방식처럼 AI 어시스턴트를 구성한다고 상상해 보세요.
한 에이전트는 정확성을 검토합니다. 다른 에이전트는 테스트를 계획합니다. 이들의 출력값은 하나의 릴리스 권장 사항(release recommendation)을 생성하는 세 번째 에이전트로 흘러 들어갑니다.
정확성 (Correctness) ──┐
├──> 합성 (Synthesis) ──> 릴리스 권장 사항 (Release recommendation)
테스트 계획 (Test plan) ────┘
이것이 에이전트 구성 (agent composition)입니다: 작은 전문가들, 명시적인 데이터 흐름 (dataflow), 그리고 하나의 최종 결과물.
접착제(Glue)가 차지하는 비중
Codex SDK는 TypeScript 애플리케이션에 깔끔한 스레드 및 턴 (thread-and-turn) API를 제공합니다. 여러 스레드를 구성하는 것은 여전히 애플리케이션의 몫입니다:
import { Codex } from "@openai/codex-sdk"
const codex = new Codex()
...
이것은 매우 합리적인 TypeScript입니다. 하지만 동시에 애플리케이션이 스레드, 실행 순서, 결과 추출, 그리고 프롬프트 조립 (prompt assembly)을 책임지게 만듭니다. 워크플로가 커질수록, 이 접착제 코드를 읽는 데 더 많은 시간을 소비하게 됩니다.
컴포넌트로서의 에이전트
Agent Markup Language (AML)는 그러한 구성을 TypeScript와 JSX로 옮겨 놓았습니다:
function ReleaseReview() {
return (
<Agent provider={Codex} system="Synthesize evidence without inventing findings.">
...
AML은 두 개의 자식 에이전트를 왼쪽에서 오른쪽으로 실행합니다. 이들의 출력값은 부모 프롬프트 내에 나타나는 위치에 정확히 배치됩니다. 합성 (synthesis) 에이전트는 두 에이전트가 모두 준비된 후에 시작됩니다.
AML은 React는 아니지만, 컴포넌트 모델은 의도적으로 익숙하게 설계되었습니다. 함수 (Functions)는 동작을 패키징합니다. 프롭스 (Props)는 입력을 전달합니다. JSX는 어떤 에이전트가 각 결과를 받는지 보여줍니다. 일반적인 TypeScript가 조건문을 처리합니다.
워크플로를 간결하게 유지하거나, 더 큰 워크플로를 이름이 지정된 전문가들로 나눌 수 있습니다:
import { Agent, AmlRuntime, type AmlRenderable, codexAgent, FollowUp } from "@aml-jsx/sdk"
const Codex = codexAgent({})
...
이제 컴포넌트들은 다양한 방식으로 JSX를 사용합니다: props가 없는 경우, 배열 prop, 중첩된 자식(nested children), 그리고 조건에 따라 Agent 또는 일반 텍스트를 반환하는 불리언(boolean) 방식이 있습니다. 이들은 작성된 순서대로 실행됩니다. 부모 컴포넌트는 출력물들이 프롬프트(prompt)로 조립된 후에 열리며, 그 다음 FollowUp이 동일한 세션 내에서 실행 결정(release decision)을 요청합니다.
워크플로를 재설계할 필요 없이 전문가(specialist)를 교체하거나, 다른 곳에서 재사용하거나, 다른 프로바이더(provider)를 부여할 수 있습니다.
개발자는 여전히 제어 흐름(control flow)을 작성합니다. Agent 출력은 데이터로 유지됩니다. AML은 모델이 생성한 JSX를 새로운 워크플로로 절대 실행하지 않습니다. 도구(Tools)와 MCP 서버 또한 이를 전달받는 에이전트(agent)의 범위(scope) 내에 머뭅니다.
우리는 이것을 만들고 있습니다
우리는 복잡한 에이전트 시스템이 단순한 오케스트레이션 접착제(orchestration glue)의 더미가 아니라, 구성된 부품들로 읽힐 수 있도록 AML을 구축하고 있습니다.
AML은 오픈 소스이며, MIT 라이선스를 따르고, 활발히 개발 중입니다. 코드를 읽고, 예제를 실행하며, GitHub에서 리포지토리에 별(star)을 눌러주세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기