Agentic | AI 소프트웨어 엔지니어 DEVIKA(open-source)
Agentic 컨셉 시리즈
- Agentic Chunking LangChain RAG
👉 AI 소프트웨어 엔지니어 DEVIKA
- AI 에이전트를 오케스트레이션 프레임워크 CrewAI
...한 달? 두 달? 전 했던 실습을... 미루고 미루다 이제 올린다.. 그른디...그 사이 데빈이 오픈해버렸네? ;D ㅋㅋㅋ
먼저 결론?!
Devin 뿐만아니라 Open Devin을 비롯해 DEVIKA는 단순히 AI 소프트웨어 엔지니어로 접근하면 앙된다. 핵심은 에이전트이다. 다양한 LLM들을 에이전틱하게 MOE할 수 있는 사례로 이해하고 실습하면서 본인의 위치에서의 활용 방안을 모색해야한다.
DEVIKA
Devin(AI 소프트웨어 엔지니어) 공식 출시하기 전 나왔던 '오픈 소스'로 Devin과 같이 코드를 생성을 주력으로 하고 있다.
유사 모델로는 Open Devin이 있다.
Devika is an Agentic AI Software Engineer that can understand high-level human instructions, break them down into steps, research relevant information, and write code to achieve the given objective. Devika aims to be a competitive open-source alternative to Devin by Cognition AI.
주요 기능
- Ollama를 통해 Claude 3, GPT-4, GPT-3.5 및 로컬 LLM을 지원
- 고급 AI 계획 및 추론 기능
- 집중적인 연구를 위한 문맥 키워드 추출
- 원활한 웹 브라우징 및 정보 수집
- 여러 프로그래밍 언어로 코드 작성
- 동적 에이전트 상태 추적 및 시각화
- 채팅 인터페이스를 통한 자연어 상호작용
- 프로젝트 기반 조직 및 관리
- 새로운 기능 추가 및 통합을 위한 확장 가능한 아키텍처
아키텍처
- Agent Core:
Orchestrates the overall AI planning, reasoning and execution process. Communicates with various sub-agents.
전반적인 AI 계획, 추론 및 실행 프로세스를 조율합니다. 다양한 하위 에이전트와 통신합니다. - Agents:
Specialized sub-agents that handle specific tasks like planning, research, coding, patching, reporting etc.
기획, 연구, 코딩, 패치, 보고 등과 같은 특정 작업을 처리하는 전문화된 하위 에이전트입니다. - Language Models:
Leverages large language models (LLMs) like Claude, GPT-4, GPT-3 for natural language understanding and generation.
자연어 이해 및 생성을 위해 Claude, GPT-4, GPT-3와 같은 대규모 언어 모델(LLM)을 활용합니다. - Browser Interaction:
Enables web browsing, information gathering, and interaction with web elements.
웹 브라우징, 정보 수집 및 웹 요소와의 상호 작용을 지원합니다. - Project Management:
Handles organization and persistence of project-related data.
프로젝트 관련 데이터의 구성 및 지속성을 처리합니다. - Agent State Management:
Tracks and persists the dynamic state of the AI agent across interactions.
상호 작용 전반에서 AI 에이전트의 동적 상태를 추적하고 유지합니다. - Services:
Integrations with external services like GitHub, Netlify for enhanced capabilities.
향상된 기능을 위해 GitHub, Netlify와 같은 외부 서비스와 통합합니다. - Utilities:
Supporting modules for configuration, logging, vector search, PDF generation etc.
구성, 로깅, 벡터 검색, PDF 생성 등을 위한 모듈을 지원합니다.
Agents
데비카의 인지 능력은 특수한 하위 에이전트 모음으로 구동된다. 각 에이전트는 별도의 파이썬 클래스로 구현되고 Jinja2* 형식으로 정의된 프롬프트 템플릿을 통해 기본 LLM과 커뮤니케이션한다.
*Jinja2 : Python용 템플릿 엔진. 완전한 유니코드 지원, 통합 샌드박스 실행 환경(선택 사항), 소프트웨어의 무료 사용, 수정 및 배포를 허용하는 BSD 라이선스를 갖추고 있습니다.
- Planner : 단계별 계획을 생성
- Researcher : 검색어 추출-사용자로부터 추가 컨텍스트 수집
- Coder : 코드생성-유효성검사
- Action : 프롬프트에 맞는 작업키워드 매핑
- Runner : 샌드박스 환경에서 코드실행-출력을 실시간 스트리밍
- Feature : 기능구현-증분테스트수행,
- Patcher : 오류메시지를 기반으로 디버깅-원인식별-수정제안
- Reporter : 설계-지침-api가 포함된 보고서생성
- Decision : 브라우저상호작용-깃클론등 특정기능 매핑-제공된 인수를 사용하여 함수 실행
실습
1. 개발 환경 설정
- Open LLM : Ollama 설치, 실행
- Install uv -> download. for Python 패키지 관리자 설치 pip, pip-tools and virtualenv commands를 대체함
- Install bun -> download for JavaScript runtime
# On macOS and Linux.
curl -LsSf <https://astral.sh/uv/install.sh> | sh
# On Windows.
powershell -c "irm <https://astral.sh/uv/install.ps1> | iex"
# With pip.
pip install uv
2. 깃허브에서 데비카 DEVIKA 코드 가져오기
1. git clone <https://github.com/stitionai/devika.git>
2. cd devika #해당 폴더로 이동
3. 가상 환경 세팅 : uv venv, pip
1) 설정
# Create a virtual environment at .venv.
uv venv
2) 실행
# On macOS and Linux.
source .venv/bin/activate
# On Windows.
.venv\\Scripts\\activate
3) 패키지 설치
# On macOS and Linux.
uv pip install -r requirements.txt
playwright install --with-deps # installs browsers in playwright (and their deps) if required
4. necessary API keys 준비하기
1) 검색
- 빙 : https://www.microsoft.com/en-us/bing/
2) LLM
- 클러드 : https://console.anthropic.com/setting
3) API keys 작성
- Devika/config.toml
5. Turn ON
1) 서버 실행
python3 devika.py
2) 클라이언트 실행
cd ui/
bun install
bun run dev
6. Run
1) http://127.0.0.1:3000 이동
2) 모델 선택
3) 검색 엔진 설정
- AI 엔지니어가 리서치하고 사용자와 관련 내용을 공유하기 위한 주요 도구 중 하나로 사용된다.
- 참고로 덕덕고는 별도 api key가 필요없다.
4) 새 프로젝트 지정
- AI 엔지니어가 작성된 코드는 해당 프로젝트 이름의 폴더에 저장된다.
4) 프롬프트 작성
5) 과정과 결과
1) 실시간 리뷰
- AI엔지니어가 'inner 브라우저 영역' 안에 리서치 중간 중간 웹 검색 결과를 공유하며 자신(AI)의 리서치 결과와 계획을 리뷰
2) 코드 생성 결과
- /[프로젝트 이름]/data/projects : 폴더 아래, 3번 새 프로젝트 명칭으로 새 폴더와 관련 코드가 생성됨
3) 실시간 코드 리뷰
- AI엔지니어가 작성한 코드 안에 메시지를 작성해서 AI엔지니어와 직접 실시간 커뮤니케이션도 가능!
- 해당 코드를 활용하는 방법을 작성해달라고 요청하니까 만들어 준 파일
리뷰
인터페이스가 너무 마음에 든다. 생성 결과가 아닌 과정 사이 사이에 사람이 리뷰하고 피드백을 줄 수 있는 에이전트 간 워크 플로우가 개인적으로 매우 인상적이다.
아직 결과를 포스팅하기엔 조금 이른 감이 있다. 사람 일과 같이, 코드 생성 결과는 AI엔지니어의 이슈는 아니다. 커뮤니케이션 당사자인 쌍방 간 조율의 문제이다. 좋은 활용 사례를 만들고 있다. 많은 사례가 스팀 게임을 다루고 있는데... 개인적으로 쓸모-의 분야는 아니라 일상 생활, 기획 실무 또는 코딩 공부에 활용할 수 있는 것들을 테스트하고 있다. 좋은 결과가 나오면 추가로 업데이트 예정이다.