지난 한 해 동안 AI가 대중화되면서 개발자에게 두 가지 큰 기회의 문이 열렸습니다. 하나는 최첨단 AI를 프로젝트에 놀랍도록 쉽게 통합할 수 있게 된 것이고 다른 하나는 AI에 기반한 효율성을 개발 프로세스에 도입하게 된 것입니다.
Ruby 기반 AI 에이전트 프레임워크인 Sublayer는 1.5 모델을 핵심 개발자 제품 및 자체 툴링 워크플로에 통합함으로써 Gemini API의 성능과 효율성을 잘 보여줍니다.
AI가 개발자에게 안겨주는 기회 중 하나는 특히 초기 단계의 소규모 스타트업에서 팀이 더 적은 자원으로 더 많은 일을 할 수 있도록 하는 것입니다. 많은 경우 이는 문서화처럼 단순하지만 매우 중요한 분야에서 그렇습니다. 자체 워크플로에서 문서를 최신 상태로 유지하고 개선 영역을 식별하는 작업을 지원하기 위해 Sublayer가 라이브러리를 Gemini 1.5 Pro와 통합하고 AI 자동화를 구축함으로써 그와 같은 목표를 달성합니다.
최근 Sublayer의 CEO인 Scott Werner는 Waste Inferences!에서 이 개념에 대해 "Gemini의 방대한 컨텍스트 윈도우가 복잡하고 최적화된 구현에 얽매이지 않고 새로운 아이디어를 시도할 수 있는 여유 공간을 제공하기 때문에 이 모든 일이 가능했다"라고 말했습니다.
이 프로세스는 다음과 같이 작동합니다.
2. 에이전트는 작업 설명 지침과 함께 라이브러리의 전체 내용, 문서의 전체 내용, PR의 모든 관련 내용이 포함된 프롬프트를 생성하여 Gemini에 보냅니다.
3. 그런 다음 Gemini는 Sublayer 라이브러리가 사용할 객체로 변환하는 파일 경로, 이름, 내용을 포함하는 구조화된 출력으로 응답합니다.
4. 마지막으로, 에이전트는 수신한 구조화된 정보를 가져와 이를 이용해 새 브랜치를 만들고 요청된 변경 사항을 파일에 적용하고 새 PR을 제출합니다.
# Get the diff from the PR
diff = GithubGetDiffAction.new(repo: repo, pr_number: pr_number).call
# Get the contents of the library repository and docs repository
code_context = GetContextAction.new(path: code_repo_path).call
doc_context = GetContextAction.new(path: doc_repo_path).call
# Use Gemini 1.5 Pro to decide whether this PR requires a documentation update
result = DocUpdateNecessityGenerator.new(
code_context: code_context,
doc_context: doc_context,
diff: diff
).generate
# Use Gemini 1.5 Pro to generate suggested changes to the documentation
doc_update_suggestions = DocUpdateSuggestionGenerator.new(
code_context: code_context,
doc_context: doc_context,
context_ignore_list: context_ignore_list,
diff: diff
).generate
# Use Gemini 1.5 Pro to generate the changes to the suggested files
file_updates = DocUpdateGenerator.new(
code_context: code_context,
suggestions: suggestions,
doc_context: doc_context,
context_ignore_list: context_ignore_list
).generate
# Update each of the files returned by Gemini 1.5 Pro and create a new PR
Sublayer의 오픈소스 예제에서 전체 워크플로 코드를 확인하세요.
이 첫 번째 프로젝트가 성공한 후, Sublayer는 별도의 리소스 저장소를 모니터링하는 에이전트로 더욱 확장하여 문서의 특정 카탈로그 페이지를 최신 상태로 유지하는 데 주력했습니다. 심지어 Gemini가 현재 문서를 분석하고, 몇 가지 개선 영역을 식별하고, 영향에 따라 순위를 매기고, Sublayer 팀이 매일 아침 일어나 검토할 수 있도록 단일 PR을 생성하는 것과 유사한 작업이 밤새 실행됩니다.
자체 개발자 인프라와 툴링을 보다 효율화하는 일 외에, Sublayer는 핵심 제품 기능 내에서도 Gemini 모델을 지원합니다.
Sublayer의 임무는 개별 개발자와 소규모 팀이 비용이나 복잡성으로 인해 이전에는 도전할 엄두도 내지 못했던 야심 찬 프로젝트에 착수하도록 지원하는 것입니다. Sublayer는 단조롭고 시간이 많이 걸리는 반복 작업을 자동화하는 데 중점을 두며, 이는 AI에 대한 완벽한 사용 사례입니다. 유사한 작업을 수천 번 반복해야 하는 대규모 코드 마이그레이션부터 많은 시간과 에너지가 드는 체크리스트 상의 여러 작은 작업을 자동화함으로써 얻을 수 있는 일상의 효율성까지 다양하게 사용될 수 있습니다.
Sublayer의 주요 과제는 AI 생태계에서 상대적으로 지원이 부족한 Ruby 개발자 커뮤니티를 지원하는 것입니다. Sublayer는 Gemini를 통합함으로써 자사 도구 내에서 증가하는 Gemini 지원에 대한 수요를 충족할 수 있었습니다. Sublayer의 Gemini 구현은 매우 효율적이며, 추상화 레이어 덕분에 필요한 코드는 약 60줄에 불과합니다. 싱글 턴 반복 프로세스에서 모델과 상호 작용하는 구조화된 출력을 사용합니다. 이러한 접근 방식은 개발 및 디버깅을 단순화하므로 개발자가 강력한 애플리케이션을 개발하는 데 도움이 됩니다.
"LLM 기반 앱을 개발할 때는 문제를 가능한 가장 작은 구성요소로 세분화하세요. 어떤 모델 출력이든 효과적으로 처리하는 프로그램을 만들고 싶을 텐데, 이는 계속 진행하기 전에 사람이 직접 검토하고 편집하는 단계를 의도적으로 추가한다는 뜻일 수도 있습니다." Werner의 조언입니다.
Sublayer에 있어 Gemini와 같은 LLM은 데이터베이스와 유사한 인프라의 필수 요소입니다. Sublayer의 프레임워크는 Gemini 1.5 Pro와 Gemini 1.5 Flash 모두에 대한 호출을 원활하게 통합하여 개발자가 애플리케이션에서 바로 활용할 수 있는 구조화된 데이터를 검색하도록 설계되었습니다. 이 접근 방식은 다양한 데이터 소스에서 유용한 정보를 추출하는 것부터 코드를 생성하고 여러 언어와 라이브러리에 걸쳐 코드베이스를 변환하는 것까지, 새로운 가능성의 세계를 열어줍니다. Sublayer는 심지어 Gemini 모델을 사용하여 사용자가 프레임워크 자체 내에서 새로운 기능적 구성요소를 생성할 수 있도록 지원하기도 합니다. 이 "자체 어셈블링" 특성은 실험을 장려하고 사용자가 새로운 아이디어를 빠르게 탐색할 수 있도록 합니다.
"코드 생성, 작업 세분화, 지시 준수, 예제를 기반으로 한 새로운 데이터 구조 생성 등을 쉽게 수행하도록 설계된 프레임워크가 모든 문제를 해결하는 데 있어 Gemini는 탁월한 능력을 발휘합니다."
– Scott Werner, Sublayer CEO
Sublayer는 자사에서 만들고 있는 자동화 기술을 모든 개발팀이 사용할 수 있게 해주는 플랫폼인 Augmentations.ai를 앞으로 출시할 준비를 하고 있습니다. 초기 버전에는 Gemini 1.5 Pro로 구동되는 두 가지 도구가 포함됩니다. 하나는 맥락을 이해하고 계속 진화하는 모범 사례를 적용하는 AI 기반 코드 검토 규칙을 생성할 수 있게 해주는 Semantic Linting입니다. 나머지 하나는 여러 저장소와 제품 관리 도구에 걸쳐 이루어지는 개발 활동을 리더들이 실행에 옮길 수 있는 유용한 정보로 전환해 주는 Weekly Summaries입니다.
Sublayer는 Augmentations 플랫폼에서 더 많은 도구를 출시함에 따라 더 복잡한 작업을 위한 Gemini 1.5 Pro와 지연 시간에 더 민감하고 사용자 대상인 기능을 위한 Gemini 1.5 Flash를 계속해서 함께 활용할 계획입니다. 또한 이러한 활동의 결과가 오픈소스 프레임워크로 피드백되어 Ruby 커뮤니티가 새로 출시되는 Gemini 기능을 이용할 수 있도록 하는 동시에 Sublayer 팀이 이런 기능을 실제로 사용함으로써 더 활발하게 새로운 기능 개발이 이루어지게 됩니다.
Sublayer의 스토리는 Gemini API의 혁신적인 잠재력을 보여줍니다. 개발자가 어떻게 Gemini를 워크플로에 쉽게 통합하여 혁신과 자동화를 위한 기회의 장을 열어줄 수 있는지 잘 보여주는 증거이기도 합니다. Gemini 모델로 개발을 시작하려면 API 설명서를 읽어보세요.