1부에서는 코드 검토자를 위한 핵심 분석 도구를 구축했습니다. 이제 이러한 도구를 효과적으로 사용할 수 있는 AI 도우미를 만들어 보겠습니다. 각 구성요소를 단계별로 살펴보며 모든 것이 어떻게 함께 작동하는지 설명하겠습니다.
ClientAI 문서는 여기를, Github Repo는 여기를 참조하세요.
먼저 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 개체에 래핑됩니다.
우리는 도구를 두 가지 범주로 분류합니다.
이제 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!