AI Functions: LLM 코드, 런타임 검증으로 신뢰도를 높이다
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의 핵심: 런타임 검증
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 기반 개발의 새로운 가능성을 제시한다.