공유

2024년 11월 14일

Gemini API로 AI 기반 개발자 도구 개선

스콧 워너

Sublayer CEO

페이지 베일리의

AI 개발자 환경 엔지니어

비샬 다르마디카리

제품 솔루션 엔지니어

하위 레이어 쇼케이스 히어로

지난 한 해 동안 AI가 대중화되면서 개발자에게 두 가지 큰 기회가 열렸습니다. 최첨단 AI를 프로젝트에 매우 쉽게 통합하고 AI 기반 효율성을 개발 프로세스에 도입할 수 있게 된 것입니다.

Ruby 기반 AI 에이전트 프레임워크인 Sublayer는 1.5 모델을 핵심 개발자 제품과 자체 도구 워크플로에 통합하여 Gemini API의 강력함과 효율성을 보여줍니다.

Gemini를 사용하여 Sublayer 문서를 최신 상태로 유지하기

개발자를 위한 AI의 기회 중 하나는 팀, 특히 초기 단계의 소규모 스타트업이 적은 리소스로 더 많은 작업을 할 수 있도록 지원하는 것입니다. 많은 경우 문서와 같이 간단하지만 중요한 부분에서 문제가 발생할 수 있습니다. Sublayer는 자체 워크플로에서 라이브러리를 Gemini 1.5 Pro와 통합하고 AI 자동화를 구축하여 문서의 최신 상태를 유지하고 개선 영역을 파악하는 작업을 지원합니다.

'Gemini의 대규모 컨텍스트 윈도우 덕분에 복잡하고 최적화된 구현에 얽매이지 않고 새로운 아이디어를 시도할 여유가 생겼습니다.'

— 최근 Waste Inferences!에서 이 개념에 관해 작성한 Sublayer의 CEO인 스콧 워너가 말합니다.

이 프로세스는 다음과 같이 작동합니다.

  1. PR이 기본 하위 레이어 저장소에 병합될 때마다 에이전트가 문서를 업데이트하는 작업을 시작하도록 트리거됩니다.

  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  
          
            
          

하위 레이어의 오픈소스 예에서 전체 워크플로 코드를 확인하세요.

이 첫 번째 프로젝트의 성공 이후 별도의 리소스 저장소를 모니터링하는 에이전트로 더욱 확장하여 문서의 특정 카탈로그 페이지를 최신 상태로 유지하는 데 집중하고 있습니다. Gemini가 현재 문서를 분석하고, 개선이 필요한 몇 가지 영역을 식별하고, 영향에 따라 순위를 매기고, Sublayer팀이 매일 아침 일어나 검토할 수 있도록 단일 PR을 생성하는 유사한 작업도 밤새 실행됩니다.

Gemini 모델을 통해 Ruby 개발자 커뮤니티에 AI 제공

Sublayer는 자체 개발자 인프라와 도구를 더 효율적으로 만드는 것 외에도 핵심 제품 기능 내에서 Gemini 모델을 지원합니다.

Sublayer의 목표는 비용이나 복잡성으로 인해 이전에는 엄두를 내지 못했던 야심찬 프로젝트를 개별 개발자와 소규모 팀이 해결할 수 있도록 지원하는 것입니다. 지루하고 시간이 많이 걸리며 반복적인 작업을 자동화하는 데 중점을 두고 있으며, 이는 AI에 완벽한 사용 사례입니다. 유사한 작업을 수천 번 반복해야 하는 대규모 코드 이전부터 시간과 에너지를 소모하는 체크리스트의 작은 작업을 자동화하여 달성하는 일상적인 효율성에 이르기까지 다양합니다.

Sublayer의 주요 과제는 AI 생태계에서 상대적으로 소외된 Ruby 개발자 커뮤니티를 지원하는 것입니다. Gemini를 통합하여 도구 내에서 Gemini 지원에 대한 증가하는 수요를 충족할 수 있었습니다. 하위 레이어의 Gemini 구현은 추상화 레이어 덕분에 약 60줄의 코드만 필요할 정도로 매우 효율적입니다. 구조화된 출력을 사용하며 단일 턴 반복 프로세스에서 모델과 상호작용합니다. 이 접근 방식은 개발 및 디버깅을 간소화하여 개발자가 강력한 애플리케이션을 빌드할 수 있도록 지원합니다.

베르너는 'LLM 기반 앱을 빌드할 때는 문제를 가능한 한 작은 구성요소로 나누세요'라고 조언합니다. '모든 모델 출력을 효과적으로 처리하도록 프로그램을 설계해야 합니다. 이를 위해 사람이 검토하고 수정하는 단계를 의도적으로 추가해야 할 수도 있습니다.'

LLM, AI 인프라 퍼즐의 핵심 요소

Sublayer에게 Gemini와 같은 LLM은 데이터베이스와 유사한 필수 인프라입니다. 이 프레임워크는 Gemini 1.5 Pro와 Gemini 1.5 Flash에 대한 호출을 원활하게 통합하여 개발자가 애플리케이션에서 바로 사용할 수 있는 구조화된 데이터를 가져오도록 설계되었습니다. 이 접근 방식을 사용하면 다양한 데이터 소스에서 유용한 정보를 추출하는 것부터 언어와 라이브러리 전반에서 코드를 생성하고 코드베이스를 변환하는 것까지 다양한 가능성을 열 수 있습니다. Sublayer는 사용자가 프레임워크 내에서 새로운 기능 구성요소를 생성할 수 있도록 Gemini 모델을 사용합니다. 이러한 '자가 조립' 특성은 실험을 장려하고 사용자가 새로운 아이디어를 빠르게 탐색할 수 있도록 합니다.

'Gemini는 프레임워크가 쉽게 처리하도록 설계된 모든 문제(코드 생성, 작업 분해, 안내 따르기, 예시에 기반한 새로운 데이터 구조 생성)를 해결하는 데 탁월합니다.'

— 스콧 워너, Sublayer

다음 단계

앞으로 Sublayer는 모든 개발팀이 만들고 있는 자동화를 사용할 수 있는 플랫폼인 Augmentations.ai를 출시할 예정입니다. 초기 출시에는 Gemini 1.5 Pro로 구동되는 두 가지 도구가 포함됩니다. 바로 팀이 컨텍스트를 이해하고 진화하는 권장사항을 적용하는 AI 기반 코드 검토 규칙을 만들 수 있는 시맨틱 린팅과 여러 저장소 및 제품 관리 도구 전반의 개발 활동을 리더십을 위한 실행 가능한 통계로 전환하는 주간 요약입니다.

증강 플랫폼에서 더 많은 도구를 출시함에 따라 더 복잡한 작업에는 Gemini 1.5 Pro를, 지연 시간에 더 민감한 사용자 대상 기능에는 Gemini 1.5 Flash를 혼합하여 계속 사용할 계획입니다. 이 작업은 오픈소스 프레임워크에도 반영되어 Ruby 커뮤니티가 새로운 Gemini 기능을 출시될 때 활용할 수 있으며, Sublayer팀의 실제 사용에 의해 추진됩니다.

Sublayer의 이야기는 Gemini API의 혁신적인 잠재력을 보여줍니다. 개발자가 얼마나 쉽게 Gemini를 워크플로에 통합할 수 있는지 보여주는 사례로, 혁신과 자동화를 위한 다양한 기회를 열어줍니다. Gemini 모델로 빌드를 시작하려면 API 문서를 참고하세요.