TL;DR
Faith는 어떤 문법으로도 작성한 자유형 소스(main.ai)를 Gemini 기반 에이전트가 사람처럼 해석해 엄격한 Java로 변환하고, 표준 Java 컴파일러로 결정론적 바이트코드를 생성하는 Gradle 플러그인이다. import 없이도 JVM 표준 라이브러리를 자동으로 끌어오고, 애매한 표현은 빌드를 실패시키며 사람이 읽기 쉬운 오류를 통해 명확화를 요구한다. 설정으로 geminiApiKey, model(gemini-flash-latest 예시), effort, maxRetries(기본 3) 등을 제어하며 ./gradlew compileFaith로 jar를 얻을 수 있다.
섹션별 상세
용어 해설
- 자바 가상 머신(JVM)
- — JVM은 Java 바이트코드를 실행하는 런타임으로, Faith는 최종 산출물을 JVM용 바이트코드로 만든다. Faith는 개발자가 쓴 자유형 문장을 LLM로 엄격한 Java 코드로 변환한 뒤 표준 컴파일 절차로 바이트코드를 생성한다. 이 과정에서 생성되는 출력물은 기존 Java 컴파일러가 처리할 수 있는 형태여야 한다.
- LLM 기반 컴파일 프런트엔드(LLM compiler)
- — LLM compiler는 자연어에 가까운 자유형 소스 코드를 언어 규칙이 엄격한 타깃 코드로 변환하기 위해 LLM을 전단(front-end)으로 활용하는 구성이다. Faith는 Gemini 에이전트를 전단으로 배치해 사용자의 의도를 해석하고 엄격한 Java 코드를 생성한 뒤 표준 자바 컴파일러로 빌드한다. 이 설계는 런타임에 모델을 호출하지 않고 결정론적 바이트코드를 확보하게 해 준다.
- Gradle 빌드 플러그인(Gradle 플러그인)
- — Gradle 플러그인은 Faith 컴파일러를 기존 Gradle 빌드 과정에 통합하는 역할을 한다. 사용자는 build.gradle에 플러그인 id 'com.krossovochkin.faith' version '0.1.0'을 추가하고 ./gradlew compileFaith로 빌드할 수 있다. 설정 블록으로 Gemini API 키, 모델, effort, maxRetries 같은 동작 파라미터를 제어한다.
- Google Gemini LLM(Gemini)
- — Gemini는 Faith의 프런트엔드 에이전트가 사용하는 LLM으로, ADK(Agent Development Kit)를 통해 호출된다. Faith는 gemini-flash-latest 모델을 예시로 제시하며 모델 확신도가 낮을 경우 빌드를 실패시키도록 설계되어 있다. 모델은 소스의 자유형 문장을 엄격한 Java로 변환하는 추론을 담당한다.
코드 예제
target = arg 0
list = 1,2,3,4,5,6,7,8,9,10
print binary search target in list이 예시는 Faith 소스(main.ai)의 자유형 문법을 보여 준다. 사용자는 전형적인 프로그래밍 언어 구문을 따를 필요 없이 의도를 한 줄로 적으면 된다. Faith의 프런트엔드 에이전트가 이 문장을 해석해 올바른 Java 구현으로 변환한 뒤 컴파일한다.
faith {
apiKey = providers.gradleProperty('geminiApiKey') // required
model = 'gemini-flash-latest' // optional, default shown
effort = 'medium' // optional — low | medium | high
sourceFile = 'main.ai' // optional, default shown
maxRetries = 3 // optional, default shown
}이 Gradle 설정 블록은 Faith 플러그인 동작을 제어하는 주요 옵션을 담고 있다. apiKey는 Gemini 호출을 위해 필수이며 model과 effort로 모델 버전과 추론 난이도를 지정할 수 있다. maxRetries는 에이전트가 javac 오류 발생 후 스스로 수정을 시도할 최대 횟수로 기본값은 3이다.
plugins { id 'com.krossovochkin.faith' version '0.1.0' }이 한 줄은 Faith를 Gradle 빌드에 통합하는 방법을 보여 준다. 플러그인 선언 후 ./gradlew compileFaith를 실행하면 main.ai를 해석해 jar를 생성하는 빌드 단계가 동작한다. 플러그인은 LLM 기반 전처리와 이후의 표준 Java 컴파일 단계 사이를 연결하는 역할을 수행한다.
근거 모음
- 프런트엔드로 Gemini 기반 에이전트를 사용해 자유형 소스를 엄격한 Java로 변환한다. — README 본문: 'Faith's front-end isn't a parser in the traditional sense — it's a Gemini-backed agent (via Google's ADK) that reads your main.ai file the way a person would.'
- 빌드 출력은 결정론적 바이트코드이며 LLM은 전단에서만 호출된다. — README 본문: 'the agent resolves your free-form source into strict, valid Java, which then compiles the normal way — deterministic bytecode out, LLM only at the front door.'
- 애매한 문장이 있으면 빌드를 실패시키고 사람이 읽을 수 있는 오류를 제공한다. — README 예시: 'faith: main.ai:10 is ambiguous — fix this line and rebuild.' 및 이어지는 질문 텍스트.
- 설정에서 apiKey, model, effort, sourceFile, maxRetries를 지정할 수 있으며 기본 maxRetries는 3이다. — README의 configuration faith 블록과 각 옵션 주석.
기술
- Gemini
- Gradle
- JVM
- Java
활용 사례
- 개발자가 다양한 스타일(Python·Kotlin·Java 혼합)으로 의도를 서술해도 Faith가 이를 Java로 변환해 빠르게 실행 가능한 jar를 얻는 프로토타이핑에 적합하다. 자유형 서술을 통해 알고리즘의 핵심 동작만 작성하면 에이전트가 구현 세부를 채워 컴파일 가능한 코드로 만든다. 이 과정은 반복 실험과 아이디어 검증을 신속하게 만든다.
- 교육용 샌드박스나 알고리즘 설명을 코드로 자동 생성해야 하는 워크플로우에서 유용하다. 사용자는 상세한 문법을 배우지 않고도 알고리즘 의도를 기술해 동작을 확인할 수 있다. 다만 애매한 표현은 빌드 실패로 이어지므로 명확한 서술 습관이 필요하다.
언급된 리소스
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.