ClientAI と Ollama を使用してローカル AI コード レビューアーを構築する
Dec 18, 2024 pm 03:22 PM完全にローカル マシン上で実行される、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 サイトの他の関連記事を参照してください。

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









