> 기술 주변기기 > 일체 포함 > Google의 Gemini-2.0을 사용하여 Codebase Explorer 구축

Google의 Gemini-2.0을 사용하여 Codebase Explorer 구축

William Shakespeare
풀어 주다: 2025-03-08 11:30:15
원래의
889명이 탐색했습니다.
크고 지저분한 코드베이스를 이해하기가 어렵다는 것을 알게 된 적이 있습니까? 아니면 코드를 분석하고 탐색하는 도구가 실제로 어떻게 작동하는지 궁금해 했습니까? 이 기사에서는 강력한 코드베이스 탐색 도구를 처음부터 구축하여 이러한 문제를 해결합니다. 정적 코드 분석 및 Gemini 모델을 사용하여 개발자가 코드에서 유용한 통찰력을 쿼리하고 이해하고 얻는 데 도움이되는 사용하기 쉬운 시스템을 만듭니다. 코드를 탐색하는 방식을 변경할 준비가 되셨습니까? 시작하자! 학습 목표

객체 지향 프로그래밍을 사용한 복잡한 소프트웨어 개발 AST 또는 Abstract 구문 트리를 사용하여 파이썬 코드베이스를 구문 분석하고 분석하는 방법. Google의 Gemini LLM API를 코드 분석의 파이썬 응용 프로그램과 통합하는 방법 이해. Codebase Exploration을위한 Typer Command Line 기반 쿼리 시스템

이 기사는 데이터 과학 블로그 톤의
  • 의 일부로 출판되었습니다. 목차
  • 더 스마트 한 코드 탐색의 필요성
  • 아키텍처 개요
  • 실습 프로젝트 시작 설정 프로젝트 환경 쿼리 엔진 구현 구현 (cli) 응용 프로그램 미래 개발 결론

    자주 묻는 질문
    • 더 똑똑한 코드 탐색의 필요성
    • 우선, 그러한 응용 프로그램을 구축하면 소프트웨어 개발의 학습 향상이 가능하며, 객체 지향 프로그래밍 패러다임을 사용하여 복잡한 소프트웨어를 구현하는 방법을 배우고 대규모 프로젝트를 처리하는 기술을 마스터하는 데 도움이됩니다 (크지는 않지만)
    • 둘째, 오늘날의 소프트웨어 프로젝트는 많은 파일과 폴더에 걸쳐 쓰여진 수천 개의 코드 라인으로 구성됩니다. GREP 또는 IDE 검색 기능과 같은 코드 탐색에 대한 전통적인 접근 방식. 개발자가 코드베이스 내의 높은 수준의 개념이나 관계를 이해해야 할 때 이러한 유형의 시스템은 부족합니다. 우리의 AI 구동 도구는이 영역에서 중요한 진전을 이룰 수 있습니다. 우리의 응용 프로그램은 개발자가 평범한 영어로 코드베이스에 대해 질문하고 상세하고 상황에 맞는 응답을받을 수 있습니다. 아키텍처 개요
    • 도구는 4 개의 주요 구성 요소 로 구성됩니다
        코드 파서 :
      • 는 파이썬 파일을 분석하고 Python의 Abstract Syntax Tree (AST) 모듈을 사용하여 구조를 추출하는 시스템의 기초입니다. 클래스, 방법, 기능 및 가져 오기를 식별합니다. Codebase의 포괄적 인 맵을 만듭니다 gemini 클라이언트 : LLM 모델과의 커뮤니케이션을 처리하는 Google의 Gemini API 주변의 래퍼. 이 구성 요소는 API 인증을 관리하고 쿼리를 보내고 응답을 받기위한 깨끗한 인터페이스를 제공합니다. 쿼리 프로세서 : 는 쌍둥이 자리가 효과적으로 이해하고 처리 할 수있는 방식으로 코드베이스 컨텍스트와 쿼리를 형식화하는 도구의 기본 엔진입니다. 그것은 코드베이스 구조의 지속적인 인덱스를 유지하고 파서와 LLM 간의 상호 작용을 관리합니다. CLI 인터페이스 : Typer와 함께 구축 된 사용자 친화적 인 명령 줄 인터페이스, 코드베이스 색인, 코드 구조 쿼리 및 스택 추적 분석을위한 명령을 제공합니다.
      • 실습 프로젝트 시작 이 섹션에서는 프로젝트를 구축하고 구현하는 초기 단계를 안내하여 원활한 시작 및 효과적인 학습 경험을 보장합니다. 프로젝트 폴더 구조 프로젝트 폴더 구조는
      • 와 유사합니다 설정 프로젝트 환경 다음 단계에서 프로젝트 환경 설정 : 필요한 모든 라이브러리를 설치하십시오
      • 코드 구현 <with> 우리는 코드베이스 구문 분석 시스템을 이해하고 구현하는 것으로 시작합니다. 그것은 두 가지 중요한 기능 <li>입니다 <b> <c c> parse_codebase () <ef ef> extract_definitions () </ef></c></b> <s> 추상 구문 트리에서 정의 추출 : </s> </li> <hel> 이것은 parse_codebase ()의 도우미 함수입니다. Python 파일의 초록 구문 트리 (AST)가 필요합니다. 이 기능은 클래스, 기능 및 가져 오기에 대한 빈 목록이있는 사전을 시작합니다. 이제 AST.Walk ()는 AST 트리의 모든 노드를 반복합니다. AST 모듈은 모든 클래스, 기능, 가져 오기 및 라인 번호를 식별합니다. 그런 다음 모든 정의를 정의 사전에 추가하십시오 <code> 코드베이스를 구문 분석 이 기능은 파이썬 파일에 대한 디렉토리를 스캔하고 컨텐츠를 읽고 구조를 추출합니다. <li> <tions> 함수는 디렉토리 경로에서 문자열로 시작합니다. 코드 구조 사전을 출력합니다. 사전은 각 Python 파일에 대한 추출 된 데이터를 저장합니다. <b> <through> 주어진 디렉토리의 모든 하위 디렉토리와 파일을 반복합니다. <alkalk> os.walk () 는 전체 디렉토리 트리를 탐색하는 재귀적인 방법을 제공했습니다. .py 확장자를 끝내는 파일을 처리합니다<yth> Python <p> ast <b> 모듈을 사용하여 파일의 컨텐츠를 AST (Abstract Syntax Tree)로 구문 분석하여 파일의 구조를 나타냅니다. 그런 다음 추출 된 트리를 extract_definitions (트리) 로 전달합니다. 구문 분석이 실패하면 오류 메시지를 인쇄하지만 다른 파일을 계속 처리합니다. <ing> 쿼리 프로세싱 엔진 Query Engine 디렉토리에서 Gemini_client.py 및 query_processor.py 라는 두 개의 파일을 만듭니다. <i i> gemini 클라이언트 이 파일은 를 사용하여 Google에서 Gemini Model API를 인증합니다. 프로젝트의 루트에서 .env 파일을 만들고 Gemini API 키를 넣으십시오. api_keyhere를 얻으십시오. <b> <def> 여기서, 우리는 Google의 Gemini AI 모델과 상호 작용하기 위해 </def></b> geminiclient </i></ing></b></p> 클래스를 정의합니다. .ENV 파일에서 <h2> google_api_key </h2>>를 사용하여 모델을 인증합니다. 모델 API를 구성한 후 주어진 프롬프트에서 응답을 생성하는 쿼리 메소드를 제공합니다. <ling ling> 쿼리 처리 시스템 이 섹션에서는 쿼리 프로세서 클래스를 구현하여 코드베이스 컨텍스트를 관리하고 gemini로 쿼리를 활성화합니다. <p> 필요한 라이브러리를로드 한 후 키에 대한 google_api_key </p> <h3>가 포함 된. </h3> <i> geminiembedding 클래스는 Google 서버에서 임베딩 -001 모델을 초기화합니다. <ococ> QueryProcessor 클래스는 코드베이스 컨텍스트를 처리하고 geminiclient.loading_contextMethod와 상호 작용하도록 설계되었습니다. <daving_contextmethod json save_contextmethod usingsave_context the ford_contextmethod> 쿼리 geminiis 코드베이스 컨텍스트와 사용자 쿼리를 사용하여 프롬프트를 구성하는 가장 중요한 방법입니다. 그것은 geminiclient를 통해이 프롬프트를 Gemini 모델로 보냅니다. <p> <implement implement> Command Line App 구현 (CLI) <.> 프로젝트의 SRC 폴더에서 main.py 파일을 만들고 단계를 따르십시오. 1 단계 : 도서관 가져 오기 <b> 2 단계 : Typer 및 Query 프로세서 클래스에서 a </b> typer </.></implement></p> 및 쿼리 프로세서 개체를 만들어 봅시다. <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">|--codebase_explorer/ |src/ ├──| __init__.py ├──| indexer/ │ ├── __init__.py │ └── code_parser.py ├──| query_engine/ │ ├── __init__.py │ ├── query_processor.py │ └── gemini_client.py | ├── main.py └── .env </pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div> 3 단계 : Python Project Directory 인덱싱 <p> 여기에서 index <b> 메소드는 터미널의 명령으로 사용되며 함수는 향후 쿼리 및 분석을 위해 지정된 디렉토리에 Python 코드베이스를 색인화합니다.<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">|--codebase_explorer/ |src/ ├──| __init__.py ├──| indexer/ │ ├── __init__.py │ └── code_parser.py ├──| query_engine/ │ ├── __init__.py │ ├── query_processor.py │ └── gemini_client.py | ├── main.py └── .env </pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div> <check>는 먼저 디렉토리가 존재하는지 확인한 다음 <p> parse_codebase <b> 기능을 사용하여 디렉토리에서 Python 파일의 구조를 추출합니다. 구문 분석 후에는 구문 분석 된 코드베이스 구조를 </b> query_processor 에 저장합니다. 모든 프로세스는 시도 중이며 블록을 제외하고는 예외를 구문 분석 중에주의해서 처리 할 수 ​​있습니다. Gemini 모델을 사용하여 효율적인 쿼리를 위해 Codebase를 준비합니다. 4 단계 : 코드베이스 인덱싱 후 코드베이스의 모든 기능에 대한 정보를 이해하거나 얻기 위해 코드베이스를 쿼리 할 수 ​​있습니다. </p> <whether> 먼저, <p> query_processor <b>가 코드베이스 컨텍스트를로드했는지 여부를 확인하고 컴퓨터의 하드 디스크에서 컨텍스트를로드하려고합니다. 그런 다음 query_processor의 그리고 마지막으로, typer.echo () 메소드를 사용하여 llm에서 터미널로의 응답을 인쇄합니다. 5 단계 : 응용 프로그램을 실행하십시오 </b> 응용 프로그램을 테스트하십시오 <hard hard> 노력을 테스트하려면 아래 단계를 따르십시오 : </hard></p> <h3> <der> 프로젝트 루트에서 폴더 이름 색인 생성 모든 인덱스 파일을 넣을 수 있습니다. <b> codebase_index.json을 만들고 이전에 생성 된 폴더 (indexes)에 넣습니다. 그런 다음 루트에 project_test 폴더를 만듭니다. 여기서 테스트를 위해 Python 파일을 저장할 것입니다. <_> project_test 폴더에서 find_palidrome.py 파일을 만들고 아래 코드를 파일에 넣습니다. </_></b></der> </h3> 코드 구현 <p> 이 파일은 주어진 문자열에서 Palindrome을 찾을 것입니다. CLI 애플리케이션을 사용 하여이 파일 쿼리를 터미널에서 색인화합니다. </p> <your> 이제 터미널을 열고 코드를 붙여 넣고 마법을보십시오. <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">#create a new conda env conda create -n cb_explorer python=3.11 conda activate cb_explorer</pre><div class="contentsignin">로그인 후 복사</div></div> 프로젝트 색인 <p> 출력 : <b> </b> <b> <success> 당신은 1 개의 파이썬 파일을 성공적으로 인덱싱 할 수 있습니다. 그리고 JSON 데이터는 </success></b>처럼 보입니다 </p> 프로젝트 쿼리 <p> <b> 출력 : </b> </p> <h3> 출력 : </h3> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">pip install google-generativeai google-ai-generativelanguage pip install python-dotenv typer llama-index</pre><div class="contentsignin">로그인 후 복사</div></div> <h2> <done> 모든 것이 제대로 수행되면 터미널에서 이러한 출력을 얻게됩니다. Python 코드 파일로 시도하고 댓글 섹션에서 출력이 무엇인지 알려줄 수 있습니다. 나와 함께있어 주셔서 감사합니다. </done> </h2> <p> 미래 개발 <prot> 이것은 와 같은 많은 흥미로운 기능으로 확장 할 수있는 기초 시스템의 프로토 타입입니다.<ul> <ate> 당신은 원활한 코드 탐색을 위해 IDE 플러그인과 통합 할 수 있습니다. <li> <r> AI 구동 자동화 디버깅 시스템 (저는 작업 중입니다). <for> JavaScript, Java, Typescripts, Rust와 같은 많은 인기있는 언어에 대한 지원 추가 <analysis> 실시간 코드 분석 및 LLM의 개선에 대한 권한이있는 제안 <ation> gemini 또는 llama3를 사용한 자동화 된 문서 <m m> 기기 코드 탐색을위한 로컬 LLM 통합, 기능 추가. </m></ation></analysis></for></r> </li> <li> 결론 <ase> Codebase Explorer는 소프트웨어 개발 도구에서 AI의 실제 적용을 이해하는 데 도움이됩니다. 기존 정적 분석을 최신 AI 기능과 결합하여 코드베이스 탐색을보다 직관적이고 효율적으로 만드는 도구를 만들었습니다. 이 접근법은 AI가 기존 도구를 교체하지 않고 개발자 워크 플로우를 강화하여 복잡한 코드베이스에 대한 새로운 이해와 접근성을 제공하는 방법을 보여줍니다. 이 기사에 사용 된 모든 코드는 여기에 있습니다 <ea> 키 테이크 아웃 </ea></ase> </li> <s> 구조 코드 구문 분석은 코드 분석을위한 가장 실수 기술입니다. <expl> Codebase Explorer는 코드 탐색을 단순화하여 개발자가 복잡한 코드 구조를 신속하게 이해하고 관리 할 수 ​​있도록합니다. <expl> Codebase Explorer는 디버깅 효율성을 향상시켜 종속성을 분석하고 문제를 더 빨리 식별하는 도구를 제공합니다. <i> gemini는 기존 정적 분석과 결합 될 때 코드 이해를 크게 향상시킬 수 있습니다. <can> CLI 도구는 LLM 보조 코드 탐색을위한 강력한 인터페이스를 제공 할 수 있습니다. <li> <questions> 자주 묻는 질문 </questions> </li> <li> q 1. 이 도구는 대형 코드베이스를 어떻게 처리합니까? </li> <li> </li> <li> a. 코드 구문 분석 및 색인 관리는 오프라인으로 작동 할 수 있지만 Gemini API를 사용하여 코드베이스를 쿼리하려면 외부 서버와 통신하려면 인터넷 연결이 필요합니다. 코드베이스를 쿼리하기 위해 LLAMA3 또는 PHI-3과 같은 Op-Device LLM 또는 SLM 모델을 사용할 수있는 도구와 Ollama를 통합 할 수 있습니다. LLM 생성 응답은 얼마나 정확한가? </li> . 이 기사에 나와있는 미디어는 Analytics Vidhya가 소유하지 않으며 저자의 재량에 따라 사용됩니다. </can></i></expl></expl></s></ate> </ul></prot></p></your></whether></check></b></p></daving_contextmethod></ococ></i></ling></yth></alkalk></through></b></tions> </li>

    위 내용은 Google의 Gemini-2.0을 사용하여 Codebase Explorer 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    본 웹사이트의 성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
    저자별 최신 기사
    인기 튜토리얼
    더>
    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿