다트 + 제미니를 사용한 AI 에이전트 | chris sells


AI 에이전트란?

  • 최근 개발자 대상 AI 에이전트 도구가 활발하게 개발되고 있음.
  • “도구(tool)” 모드에서 “에이전트(agent)” 모드로의 전환이 화두임.
  • 에이전트는 마치 마법같이 보이지만 결국 구현 원리는 단순함.
  • 여러 언어 및 LLM(예: Go+Claude) 기반으로도 쉽게 만들 수 있음.

Dart + Gemini 기반 파일 에이전트 예시 코드

  • Dart와 Gemini API를 활용해 파일 시스템을 제어하는 에이전트 구현 예시
  • 주요 기능:
    • Gemini API 연결 (API 키 필요)
    • 파일 툴(읽기, 목록, 수정) 정의
    • 콘솔 입력/출력 반복
    • 모델로부터 함수 호출 요청받고 해당 파일 작업 실행
    • 작업 결과를 모델에 반환

주요 도구 및 기능 정리

1. read_file

  • 파일 경로 입력 > 파일 내용 읽기

2. list_files

  • 디렉터리 입력(생략 가능, 기본은 현재 디렉터리) > 해당 경로의 파일/디렉터리 목록 반환

3. edit_file

  • 파일 경로 및 신규 내용 입력 > 해당 파일을 새 내용으로 덮어쓰기

예제 대화와 주요 흐름

1. 일반 챗봇/컨텍스트 유지

  • 기본적인 대화를 자연스럽게 이어가며 이름 등도 기억
  • 예시: “Chris”가 자신과 말할 때 이름을 기억해서 호칭 사용

2. read_file로 파일 열람/문제 풀이

  • 에이전트가 지시에 따라 파일을 읽어 문제 답을 추론 (예: 수수께끼 문제)

3. 코드 파일 요약/설명

  • 특정 파일의 구조와 주요 역할을 간단히 요약/설명
  • 예시: bin/main.dart 파일의 역할 설명

4. list_files로 디렉터리 구조 탐색

  • 디렉터리 내 파일 및 하위 디렉터리 목록을 출력
  • 각 파일/폴더의 기능 및 용도 설명(Dart 프로젝트 기준)

5. pubspec.yaml에서 Dart SDK 버전 추출

  • 파일을 읽어 SDK 버전 범위 추출 및 설명

6. edit_file로 파일 신규 생성 및 수정

  • 개발자가 요청하면 새로운 파일 생성(JS FizzBuzz 등)
  • 파일 내용 변경(기존 JS 파일의 출력 범위 조정 등)
  • 각 변경 결과를 실제로 실행하면 정상 동작함을 확인

7. rot13 디코딩 스크립트 생성 예시

  • 사용자가 ROT13 디코딩 JS 파일 생성 요청
  • 에이전트가 코드 생성 및 파일 이름 지정 후 저장

요점 정리

  • Gemini와 같은 LLM에 도구(tool)를 부여하면 에이전트는 적절한 타이밍에 도구를 스스로 활용해 작업을 해결함.
  • 사용자는 tool 사용을 직접 주문하지 않아도 자연스러운 대화로 원하는 작업을 실행할 수 있음.
  • 파일 시스템 제어(Read/Edit/List) 에이전트는 실제 명령어 실행과 작업 자동화를 단순하게 구현 가능.
  • Dart + Gemini 조합으로 개발 생산성 및 체험형 AI 에이전트 구현이 누구에게나 가능함.
1개의 좋아요