recherche
Maisondéveloppement back-endTutoriel PythonCréation d'un réviseur de code d'IA local avec ClientAI et Ollama

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

Installez ClientAI avec le support d'Ollama :

pip install clientai[ollama]

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

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

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]

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)]
        )

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

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]

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

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!

Déclaration
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
Comment les tableaux sont-ils utilisés dans l'informatique scientifique avec Python?Comment les tableaux sont-ils utilisés dans l'informatique scientifique avec Python?Apr 25, 2025 am 12:28 AM

ArraySinpython, en particulier Vianumpy, arecrucialinsciciencomputingfortheirefficiency andversatity.1) ils sont les opérations de data-analyse et la machineauning.2)

Comment gérez-vous différentes versions Python sur le même système?Comment gérez-vous différentes versions Python sur le même système?Apr 25, 2025 am 12:24 AM

Vous pouvez gérer différentes versions Python en utilisant Pyenv, Venv et Anaconda. 1) Utilisez PYENV pour gérer plusieurs versions Python: installer PYENV, définir les versions globales et locales. 2) Utilisez VENV pour créer un environnement virtuel pour isoler les dépendances du projet. 3) Utilisez Anaconda pour gérer les versions Python dans votre projet de science des données. 4) Gardez le Système Python pour les tâches au niveau du système. Grâce à ces outils et stratégies, vous pouvez gérer efficacement différentes versions de Python pour assurer le bon fonctionnement du projet.

Quels sont les avantages de l'utilisation de tableaux Numpy sur des tableaux Python standard?Quels sont les avantages de l'utilisation de tableaux Numpy sur des tableaux Python standard?Apr 25, 2025 am 12:21 AM

NumpyArrayShaveSeveralAdvantages OverStandardPyThonarRays: 1) TheaReMuchfasterDuetoc-bases Implementation, 2) Ils sont économisés par le therdémor

Comment la nature homogène des tableaux affecte-t-elle les performances?Comment la nature homogène des tableaux affecte-t-elle les performances?Apr 25, 2025 am 12:13 AM

L'impact de l'homogénéité des tableaux sur les performances est double: 1) L'homogénéité permet au compilateur d'optimiser l'accès à la mémoire et d'améliorer les performances; 2) mais limite la diversité du type, ce qui peut conduire à l'inefficacité. En bref, le choix de la bonne structure de données est crucial.

Quelles sont les meilleures pratiques pour écrire des scripts Python exécutables?Quelles sont les meilleures pratiques pour écrire des scripts Python exécutables?Apr 25, 2025 am 12:11 AM

Tocraftexecutablepythonscripts, suivant les autres proches: 1) addashebangline (#! / Usr / bin / leppython3) tomakethescriptexecutable.2) setpermisessionswithchmod xyour_script.py.3) organisationwithacleardocstringanduseifname == "__ __" Main __ ".

En quoi les tableaux Numpy diffèrent-ils des tableaux créés à l'aide du module de tableau?En quoi les tableaux Numpy diffèrent-ils des tableaux créés à l'aide du module de tableau?Apr 24, 2025 pm 03:53 PM

NumpyArraysarebetterFornumericalOperations andMulti-dimensionaldata, tandis que la réalisation de la réalisation

Comment l'utilisation des tableaux Numpy se compare-t-il à l'utilisation des tableaux de modules de tableau dans Python?Comment l'utilisation des tableaux Numpy se compare-t-il à l'utilisation des tableaux de modules de tableau dans Python?Apr 24, 2025 pm 03:49 PM

NumpyArraysareBetterForheAVYVumericalComputing, tandis que la réalisation de points contraints de réalisation.1) NumpyArraySoFerversATACTORATIONS ajusté pour les données

Comment le module CTYPES est-il lié aux tableaux dans Python?Comment le module CTYPES est-il lié aux tableaux dans Python?Apr 24, 2025 pm 03:45 PM

CTYPESALLOWSCREATINGAndMANIPulationc-styLearRaySInpython.1) UsectypeStOinterfaceWithClibraryForPerformance.2) Createc-stylearRaysFornumericalComptations.3) PassArrayStocfunction

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

PhpStorm version Mac

PhpStorm version Mac

Le dernier (2018.2.1) outil de développement intégré PHP professionnel

Télécharger la version Mac de l'éditeur Atom

Télécharger la version Mac de l'éditeur Atom

L'éditeur open source le plus populaire

Version Mac de WebStorm

Version Mac de WebStorm

Outils de développement JavaScript utiles

Listes Sec

Listes Sec

SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.

Version crackée d'EditPlus en chinois

Version crackée d'EditPlus en chinois

Petite taille, coloration syntaxique, ne prend pas en charge la fonction d'invite de code