Skip to main content

Command Palette

Search for a command to run...

AI CLI in GO

Published
6 min read
AI CLI in GO
H

Graduated in 2021. Later worked as an Associate for 6-months in MNC. Later joined the fellowship at BootCamp in backend development. Currently preparing for interviews.

Workflow with CodeAI CLI

CodeAI CLI is a command-line tool designed to empower developers by integrating artificial intelligence capabilities directly into their development environment. Leveraging local large language models (LLMs) through the Ollama platform, it offers a suite of features including code analysis, refactoring suggestions, and automated documentation generation. By executing all operations on the user’s machine, CodeAI CLI ensures data privacy and minimizes latency, making it an ideal tool for developers seeking efficient and secure coding assistance.

Why Choose CodeAI CLI?

CodeAI CLI provides several compelling benefits for developers:

  • Data Privacy: All computations are performed locally, ensuring that sensitive code never leaves your machine.

  • High Performance: Local execution delivers immediate feedback without network delays.

  • Customizability: Support for various LLM models allows users to tailor the tool to their specific needs.

  • Open Source: Available on GitHub, it encourages community contributions and modifications.

These advantages make CodeAI CLI a valuable addition to any developer’s toolkit, particularly for those prioritizing security and efficiency.

Getting Started

To begin using CodeAI CLI, follow these straightforward steps:

  1. Install Go: Ensure you have Go version 1.16 or higher installed, available at golang.org.

  2. Set Up Ollama: Download and install Ollama from ollama.ai and pull a model such as Llama 2, Gemma, or CodeLlama.

  3. Clone the Repository: Execute git clone https://github.com/codeai/cli.git to obtain the source code.

  4. Build the Tool: Navigate to the cloned directory and run go build -o codeai to compile the binary.

  5. Make Accessible: Move the binary to a directory in your PATH, e.g., sudo mv codeai /usr/local/bin/.

  6. Start Ollama Server: Run ollama serve to ensure the Ollama server is active.

If you encounter challenges during setup, consult the Ollama documentation or check the CodeAI CLI GitHub issues for support. The initial setup may take some time, but it’s a one-time effort that unlocks powerful AI-driven features.

Key Features

CodeAI CLI offers a comprehensive set of functionalities to streamline coding tasks. Below are its primary features, each accompanied by a practical example:

Code Analysis

Evaluates code quality and suggests improvements based on provided context.

Example:

codeai analyze mycode.go --context "Authentication module" --stream

This command analyzes mycode.go as part of an authentication module, streaming results in real-time.

Refactoring Suggestions

Provides AI-driven recommendations to enhance code structure and readability.

Example:

codeai refactor complex_function.go --requirements "Make it more modular" --save

Suggests modular refactoring for complex_function.go and saves changes if specified.

Documentation Generation

Automatically generates markdown documentation for codebases.

Example:

codeai document api_endpoints.go --output api_docs.md

Creates documentation for api_endpoints.go, saved as api_docs.md.

Code Explanation

Offers detailed explanations for complex code snippets.

Example:

codeai explain obfuscated_code.go --output explanation.txt

Explains obfuscated_code.go and saves the explanation to explanation.txt.

Test Generation

Produces comprehensive test cases, including edge scenarios.

Example:

codeai gentest math_utils.go --requirements "Test all functions with various inputs" --save

Generates tests for math_utils.go and saves them.

Performance Optimization

Suggests improvements for code efficiency in terms of time and memory usage.

Example:

codeai optimize slow_sort.go --focus "Improve sorting algorithm efficiency"

Provides optimization suggestions for slow_sort.go.

Security Analysis

Detects potential security vulnerabilities in code.

Example:

codeai security web_server.go --language "Go"

Analyzes web_server.go for Go-specific security issues.

Code Comparison

Highlights semantic differences between two code files.

Example:

codeai compare old_version.go new_version.go --output changes.md

Generates a comparison report in changes.md.

Docstring Generation

Creates docstrings for Python functions or methods.

Example:

codeai docstring data_analysis.py analyze_data --clipboard

Generates a docstring for analyze_data in data_analysis.py and copies it to the clipboard.

Project Analysis

Analyzes entire projects or directories, supporting multiple file types.

Example:

codeai analyze-project ./my_project --context "Machine learning pipeline" --extensions py,ipynb

Analyzes Python and Jupyter notebook files in my_project with a machine learning context.

Architecture Overview

CodeAI CLI is designed to integrate seamlessly with local LLMs, ensuring efficient and private operation. Its architecture comprises three main components:

  • Command-Line Interface (CLI): Built using the Cobra framework, it parses user commands and orchestrates their execution.

  • Business Logic: Housed in the pkg/ directory, this includes the Ollama API client for LLM communication, prompt templates for request formatting, and utilities for output management (e.g., file saving or clipboard copying).

  • Local Ollama Server: Hosts and runs LLM models, processing requests and generating responses.

The data flow is as follows:

  1. A user enters a command via the CLI.

  2. The CLI processes the command, using prompt templates to format the input.

  3. The formatted request is sent to the Ollama API client.

  4. The API client communicates with the local Ollama server.

  5. The server processes the request using the specified LLM model.

  6. The response is returned to the API client and then to the CLI.

  7. The CLI handles the response, displaying it, saving it to a file, or copying it to the clipboard.

This architecture ensures all operations remain local, enhancing both privacy and performance.

Architecture Diagram:

                                         User
                                          |
                                          v
                                        CLI (Cobra)
                                          |
                                          v
                                        Business Logic (pkg/)
                                          |
                                          v
                                        Ollama API Client
                                          |
                                          v
                                        Ollama Server (Local)
                                          |
                                          v
                                        LLM Model

Real-World Use Case: Refactoring a Legacy Module

Consider a legacy Go module managing database connections, which is complex and lacks documentation. CodeAI CLI can streamline its refactoring and documentation:

  1. Analyze the Code: Run codeai analyze legacy_module.go --context "Database connection pool" to assess code quality and receive improvement suggestions.

  2. Refactor the Code: Execute codeai refactor legacy_module.go --requirements "Simplify connection management" --save to apply AI-suggested changes for better structure.

  3. Generate Documentation: Use codeai document legacy_module.go --output legacy_module_docs.md to create comprehensive markdown documentation.

  4. Explain Changes: Run codeai explain legacy_module.go --output changes_explanation.txt to understand the modifications made.

This process transforms the module into a maintainable, well-documented component, demonstrating CodeAI CLI’s practical utility.

Tips for Effective Use

To maximize CodeAI CLI’s potential, consider these strategies:

  • Enable Streaming: Use the --stream flag for real-time feedback during tasks like analysis or refactoring.

  • Provide Context: Include detailed context via the --context flag to improve suggestion relevance.

  • Explore Models: Run codeai models to list available LLMs and select the best fit for your task.

  • Batch Analysis: Use analyze-project for efficient analysis of multiple files, specifying relevant extensions.

Limitations

While CodeAI CLI is highly effective, it has some limitations:

  • Model Variability: The quality of AI suggestions depends on the chosen LLM model, requiring experimentation for optimal results.

  • Resource Requirements: Running LLMs locally demands significant computational resources, so ensure your hardware is adequate.

  • Setup Effort: Initial setup, including Ollama installation and model downloading, may be time-consuming but is a one-time process.

These considerations are minor compared to the tool’s benefits, and with proper setup, CodeAI CLI can significantly enhance your workflow.

Conclusion

CodeAI CLI brings advanced AI capabilities to the command line, offering developers a powerful, private, and customizable tool for coding tasks. Its robust feature set, clear architecture, and open-source nature make it an essential asset for modern development. We encourage you to explore CodeAI CLI by visiting its GitHub repository and integrating it into your projects today.