Cloudflare, AI 에이전트 인프라 'Project Think' 출시

by DD
1개월 전
조회수 16

Project Think는 장기 실행 에이전트(Long-running Agents) 구축을 위한 새로운 기본 요소(Primitives)를 제공하며, 지속적인 실행(Durable Execution), 하위 에이전트(Sub-agents), 샌드박스 코드 실행(Sandboxed Code Execution) 등을 지원함

기존 에이전트의 확장성(Scalability) 문제를 해결하기 위해, 각 에이전트가 고유한 인스턴스로 실행되고 유휴 시 비용이 발생하지 않는 서버리스(Serverless) 아키텍처를 채택함

Durable Objects를 활용하여 에이전트의 상태를 지속적으로 유지하고, SQLite 데이터베이스(Database)를 통해 데이터 관리 및 복구 기능을 제공함

Self-authored extensions 기능을 통해 에이전트가 런타임에 자체 도구를 작성하여 기능 확장성(Extensibility)을 확보함

Project Think의 핵심 아키텍처: Durable Objects

Project Think는 Durable Objects를 기반으로 하여 각 에이전트에게 고유한 ID와 지속적인 상태를 부여한다. 이는 기존의 VM/컨테이너 기반 에이전트(VM/Container-based Agents)와 달리, 에이전트가 유휴 상태일 때 컴퓨팅 자원을 소비하지 않도록 하여 비용 효율성(Cost Efficiency)을 높인다.

Durable Objects는 자동 확장(Automatic Scaling)을 지원하여, 에이전트의 부하에 따라 동적으로 자원을 할당하고 관리한다.

각 에이전트는 자체적인 SQLite 데이터베이스(Database)를 내장하여, 상태 정보를 안전하게 저장하고 관리한다.

자동 복구(Automatic Recovery) 기능을 통해, 플랫폼의 장애 발생 시에도 에이전트의 상태를 유지하고 작업을 재개할 수 있다. 이러한 아키텍처는 에이전트의 지속성(Durability)확장성(Scalability)을 동시에 확보하는 데 기여한다.

Durable Execution과 Fiber 기반의 Crash Recovery

Project Think는 runFiber() 함수를 통해 에이전트의 실행을 보호한다. Fiber는 SQLite에 등록(Registered in SQLite)되어 실행 전, 체크포인트(Checkpointable)를 통해 중간 상태를 저장하고, 재시작 시 복구할 수 있는 지속적인 함수 호출(Durable Function Invocation)이다.

Fiber는 LLM 호출과 같이 시간이 오래 걸리는 작업을 중간에 중단 없이 완료할 수 있도록 보장한다.

Crash Recovery는 배포, 플랫폼 재시작, 리소스 제한 등의 문제로 인해 발생할 수 있는 실행 환경의 중단을 대비한다.

onFiberRecovered를 통해, 중단된 작업을 안전하게 재개하고, 데이터 손실(Data Loss)을 방지한다. 이러한 기능은 에이전트의 신뢰성(Reliability)을 향상시키고, 장기 실행 작업의 안정성을 보장한다.

Sub-agent와 Persistent Session을 활용한 유연한 에이전트 설계

Project Think는 Sub-agent 기능을 통해 복잡한 작업을 여러 하위 에이전트로 분할하여 관리할 수 있도록 지원한다. 각 하위 에이전트는 자체적인 대화 트리(Conversation Tree), 메모리, 도구, 모델을 가지며, 부모 에이전트와 RPC(Remote Procedure Call)를 통해 통신한다.

Persistent Session은 트리 구조의 메시지를 지원하여, 대화 내용을 효율적으로 관리하고, 포킹(Forking) 기능을 통해 실험적인 대화를 안전하게 시도할 수 있도록 한다.

Context Blocks를 사용하여, 모델이 장기적으로 기억해야 할 중요한 정보를 시스템 프롬프트에 저장하고 관리한다.

Non-destructive compaction 기능을 통해, 대화 내용이 길어질 경우 오래된 메시지를 요약하여 메모리 사용량(Memory Usage)을 최적화한다. 이러한 기능들은 에이전트의 유연성(Flexibility)확장성(Extensibility)을 높이는 데 기여한다.

Self-authored Extensions: 런타임에 자체 도구 생성

Project Think는 에이전트가 런타임에 자체적으로 도구를 생성할 수 있는 Self-authored Extensions 기능을 제공한다. 에이전트는 Dynamic Workers에서 실행되는 TypeScript 프로그램(TypeScript Programs)을 작성하여, 네트워크 접근 및 워크스페이스 작업에 대한 권한을 선언할 수 있다.

ExtensionManager는 확장 기능을 번들링하고, Dynamic Worker에 로드하며, 새로운 도구를 등록한다.

확장 기능은 DO(Durable Objects) 스토리지에 저장되어, 에이전트가 재시작(Restart)되더라도 유지된다.

에이전트는 자체적으로 새로운 기능을 추가하고, 이를 통해 지속적인 개선(Continuous Improvement)을 이루어낸다. 이러한 기능은 에이전트의 자율성(Autonomy)을 높이고, 다양한 작업에 대한 적응력을 향상시킨다.

Cloudflare Think SDK를 활용한 개발

Project Think는 @cloudflare/think 패키지를 통해 제공되며, 개발자는 이 SDK를 사용하여 AI 에이전트를 쉽게 구축할 수 있다. SDK는 Agent base class와 다양한 Primitives를 제공하여, 개발자가 필요에 따라 기능을 선택적으로 사용할 수 있도록 한다.

getTools() 함수를 통해, 에이전트가 사용할 수 있는 도구를 정의하고, createExecuteTool, createBrowserTools, createSandboxTools 등의 유틸리티 함수를 활용하여 도구를 쉽게 구성할 수 있다.

Lifecycle hooks를 통해, 각 턴(Turn)의 다양한 단계에서 사용자 정의 로직을 실행할 수 있다.

@cloudflare/ai-chat과 동일한 WebSocket 프로토콜(WebSocket Protocol)을 사용하므로, 기존 UI 컴포넌트를 재사용할 수 있다. 이러한 기능들은 개발자가 AI 에이전트(AI Agent)를 효율적으로 개발하고 배포할 수 있도록 지원한다.

Project Think: building the next generation of AI agents on Cloudflare