Maison > développement back-end > Tutoriel Python > Création d'un réviseur de code d'IA local avec ClientAI et Ollama

Création d'un réviseur de code d'IA local avec ClientAI et Ollama

Patricia Arquette
Libérer: 2024-12-18 15:22:10
original
894 Les gens l'ont consulté

Building a Local AI Code Reviewer with ClientAI and Ollama

Vous avez toujours voulu votre propre réviseur de code alimenté par l'IA qui s'exécute entièrement sur votre ordinateur local ? Dans ce didacticiel en deux parties, nous allons construire exactement cela en utilisant ClientAI et Ollama.

Notre assistant analysera la structure du code Python, identifiera les problèmes potentiels et suggérera des améliorations, tout en gardant votre code privé et sécurisé.

Pour les documents de ClientAI, voir ici et pour Github Repo, ici.

Indice des séries

  • Partie 1 : Introduction, configuration, création d'outils (vous êtes ici)
  • Partie 2 : Création de l'assistant et de l'interface de ligne de commande

Aperçu du projet

Notre assistant d'analyse de code sera capable de :

  • Analyser la structure et la complexité du code
  • Identifier les problèmes de style et les problèmes potentiels
  • Générer des suggestions de documentation
  • Fournir des recommandations d'amélioration concrètes

Tout cela s'exécutera localement sur votre machine, vous offrant ainsi la puissance de la révision de code assistée par l'IA tout en préservant la confidentialité totale de votre code.

Configurer notre environnement

Tout d'abord, créez un nouveau répertoire pour votre projet :

mkdir local_task_planner
cd local_task_planner
Copier après la connexion
Copier après la connexion

Installez ClientAI avec le support d'Ollama :

pip install clientai[ollama]
Copier après la connexion
Copier après la connexion

Assurez-vous qu'Ollama est installé sur votre système. Vous pouvez l'obtenir sur le site Web d'Ollama.

Créons maintenant le fichier dans lequel nous allons écrire le code :

touch code_analyzer.py
Copier après la connexion
Copier après la connexion

Et commencez par nos principales importations :

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
Copier après la connexion

Chacun de ces composants joue un rôle crucial :

  • ast : nous aide à comprendre le code Python en l'analysant dans une structure arborescente
  • ClientAI : fournit notre cadre d'IA
  • Divers modules utilitaires pour la gestion des données et la correspondance de modèles

Structurer nos résultats d’analyse

Lors de l'analyse du code, nous avons besoin d'une manière claire d'organiser nos résultats. Voici comment nous structurerons nos résultats :

@dataclass
class CodeAnalysisResult:
    """Results from code analysis."""
    complexity: int
    functions: List[str]
    classes: List[str]
    imports: List[str]
    issues: List[str]
Copier après la connexion

Considérez cela comme notre bulletin d'analyse du code :

  • Le score de complexité indique la complexité du code
  • Les listes de fonctions et de classes nous aident à comprendre la structure du code
  • Les importations affichent les dépendances externes
  • Les problèmes suivent tous les problèmes que nous découvrons

Construire le moteur d'analyse de base

Maintenant, passons au noyau proprement dit : construisons notre moteur d'analyse de code :

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)]
        )
Copier après la connexion

Cette fonction est comme notre détective de code. Il :

  • Analyse le code dans une structure arborescente
  • Parcourt l'arborescence à la recherche de fonctions, de classes et d'importations
  • Calcule la complexité en comptant les structures de contrôle
  • Renvoie un résultat d'analyse complet

Implémentation de la vérification de style

Un bon code ne consiste pas seulement à fonctionner correctement : il doit être lisible et maintenable. Voici notre vérificateur de style :

mkdir local_task_planner
cd local_task_planner
Copier après la connexion
Copier après la connexion

Notre vérificateur de style se concentre sur deux aspects clés :

  • Longueur de la ligne : garantir que le code reste lisible
  • Conventions de dénomination des fonctions — application du style Snake_case préféré de Python

Aide à la documentation

La documentation est cruciale pour un code maintenable. Voici notre générateur de documentation :

pip install clientai[ollama]
Copier après la connexion
Copier après la connexion

Cette aide :

  • Identifie les fonctions et les classes
  • Extrait les informations sur les paramètres
  • Génère des modèles de documentation
  • Comprend des espaces réservés pour des exemples

Rendre nos outils prêts pour l'IA

Pour préparer nos outils à l'intégration avec le système d'IA, nous devons les envelopper dans des formats compatibles JSON :

touch code_analyzer.py
Copier après la connexion
Copier après la connexion

Ces wrappers ajoutent la validation des entrées, la sérialisation JSON et la gestion des erreurs pour rendre notre assistant plus résistant aux erreurs.

À venir dans la partie 2

Dans cet article, nous avons configuré notre environnement, structuré nos résultats et construit les fonctions que nous utiliserons comme outils pour notre agent. Dans la partie suivante, nous allons créer notre assistant IA, enregistrer ces outils, créer une interface de ligne de commande et voir cet assistant en action.

Votre prochaine étape est la partie 2 : Création de l'assistant et de l'interface de ligne de commande.

Pour en savoir plus sur ClientAI, accédez à la documentation.

Connectez-vous avec moi

Si vous avez des questions, souhaitez discuter de sujets liés à la technologie ou partager vos commentaires, n'hésitez pas à me contacter sur les réseaux sociaux :

  • GitHub : igorbenav
  • X/Twitter : @igorbenav
  • LinkedIn : Igor

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal