ホームページ >バックエンド開発 >Python チュートリアル >ClientAI と Ollama を使用してローカル AI コード レビューアーを構築する

ClientAI と Ollama を使用してローカル AI コード レビューアーを構築する

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-18 15:22:10898ブラウズ

Building a Local AI Code Reviewer with ClientAI and Ollama

完全にローカル マシン上で実行される、AI を活用した独自のコード レビューアーを望んだことはありませんか?この 2 部構成のチュートリアルでは、ClientAI と Ollama を使用して、まさにそれを構築します。

私たちのアシスタントは、Python コード構造を分析し、潜在的な問題を特定し、改善を提案します。そのすべてを同時に、コードのプライバシーと安全性を保ちます。

ClientAI のドキュメントについてはここを参照し、Github リポジトリについてはここを参照してください。

シリーズインデックス

  • パート 1: 導入、セットアップ、ツールの作成 (ここまでです)
  • パート 2: アシスタントとコマンド ライン インターフェイスの構築

プロジェクト概要

私たちのコード分析アシスタントは次のことが可能です:

  • コードの構造と複雑さを分析する
  • スタイルの問題と潜在的な問題を特定する
  • ドキュメントの提案を生成する
  • 実用的な改善提案を提供する

これらはすべてマシン上でローカルに実行されるため、コードの完全なプライバシーを維持しながら、AI 支援によるコード レビューの機能を利用できます。

環境のセットアップ

まず、プロジェクト用に新しいディレクトリを作成します。

mkdir local_task_planner
cd local_task_planner

Ollama サポートを使用して ClientAI をインストールします:

pip install clientai[ollama]

システムに Ollama がインストールされていることを確認してください。 Ollama の Web サイトから入手できます。

次に、コードを書き込むファイルを作成しましょう:

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

私たちのスタイル チェッカーは 2 つの重要な側面に焦点を当てています:

  • 行の長さ - コードを読みやすくする
  • 関数の命名規則 — Python で推奨される Snake_case スタイルを強制する

ドキュメントヘルパー

ドキュメントはコードを保守しやすくするために非常に重要です。これが私たちのドキュメントジェネレーターです:

pip install clientai[ollama]

このヘルパー:

  • 関数とクラスを識別します
  • パラメータ情報を抽出します
  • ドキュメントテンプレートを生成します
  • 例のプレースホルダーが含まれています

ツールを AI 対応にする

AI システムとの統合に備えてツールを準備するには、ツールを JSON に適した形式でラップする必要があります。

touch code_analyzer.py

これらのラッパーは、入力検証、JSON シリアル化、エラー処理を追加して、アシスタントのエラー耐性を高めます。

パート 2 で登場予定

この投稿では、環境を設定し、結果を構造化し、エージェントのツールとして使用する機能を構築しました。次のパートでは、実際に AI アシスタントを作成し、これらのツールを登録し、コマンドライン インターフェイスを構築して、このアシスタントの動作を確認します。

次のステップはパート 2: アシスタントとコマンド ライン インターフェイスの構築です。

ClientAI について詳しくは、ドキュメントをご覧ください。

私とつながってください

ご質問がある場合、テクノロジー関連のトピックについて話し合いたい場合、またはフィードバックを共有したい場合は、ソーシャル メディアでお気軽にご連絡ください:

  • GitHub: igorbenav
  • X/Twitter: @igorbenav
  • LinkedIn: イゴール

以上がClientAI と Ollama を使用してローカル AI コード レビューアーを構築するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。