使用 Ollama 在本地运行 LLM 进行代码审查
代码审查是软件开发中的常规环节,但人工审查效率低、主观性强。云端 AI 审查工具又存在隐私顾虑。
Ollama 是一个开源工具,能让用户在本地机器上跑大语言模型,不用联网,不用交 API 费用,代码也不会离开你的电脑。
为什么需要本地 LLM 代码审查
把代码发给云端 API 有几个麻烦:
隐私是最大的问题。代码里可能包含密钥、数据库配置、业务逻辑。
成本也是现实考虑。频繁调用云端 API 要花钱。
网络依赖。没有稳定的网,审查就用不了。
Ollama 正好针对这些痛点。它可以运行 Codellama、Mistral 等开源模型,完全离线,代码始终留在本地。
安装 Ollama
Ollama 支持 macOS、Linux 和 Windows。
macOS 用 Homebrew:brew install ollama
Linux 用官方脚本:curl -fsSL https://ollama.com/install.sh | sh
验证安装:ollama --version
Ollama 会自动在后台启动服务,默认监听 11434 端口。
下载模型
对于代码审查任务,推荐用 Codellama 或 Mistral。
下载模型:ollama pull codellama 或 ollama pull mistral
查看已下载的模型:ollama list
编写代码审查脚本
下面是一个完整的 Python 脚本,实现自动化代码审查功能。
#!/usr/bin/env python3
import os
import sys
import json
from pathlib import Path
from typing import List, Dict
import requests
class CodeReviewer:
def __init__(self, model: str = "codellama", ollama_host: str = "http://localhost:11434"):
self.model = model
self.ollama_host = ollama_host
def review_code(self, code: str) -> str:
url = f"{self.ollama_host}/api/generate"
prompt = f"你是一位代码审查专家。请审查以下代码并给出建议:
{code}"
payload = {"model": self.model, "prompt": prompt, "stream": False}
response = requests.post(url, json=payload, timeout=120)
return response.json().get("response", "无响应")
def review_file(self, file_path: str) -> str:
with open(file_path, 'r', encoding='utf-8') as f:
code = f.read()
return self.review_code(code)
if __name__ == "__main__":
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('path')
args = parser.parse_args()
reviewer = CodeReviewer()
print(reviewer.review_file(args.path))
安装依赖并运行
先安装 requests 库:pip install requests
使用方式:python code_reviewer.py your_code.py
运行效果示例
假设有如下有问题的代码:
import sqlite3
def get_user_data(user_id):
conn = sqlite3.connect("app.db")
query = f"SELECT * FROM users WHERE id = {user_id}"
return conn.cursor().execute(query).fetchone()
审查后会指出:SQL 注入漏洞、数据库连接未关闭、敏感信息硬编码等问题。
这个方案适合谁
本地 LLM 代码审查的好处:代码不离开你的机器,不用交 API 费,不需要网络也能用,还能根据团队规范定制提示词。
局限:本地模型的智力不如 GPT-4;需要下载几GB的模型文件;建议至少 8GB 内存。
对于注重隐私的团队和个人开发者来说,这套方案值得一试。