새로워지기/마흔의 생활코딩

Agentic | AI 소프트웨어 엔지니어 DEVIKA(open-source)

청춘만화 2024. 5. 1. 14:00
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.

 

GitHub - stitionai/devika: Devika is an Agentic AI Software Engineer that can understand high-level human instructions, break th

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...

github.com

 

 

 

주요 기능

  • 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엔지니어의 이슈는 아니다. 커뮤니케이션 당사자인 쌍방 간 조율의 문제이다.  좋은 활용 사례를 만들고 있다. 많은 사례가 스팀 게임을 다루고 있는데... 개인적으로 쓸모-의 분야는 아니라 일상 생활, 기획 실무 또는 코딩 공부에 활용할 수 있는 것들을 테스트하고 있다. 좋은 결과가 나오면 추가로 업데이트 예정이다.