パート 1 では、コードレビュー担当者のためのコア分析ツールを構築しました。次に、これらのツールを効果的に使用できる AI アシスタントを作成します。各コンポーネントを段階的に説明し、すべてがどのように連携するかを説明します。
ClientAI のドキュメントについてはここを参照し、Github リポジトリについてはここを参照してください。
まず、ツールを AI システムで利用できるようにする必要があります。登録方法は次のとおりです:
def create_review_tools() -> List[ToolConfig]: """Create the tool configurations for code review.""" return [ ToolConfig( tool=analyze_python_code, name="code_analyzer", description=( "Analyze Python code structure and complexity. " "Expects a 'code' parameter with the Python code as a string." ), scopes=["observe"], ), ToolConfig( tool=check_style_issues, name="style_checker", description=( "Check Python code style issues. " "Expects a 'code' parameter with the Python code as a string." ), scopes=["observe"], ), ToolConfig( tool=generate_docstring, name="docstring_generator", description=( "Generate docstring suggestions for Python code. " "Expects a 'code' parameter with the Python code as a string." ), scopes=["act"], ), ]
ここで何が起こっているのかを詳しく見てみましょう:
各ツールは、ClientAI に次のことを伝える ToolConfig オブジェクトでラップされています。
私たちはツールを 2 つのカテゴリに分類しています:
それでは、AI アシスタントを作成しましょう。人間のコードレビュー担当者がどのように考えるかを模倣して、段階的に動作するように設計します。
class CodeReviewAssistant(Agent): """An agent that performs comprehensive Python code review.""" @observe( name="analyze_structure", description="Analyze code structure and style", stream=True, ) def analyze_structure(self, code: str) -> str: """Analyze the code structure, complexity, and style issues.""" self.context.state["code_to_analyze"] = code return """ Please analyze this Python code structure and style: The code to analyze has been provided in the context as 'code_to_analyze'. Use the code_analyzer and style_checker tools to evaluate: 1. Code complexity and structure metrics 2. Style compliance issues 3. Function and class organization 4. Import usage patterns """
この最初の方法は非常に重要です:
次に、改善提案のステップを追加します。
@think( name="suggest_improvements", description="Suggest code improvements based on analysis", stream=True, ) def suggest_improvements(self, analysis_result: str) -> str: """Generate improvement suggestions based on the analysis results.""" current_code = self.context.state.get("current_code", "") return f""" Based on the code analysis of: ``` {% endraw %} python {current_code} {% raw %} ``` And the analysis results: {analysis_result} Please suggest specific improvements for: 1. Reducing complexity where identified 2. Fixing style issues 3. Improving code organization 4. Optimizing import usage 5. Enhancing readability 6. Enhancing explicitness """
この方法:
それでは、使いやすいインターフェースを作成してみましょう。これをいくつかの部分に分けて説明します。
def main(): # 1. Set up logging logger = logging.getLogger(__name__) # 2. Configure Ollama server config = OllamaServerConfig( host="127.0.0.1", # Local machine port=11434, # Default Ollama port gpu_layers=35, # Adjust based on your GPU cpu_threads=8, # Adjust based on your CPU )
この最初の部分では、エラー ログを設定し、適切なデフォルトで Ollama サーバーを構成し、GPU と CPU の使用量をカスタマイズできるようにします。
次に、AI クライアントとアシスタントを作成します。
# Use context manager for Ollama server with OllamaManager(config) as manager: # Initialize ClientAI with Ollama client = ClientAI( "ollama", host=f"http://{config.host}:{config.port}" ) # Create code review assistant with tools assistant = CodeReviewAssistant( client=client, default_model="llama3", tools=create_review_tools(), tool_confidence=0.8, # How confident the AI should be before using tools max_tools_per_step=2, # Maximum tools to use per step )
この設定に関する重要なポイント:
最後に、インタラクティブなループを作成します。
def create_review_tools() -> List[ToolConfig]: """Create the tool configurations for code review.""" return [ ToolConfig( tool=analyze_python_code, name="code_analyzer", description=( "Analyze Python code structure and complexity. " "Expects a 'code' parameter with the Python code as a string." ), scopes=["observe"], ), ToolConfig( tool=check_style_issues, name="style_checker", description=( "Check Python code style issues. " "Expects a 'code' parameter with the Python code as a string." ), scopes=["observe"], ), ToolConfig( tool=generate_docstring, name="docstring_generator", description=( "Generate docstring suggestions for Python code. " "Expects a 'code' parameter with the Python code as a string." ), scopes=["act"], ), ]
このインターフェース:
そして、これを実行できるスクリプトにしましょう:
class CodeReviewAssistant(Agent): """An agent that performs comprehensive Python code review.""" @observe( name="analyze_structure", description="Analyze code structure and style", stream=True, ) def analyze_structure(self, code: str) -> str: """Analyze the code structure, complexity, and style issues.""" self.context.state["code_to_analyze"] = code return """ Please analyze this Python code structure and style: The code to analyze has been provided in the context as 'code_to_analyze'. Use the code_analyzer and style_checker tools to evaluate: 1. Code complexity and structure metrics 2. Style compliance issues 3. Function and class organization 4. Import usage patterns """
アシスタントが実際のコードをどのように処理するかを見てみましょう。実行しましょう:
@think( name="suggest_improvements", description="Suggest code improvements based on analysis", stream=True, ) def suggest_improvements(self, analysis_result: str) -> str: """Generate improvement suggestions based on the analysis results.""" current_code = self.context.state.get("current_code", "") return f""" Based on the code analysis of: ``` {% endraw %} python {current_code} {% raw %} ``` And the analysis results: {analysis_result} Please suggest specific improvements for: 1. Reducing complexity where identified 2. Fixing style issues 3. Improving code organization 4. Optimizing import usage 5. Enhancing readability 6. Enhancing explicitness """
見つける必要がある問題の例を次に示します:
def main(): # 1. Set up logging logger = logging.getLogger(__name__) # 2. Configure Ollama server config = OllamaServerConfig( host="127.0.0.1", # Local machine port=11434, # Default Ollama port gpu_layers=35, # Adjust based on your GPU cpu_threads=8, # Adjust based on your CPU )
アシスタントは複数の側面を分析します:
アシスタントを強化する方法は次のとおりです:
これらのそれぞれを追加するには、新しいツール関数を作成し、それを適切な JSON 形式でラップし、それを create_review_tools() 関数に追加して、新しいツールを使用するようにアシスタントのプロンプトを更新します。
ClientAI について詳しくは、ドキュメントをご覧ください。
ご質問がある場合、テクノロジー関連のトピックについて話し合いたい場合、またはフィードバックを共有したい場合は、ソーシャル メディアでお気軽にご連絡ください:
以上がClientAI と Ollama を使用したローカル AI コード レビューアーの構築 - パート 2の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。