Software 3.0의 한계: LLM이 생성한 코드를 사람이 검증하는 방식에서, AI Functions는 런타임 검증을 통해 자동화된 검증을 제공
AI Functions는 자연어 명세(Natural Language Specification)를 기반으로, LLM이 코드를 생성하고 실행하며, 사후 조건(Post-conditions)을 통해 검증하는 방식
Pydantic 모델을 활용한 구조화된 출력, 네이티브 파이썬 객체 반환, 멀티 에이전트 구성, 비동기 실행 지원 등 다양한 기능 제공
사후 조건(Post-conditions)을 통해 LLM의 출력을 검증하고, 실패 시 재시도를 유도하여 자동화된 오류 수정(Automated Error Correction)을 가능하게 함
AI Functions는 Strands Agents SDK를 기반으로 하며, 코드 실행 시 안전성(Security)을 위해 명시적인 설정과 제한된 임포트(Import)를 제공
기존 테스트 스위트를 사후 조건으로 활용하여 테스트 자동화(Test Automation)를 구현하고, 개발 생산성을 향상시킴
AI Functions는 기존 Software 3.0의 생성-검증(Generation-Verification) 방식에서 벗어나, 런타임에 코드를 검증하는 Software 3.1 패러다임을 제시한다. 핵심은 사후 조건(Post-conditions)으로, LLM이 생성한 코드의 실행 결과를 검증하는 파이썬 함수이다. 검증 실패 시 LLM에 피드백을 제공하여 재시도를 유도하며, 개발자는 완벽한 프롬프트 대신 검증 로직(Verification Logic)에 집중할 수 있다. 이는 자동화된 오류 수정(Automated Error Correction)을 가능하게 하며, LLM 기반 시스템의 신뢰성을 향상시킨다.
AI Functions는 Pydantic 모델(Pydantic Model)을 활용하여 구조화된 출력을 지원하며, IDE 자동 완성 및 유효성 검사를 제공한다. 또한, JSON 직렬화 없이 네이티브 파이썬 객체(Native Python Objects)를 반환하여, 데이터프레임(DataFrame), 데이터베이스 연결 등 다양한 객체를 직접 사용할 수 있다. 이는 다른 LLM 프레임워크와 차별화되는 특징으로, 개발자가 별도의 파싱 로직 없이 LLM이 생성한 코드를 활용할 수 있도록 돕는다. 특히, Pandas DataFrame을 직접 반환하는 기능은 데이터 분석 워크플로우를 간소화한다.
AI Functions는 `code_execution_mode="local"` 설정을 통해 LLM이 파이썬 인터프리터 내에서 코드를 실행하도록 허용한다. 이는 강력한 기능이지만, 동시에 보안 위험(Security Risk)을 수반한다. 이를 위해 AI Functions는 명시적인 설정, 임포트 제한, 사후 조건 검증 등 여러 안전 장치를 제공한다. 구체적으로, 코드 실행은 기본적으로 비활성화되어 있으며, 함수별로 활성화해야 한다. 또한, 허용된 패키지만 임포트할 수 있도록 제한하고, 생성된 코드의 유효성을 사후 조건으로 검증한다. 하지만, 샌드박싱(Sandboxing)을 완벽하게 제공하지 않으므로, 프로덕션 환경에서는 컨테이너(Container) 또는 격리된 환경에서 실행하는 것이 권장된다.
AI Functions는 일반적인 파이썬 함수처럼 쉽게 조합할 수 있으며, 멀티 에이전트 시스템(Multi-Agent System)을 구축할 수 있다. 각 에이전트는 자체적인 사후 조건을 가지며, 상위 에이전트는 하위 에이전트의 검증된 결과를 활용한다. 또한, AI Functions는 비동기 실행을 지원하여, 독립적인 작업을 병렬로 처리할 수 있다. 예를 들어, 웹 검색과 데이터 로딩을 동시에 수행하여 전체 작업 시간을 단축할 수 있다. 이러한 기능은 복잡한 워크플로우를 효율적으로 관리하고, 개발 생산성(Development Productivity)을 향상시킨다.
AI Functions는 기존 테스트 스위트를 사후 조건으로 활용하여, 테스트 자동화(Test Automation)를 구현할 수 있다. 테스트가 통과하면 코드가 올바르게 동작하는 것으로 간주하고, 실패하면 LLM에 피드백을 제공하여 재시도를 유도한다. 이는 개발자가 별도의 검증 로직을 작성할 필요 없이, 기존 테스트를 활용하여 LLM의 출력을 검증할 수 있도록 한다. 특히, 테스트 실패 시 LLM이 구체적인 오류 메시지를 받기 때문에, 보다 정확하고 효과적인 오류 수정(Error Correction)이 가능하다.
AI Functions는 `AIFunctionConfig` 객체를 사용하여 함수 간 설정을 공유할 수 있으며, 개별 함수에서 설정을 재정의하여 유연성을 확보한다. 예를 들어, 서로 다른 모델을 사용하여 성능과 비용을 최적화할 수 있다. 또한, AI 기반 사후 조건을 통해, 구조적 검사 외에도 의미론적 품질(Semantic Quality)을 검증할 수 있다. 이는 LLM이 생성한 내용의 신뢰성을 높이는 데 기여하며, AI 환각(Hallucination) 문제를 완화하는 데 도움을 준다. AI Functions는 실험적인 프로젝트이지만, LLM 기반 개발의 새로운 가능성을 제시한다.