>백엔드 개발 >파이썬 튜토리얼 >ClientAI 및 Ollama를 사용하여 로컬 AI 코드 검토자 구축

ClientAI 및 Ollama를 사용하여 로컬 AI 코드 검토자 구축

Patricia Arquette
Patricia Arquette원래의
2024-12-18 15:22:10897검색

Building a Local AI Code Reviewer with ClientAI and Ollama

로컬 시스템에서 완전히 실행되는 AI 기반 코드 검토기를 원한 적이 있습니까? 두 부분으로 구성된 이 튜토리얼에서는 ClientAI와 Ollama를 사용하여 이를 정확하게 구축하겠습니다.

저희 어시스턴트는 Python 코드 구조를 분석하고 잠재적인 문제를 식별하며 개선 사항을 제안하는 동시에 코드를 비공개로 안전하게 유지합니다.

ClientAI 문서는 여기를, Github Repo는 여기를 참조하세요.

시리즈 색인

  • 1부: 소개, 설정, 도구 생성(현재 위치)
  • 2부: Assistant 및 명령줄 인터페이스 구축

프로젝트 개요

저희 코드 분석 도우미는 다음을 수행할 수 있습니다.

  • 코드 구조 및 복잡성 분석
  • 스타일 문제 및 잠재적인 문제 식별
  • 문서 제안 생성
  • 실행 가능한 개선 권장사항 제공

이 모든 작업은 귀하의 컴퓨터에서 로컬로 실행되므로 코드의 완전한 개인 정보 보호를 유지하면서 AI 지원 코드 검토 기능을 제공합니다.

환경 설정

먼저 프로젝트에 대한 새 디렉터리를 만듭니다.

mkdir local_task_planner
cd local_task_planner

Ollama 지원을 통해 ClientAI 설치:

pip install clientai[ollama]

시스템에 Ollama가 설치되어 있는지 확인하세요. 올라마 홈페이지에서 받으실 수 있습니다.

이제 코드를 작성할 파일을 만들어 보겠습니다.

touch code_analyzer.py

핵심 가져오기부터 시작하세요.

import ast
import json
import logging
import re
from dataclasses import dataclass
from typing import List
from clientai import ClientAI
from clientai.agent import (
    Agent,
    ToolConfig,
    act,
    observe,
    run,
    synthesize,
    think,
)
from clientai.ollama import OllamaManager, OllamaServerConfig

이러한 각 구성 요소는 중요한 역할을 합니다.

  • ast: Python 코드를 트리 구조로 구문 분석하여 이해를 돕습니다
  • ClientAI: AI 프레임워크 제공
  • 데이터 처리 및 패턴 매칭을 위한 다양한 유틸리티 모듈

분석 결과 구조화

코드를 분석할 때는 결과를 정리하는 깔끔한 방법이 필요합니다. 결과를 구성하는 방법은 다음과 같습니다.

@dataclass
class CodeAnalysisResult:
    """Results from code analysis."""
    complexity: int
    functions: List[str]
    classes: List[str]
    imports: List[str]
    issues: List[str]

이것을 코드 분석을 위한 성적표라고 생각하세요.

  • 복잡도 점수는 코드가 얼마나 복잡한지를 나타냅니다
  • 함수와 클래스 목록은 코드 구조를 이해하는 데 도움이 됩니다
  • 가져오기는 외부 종속성을 나타냅니다
  • 이슈는 발견된 모든 문제를 추적합니다

핵심 분석 엔진 구축

이제 실제 핵심에 대해 — 코드 분석 엔진을 구축해 보겠습니다.

def analyze_python_code_original(code: str) -> CodeAnalysisResult:
    """Analyze Python code structure and complexity."""
    try:
        tree = ast.parse(code)
        functions = []
        classes = []
        imports = []
        complexity = 0
        for node in ast.walk(tree):
            if isinstance(node, ast.FunctionDef):
                functions.append(node.name)
                complexity += sum(
                    1
                    for _ in ast.walk(node)
                    if isinstance(_, (ast.If, ast.For, ast.While))
                )
            elif isinstance(node, ast.ClassDef):
                classes.append(node.name)
            elif isinstance(node, (ast.Import, ast.ImportFrom)):
                for name in node.names:
                    imports.append(name.name)
        return CodeAnalysisResult(
            complexity=complexity,
            functions=functions,
            classes=classes,
            imports=imports,
            issues=[],
        )
    except Exception as e:
        return CodeAnalysisResult(
            complexity=0, functions=[], classes=[], imports=[], issues=[str(e)]
        )

이 기능은 우리의 코드 탐정과 같습니다. 그것은:

  • 코드를 트리 구조로 구문 분석
  • 함수, 클래스 및 가져오기를 찾기 위해 트리를 탐색합니다
  • 제어 구조를 계산하여 복잡성을 계산합니다
  • 종합적인 분석 결과를 반환합니다

스타일 검사 구현

좋은 코드는 단순히 올바르게 작동하는 것이 아니라 읽기 쉽고 유지 관리가 가능해야 합니다. 스타일 검사기는 다음과 같습니다.

mkdir local_task_planner
cd local_task_planner

저희 스타일 검사기는 두 가지 주요 측면에 중점을 둡니다.

  • 줄 길이 — 코드를 읽기 쉽게 유지
  • 함수 명명 규칙 — Python이 선호하는 snake_case 스타일 적용

문서 도우미

문서화는 유지 관리 가능한 코드에 매우 중요합니다. 문서 생성기는 다음과 같습니다.

pip install clientai[ollama]

이 도우미:

  • 함수와 클래스 식별
  • 매개변수 정보 추출
  • 문서 템플릿 생성
  • 예시를 위한 자리표시자 포함

AI를 지원하는 도구 만들기

AI 시스템과의 통합을 위한 도구를 준비하려면 이를 JSON 친화적인 형식으로 래핑해야 합니다.

touch code_analyzer.py

이 래퍼는 입력 유효성 검사, JSON 직렬화 및 오류 처리를 추가하여 어시스턴트의 오류 방지 기능을 강화합니다.

2부에서 등장

이 게시물에서는 환경을 설정하고 결과를 구조화했으며 에이전트 도구로 사용할 기능을 구축했습니다. 다음 부분에서는 실제로 AI 도우미를 만들고, 이러한 도구를 등록하고, 명령줄 인터페이스를 구축하고, 이 도우미가 실제로 작동하는 모습을 살펴보겠습니다.

다음 단계는 2부: Assistant 및 명령줄 인터페이스 구축입니다.

ClientAI에 대해 자세히 알아보려면 문서로 이동하세요.

나와 연결

질문이 있거나 기술 관련 주제에 대해 토론하고 싶거나 피드백을 공유하고 싶다면 언제든지 소셜 미디어를 통해 저에게 연락하세요.

  • GitHub: igorbenav
  • X/트위터: @igorbenav
  • 링크드인: Igor

위 내용은 ClientAI 및 Ollama를 사용하여 로컬 AI 코드 검토자 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:인스파이어잉크다음 기사:인스파이어잉크