
大模型RAG技術(shù):從入門到實踐
AI Code Review通過大模型的能力,提供了傳統(tǒng)審查無法比擬的優(yōu)勢:
在安全性和數(shù)據(jù)隱私的考量下,許多團隊選擇在本地部署AI服務(wù)進行代碼審查。以下是本地部署AI模型的一些步驟:
選擇合適的AI模型是搭建AI Code Review的第一步。我們使用的是Llama 3.1:8b模型,因其資源占用少且易于部署。
ollama run llama3.1:8b
成功下載并啟動后,模型即可用于互動。
為了方便與AI模型交互,我們可以使用Lobe-chat工具,提供了便捷的測試和本地服務(wù)接口。
pnpm install
pnpm dev
http://localhost:3010/
,即可看到Lobe-chat的界面,準備與本地模型交互。GitLab支持通過Webhook獲取代碼合并請求的Diff信息,為AI Code Review提供必要的數(shù)據(jù)輸入。
def getDiff(project, mergeRequestId):
token = project['token']
projectId = project['projectId']
webhookUrl = "xxx"
headers = {
"PRIVATE-TOKEN": token
}
response = requests.get(webhookUrl, headers=headers)
text = response.json()
print(response.status_code)
print(response.text)
return text
通過將獲取的Diff數(shù)據(jù)傳遞給AI模型,我們可以獲取代碼審查結(jié)果,并將其推送給相關(guān)人員。
在調(diào)用AI接口時,需注意調(diào)整以下參數(shù)以優(yōu)化審查效果:
def aiCodeReview(language, diff):
print("start code review")
url = "http://localhost:11434/api/chat"
data = {
"messages": [
{
"content": "你是一個資深的開發(fā)人員,非常擅長代碼的code review",
"role": "system"
},
{
"content": f"下面是gitlab中一次merge request的差異代碼,使用的是{language}語言,請幫忙做一次code review,有問題可以直接指出問題,回答盡可能簡潔。{diff}",
"role": "user"
}
],
"model": "llama3.1:8b",
"options": {
"frequency_penalty": 0.8,
"presence_penalty": 0.2,
"temperature": 0.3,
"top_p": 0.9
},
"stream": False
}
headers = {
"Content-Type": "application/json"
}
response = requests.post(url, headers=headers, data=json.dumps(data))
content = response.json()
suggest = content['message']['content']
print(suggest)
return suggest
通過AI完成代碼審查后,可以通過飛書機器人等工具將結(jié)果推送給開發(fā)人員,便于及時反饋和改進。
問:如何保證AI Code Review的準確性?
問:AI Code Review是否會對代碼安全性造成威脅?
問:AI Code Review能否完全替代人工審查?