본문 바로가기

Devika

1. devika Readme.md 번역

https://github.com/stitionai/devika

🚀 Devika - Agentic AI Software Engineer 👩‍💻

Pasted image 20240401135948.png
Important

이 프로젝트는 현재 매우 초기 개발/실험 단계에 있습니다. 현재 구현되지 않은/깨진 기능이 많이 있습니다. 진행에 도움이 되는 기여를 환영합니다!

Table of Contents

  • About
  • Key Features
  • System Architecture
  • Quick Start
  • Installation
  • Getting Started
  • Configuration
  • Under The Hood
    • AI Planning and Reasoning
    • Keyword Extraction
    • Browser Interaction
    • Code Writing
  • Community Discord Server
  • Contributing
  • License

About

Devika는 인간의 높은 수준의 지시를 이해하고, 이를 단계별로 세분화하고, 관련 정보를 조사하고, 주어진 목표를 달성하기 위한 코드를 작성할 수 있는 고급 AI 소프트웨어 엔지니어입니다. Devika는 대규모 언어 모델, 계획 및 추론 알고리즘, 웹 브라우징 능력을 활용하여 지능적으로 소프트웨어를 개발합니다.

Devika는 사람의 도움을 최소화하면서 복잡한 코딩 작업을 수행할 수 있는 AI 페어 프로그래머를 제공함으로써 소프트웨어 구축 방식을 혁신하는 것을 목표로 합니다. 새로운 기능을 만들거나, 버그를 수정하거나, 전체 프로젝트를 처음부터 개발해야 할 때 Devika가 도와드릴 수 있습니다.

Note

Devika는 Cognition AI의 Devin을 모델로 하고 있습니다. 이 프로젝트는 Devin의 오픈 소스 대안이 되는 것을 목표로 하며, SWE-bench에서 Devin과 동일한 점수를 달성하는 것을 목표로 하고 있습니다... 그리고 결국에는 Devin을 이길 수 있을까요?

Key Features

  • 🤖 Ollama를 통해 Claude 3, GPT-4, GPT-3.5, Local LLMs을 지원합니다. 최적의 성능을 위해: Claude 3 모델 제품군을 사용하세요.
  • 🧠 고급 AI 계획 및 추론 기능
  • 🔍 집중 연구를 위한 상황별 키워드 추출
  • 🌐 원활한 웹 탐색 및 정보 수집
  • 💻 여러 프로그래밍 언어로 코드 작성
  • 📊 동적 에이전트 상태 추적 및 시각화
  • 💬 채팅 인터페이스를 통한 자연어 상호 작용
  • 📂 프로젝트 기반 조직 및 관리
  • 🔌 새로운 기능과 통합을 추가하기 위한 확장 가능한 아키텍처

System Architecture

Devika의 시스템 아키텍처는 다음과 같은 주요 구성 요소로 구성됩니다.

  1. User Interface: Devika와 상호 작용하고, 프로젝트 파일을 보고, 에이전트 상태를 모니터링하기 위한 웹 기반 채팅 인터페이스입니다.
  2. Agent Core: AI 계획, 추론 및 실행 프로세스를 조율하는 핵심 구성 요소입니다. 다양한 하위 에이전트 및 모듈과 통신하여 작업을 수행합니다.
  3. Large Language Models: Devika는 자연어 이해, 생성 및 추론을 위해 Claude, GPT-4Ollama를 통한 Local LLM과 같은 최첨단 언어 모델을 활용합니다.
  4. Planning and Reasoning Engine: 높은 수준의 목표를 실행 가능한 단계로 나누고 현재 상황에 따라 결정을 내리는 일을 담당합니다.
  5. Research Module: 키워드 추출 및 웹 검색 기능을 활용하여 현재 작업에 대한 관련 정보를 수집합니다.
  6. Code Writing Module: 계획, 연구 결과 및 사용자 요구 사항을 기반으로 코드를 생성합니다. 다양한 프로그래밍 언어를 지원합니다.
  7. Browser Interaction Module: Devika가 웹사이트를 탐색하고, 정보를 추출하고, 필요에 따라 웹 요소와 상호 작용할 수 있도록 합니다.
  8. Knowledge Base: 효율적인 액세스를 위해 프로젝트별 정보, 코드 조각, 학습된 지식을 저장하고 검색합니다.
  9. Database: 프로젝트 데이터, 에이전트 상태 및 구성 설정을 유지합니다.

자세한 문서는 ARCHITECTURE.md 를 읽어보세요.

Quick Start

프로젝트를 로컬에서 실행하는 가장 쉬운 방법:

  1. Install uv - Python Package manager (https://github.com/astral-sh/uv)
  2. Install bun - JavaScript runtime (https://bun.sh/docs/installation)
  3. Install and setup Ollama (https://ollama.com/) (로컬 모델을 사용하고 싶지 않다면 이 단계를 건너뛸 수 있습니다)

ollama의 경우 models을 설치해야 합니다.
API 모델의 경우 UI의 설정 페이지를 통해 API 키를 구성하세요.


그런 다음 다음 명령 세트를 실행하십시오.:

ollama serve
git clone https://github.com/stitionai/devika.git
cd devika/
uv venv
source .venv/bin/activate
uv pip install -r requirements.txt
playwright install --with-deps
cd ui/
bun install
bun run dev
cd ..
python3 devika.py

Docker 이미지가 곧 출시될 예정입니다.

Installation

Devika에는 종속성으로 다음 사항이 필요:

Devika 설치 다음 단계:

  1. Clone the Devika repository:
    git clone https://github.com/stitionai/devika.git
    
  2. Navigate to the project directory:
    cd devika
    
  3. Create a virtual environment and install the required dependencies:
    uv venv
    uv pip install -r requirements.txt
    
  4. Install the required dependencies:
    pip install -r requirements.txt
    playwright install --with-deps # installs browsers in playwright (and their deps) if required
    
  5. Set up the necessary API keys and Configuration
  6. Start the Devika server:
    python devika.py
    
  7. Compile and run the UI server:
    cd ui/
    bun install
    bun run dev
    
  8. Access the Devika web interface by opening a browser and navigating to http://127.0.0.1:3000.

Getting Started

Devika 사용을 시작하기 위한 다음 단계:

  1. 브라우저에서 Devika 웹 인터페이스를 엽니다.
  2. "새 프로젝트" 버튼을 클릭하고 프로젝트 이름을 입력하여 새 프로젝트를 만듭니다.
  3. 프로젝트에 대해 원하는 프로그래밍 언어와 모델 구성을 선택하십시오.
  4. 채팅 인터페이스에서 Devika가 작업할 높은 수준의 목표나 작업 설명을 제공하세요.
  5. Devika는 귀하의 요청을 처리하고, 이를 여러 단계로 나누고, 작업을 시작합니다.
  6. Devika의 진행 상황을 모니터링하고, 생성된 코드를 보고, 필요에 따라 추가 지침이나 피드백을 제공하세요.
  7. Devika가 작업을 완료하면 생성된 코드와 프로젝트 파일을 검토합니다.
  8. 추가 지침이나 수정 사항을 제공하여 원하는 대로 프로젝트를 반복하고 개선합니다.

Configuration

Devika가 제대로 작동하려면 특정 구성 설정과 API 키가 필요:

Devika를 처음 실행하면 루트 디렉터리에 config.toml 파일이 생성됩니다. UI를 통해 설정 페이지에서 다음 설정을 구성:

  • STORAGE
    • SQLITE_DB: Devika의 데이터를 저장하기 위한 SQLite 데이터베이스 파일의 경로입니다.
    • SCREENSHOTS_DIR: Devika에서 캡처한 스크린샷이 저장되는 디렉터리입니다.
    • PDFS_DIR: Devika에서 처리한 PDF 파일이 저장될 디렉터리입니다.
    • PROJECTS_DIR: Devika의 프로젝트가 저장될 디렉터리입니다.
    • LOGS_DIR: Devika의 로그가 저장될 디렉터리입니다.
    • REPOS_DIR: Devika가 복제한 Git repositories가 저장될 디렉터리입니다.
    • WEB_SEARCH: 이는 웹 탐색을 위한 기본 웹 검색 방법을 결정합니다. 허용되는 값: google, bing, or ddgs.
  • API KEYS
    • BING: 웹 검색 기능을 위한 Bing Search API 키입니다.
    • GOOGLE_SEARCH: 웹 검색 기능을 위한 Google 검색 API 키입니다.
    • GOOGLE_SEARCH_ENGINE_ID: Google을 사용하여 웹 검색을 위한 Google 검색 엔진 ID입니다.
    • OPENAI: GPT 모델에 액세스하기 위한 OpenAI API 키입니다.
    • GEMINI: Gemini 모델에 액세스하기 위한 Gemini API 키입니다.
    • CLAUDE: Claude 모델에 액세스하기 위한 Anthropic API 키입니다.
    • MISTRAL: Mistral 모델에 액세스하기 위한 Mistral API 키입니다.
    • GROQ: Groq 모델에 액세스하기 위한 Groq API 키입니다.
    • NETLIFY: 웹 프로젝트 배포 및 관리를 위한 Netlify API 키입니다.

API 키를 안전하게 보관하고 공개적으로 공유하지 마세요.

Configuring web search method

Devika는 현재 웹 검색을 위해 Bing, Google 및 DuckDuckGo를 지원합니다. UI를 통해 웹 검색 방법을 구성할 수 있습니다.

Under The Hood

Devika에서 사용되는 몇 가지 주요 구성 요소와 기술에 대해 자세히 살펴보겠습니다.

AI Planning and Reasoning

Devika는 고급 AI 계획 및 추론 알고리즘을 사용하여 높은 수준의 목표를 실행 가능한 단계로 분류합니다. The planning process involves the following stages:

  1. Objective Understanding: Devika는 주어진 목표나 작업 설명을 분석하여 사용자의 의도와 요구 사항을 이해합니다.
  2. Context Gathering: 대화 기록, 프로젝트 파일, 지식 기반에서 관련 컨텍스트를 수집하여 계획 프로세스에 정보를 제공합니다.
  3. Step Generation: 목표와 맥락을 기반으로 Devika는 작업을 달성하기 위한 일련의 높은 수준의 단계를 생성합니다.
  4. Refinement and Validation: 생성된 단계는 타당성과 목표와의 일치를 보장하기 위해 개선되고 검증됩니다.
  5. Execution: Devika는 필요에 따라 다양한 하위 에이전트와 모듈을 활용하여 계획의 각 단계를 실행합니다.

추론 엔진은 진행 상황을 지속적으로 평가하고 실행 중에 받은 새로운 정보나 피드백을 기반으로 계획을 조정합니다.

Keyword Extraction

집중적인 연구와 정보 수집을 위해 Devika는 키워드 추출 기술을 사용합니다. 프로세스에는 다음 단계를 포함:

  1. Preprocessing: 입력 텍스트(objective, 대화 기록, 프로젝트 파일)는 불용어 제거, 토큰화, 정규화를 통해 전처리됩니다.
  2. Keyword Identification: Devika는 사전 처리된 텍스트에서 중요한 키워드와 구문을 식별하기 위해 BERT(Bidirectional Encoder Representations from Transformers) 모델을 사용합니다. BERT는 대규모 말뭉치에 대한 사전 학습을 통해 의미 관계를 파악하고 주어진 문맥에서 단어의 중요성을 이해할 수 있습니다.
  3. Keyword Ranking: 식별된 키워드는 현재 작업과의 관련성과 중요성을 기준으로 순위가 매겨집니다. TF-IDF(Term Frequency-Inverse Document Frequency) 및 TextRank와 같은 기술을 사용하여 각 키워드에 점수를 할당합니다.
  4. Keyword Selection: 현재 상황과 가장 관련성이 높고 유익한 키워드가 최상위 키워드로 선택됩니다. 이러한 키워드는 연구 및 정보 수집 과정을 안내하는 데 사용됩니다.

상황에 맞는 키워드를 추출함으로써 Devika는 연구 노력에 집중하고 관련 정보를 검색하여 작업 완료에 도움을 줄 수 있습니다.

Browser Interaction

Devika는 웹사이트를 탐색하고, 정보를 추출하고, 웹 요소와 상호작용하는 브라우저 상호작용 기능을 통합합니다. 브라우저 상호 작용 모듈은 Playwright 라이브러리를 활용하여 웹 상호 작용을 자동화합니다. 이 프로세스에는 다음 단계가 포함:

  1. Navigation: Devika는 Playwright를 사용하여 특정 URL로 이동하거나 제공된 키워드 또는 요구 사항을 기반으로 검색을 수행합니다.
  2. Element Interaction: Playwright를 사용하면 Devika가 버튼 클릭, 양식 채우기, 특정 요소에서 텍스트 추출 등 웹 요소와 상호 작용할 수 있습니다.
  3. Page Parsing: Devika는 관련 정보를 추출하기 위해 방문한 웹페이지의 HTML 구조를 구문 분석합니다. CSS 선택기 및 XPath와 같은 기술을 사용하여 특정 데이터 포인트를 찾고 추출합니다.
  4. JavaScript Execution: Playwright를 사용하면 Devika가 브라우저 컨텍스트 내에서 JavaScript 코드를 실행할 수 있어 동적 상호 작용과 데이터 검색이 가능합니다.
  5. Screenshot Capture: Devika는 방문한 웹 페이지의 스크린샷을 캡처할 수 있으며 이는 시각적 참조 또는 디버깅 목적에 유용할 수 있습니다.

브라우저 상호 작용 모듈을 통해 Devika는 웹에서 정보를 수집하고, 온라인 리소스와 상호 작용하고, 실시간 데이터를 의사 결정 및 코드 생성 프로세스에 통합할 수 있습니다.

Code Writing

Devika의 코드 작성 모듈은 계획, 연구 결과 및 사용자 요구 사항을 기반으로 코드를 생성합니다. 프로세스에는 다음 단계를 포함:

  1. Language Selection: Devika는 사용자가 지정한 프로그래밍 언어를 식별하거나 프로젝트 컨텍스트를 기반으로 추론합니다.
  2. Code Structure Generation: 계획 및 언어별 패턴을 기반으로 Devika는 클래스, 함수 및 모듈을 포함하여 코드의 상위 수준 구조를 생성합니다.
  3. Code Population: Devika는 특정 논리, 알고리즘 및 데이터 조작 명령문으로 코드 구조를 채웁니다. 연구 결과, 지식 베이스의 코드 조각, 프로그래밍 개념에 대한 자체 이해를 활용하여 의미 있는 코드를 생성합니다.
  4. Code Formatting: 생성된 코드는 가독성과 유지 관리성을 보장하기 위해 언어별 규칙과 모범 사례에 따라 형식이 지정됩니다.
  5. Code Review and Refinement: Devika는 생성된 코드에서 구문 오류, 논리적 불일치 및 잠재적인 개선 사항을 검토합니다. 자체 분석과 사용자가 제공한 피드백을 기반으로 코드를 반복적으로 개선합니다.

Devika의 코드 작성 기능을 사용하면 각 프로젝트의 특정 요구 사항과 컨텍스트를 고려하여 다양한 프로그래밍 언어로 기능적이고 효율적인 코드를 생성할 수 있습니다.

Community Discord Server

Devika 커뮤니티를 위한 Discord 서버가 있습니다. 여기에서 다른 사용자와 연결하고, 경험을 공유하고, 질문하고, 프로젝트에 대해 협업할 수 있습니다. 서버에 참여하기 위한 가이드:

  • Be respectful: 지역사회의 모든 구성원을 친절과 존중으로 대하십시오. 괴롭힘, 증오심 표현 및 기타 부적절한 행동은 용납되지 않습니다.
  • Contribute positively: Devika를 개선하는 데 도움이 되도록 아이디어, 통찰력, 피드백을 공유하세요. 가능하다면 다른 지역 사회 구성원에게 도움을 제공하십시오.
  • Maintain privacy: 타인의 개인정보를 존중하고 동의 없이 개인정보를 공유하지 마십시오.

To join the Devika community Discord server, click here.

Contributing

We welcome contributions to enhance Devika's capabilities and improve its performance. To contribute, please see the CONTRIBUTING.md file for steps.

License

Devika is released under the MIT License. See the LICENSE file for more information.

Star History


We hope you find Devika to be a valuable tool in your software development journey. If you have any questions, feedback, or suggestions, please don't hesitate to reach out. Happy coding with Devika!

'Devika' 카테고리의 다른 글

2. devika 설치 및 실행  (0) 2024.04.02