首頁 > 後端開發 > Python教學 > 使用 vev、litellm 和 Agenta 建立 AI 程式碼審查助手

使用 vev、litellm 和 Agenta 建立 AI 程式碼審查助手

Mary-Kate Olsen
發布: 2025-01-14 09:33:44
原創
948 人瀏覽過

本教學示範使用 LLMOps 最佳實務建構可用於生產的 AI 拉取請求審核器。 最終應用程式可在此處訪問,接受公共 PR URL 並返回人工智慧生成的評論。

Build an AI code review assistant with vev, litellm and Agenta

應用概述

本教學涵蓋:

  • 程式碼開發:從 GitHub 檢索 PR 差異並利用 LiteLLM 進行 LLM 互動。
  • 可觀察性: 實現 Agenta 以進行應用程式監控和調試。
  • 提示工程:使用 Agenta 的遊樂場迭代提示和模型選擇。
  • 法學碩士評估:聘請法學碩士作為法官進行及時和模型評估。
  • 部署:將應用程式部署為 API 並使用 v0.dev 建立簡單的 UI。

核心邏輯

AI 助理的工作流程很簡單:給定 PR URL,它從 GitHub 檢索差異並將其提交給 LLM 進行審核。

GitHub 差異可透過以下方式存取:

<code>https://patch-diff.githubusercontent.com/raw/{owner}/{repo}/pull/{pr_number}.diff</code>
登入後複製
登入後複製

這個 Python 函數取得差異:

<code class="language-python">def get_pr_diff(pr_url):
    # ... (Code remains the same)
    return response.text</code>
登入後複製

LiteLLM 促進了 LLM 交互,在不同提供者之間提供一致的介面。

<code class="language-python">prompt_system = """
You are an expert Python developer performing a file-by-file review of a pull request. You have access to the full diff of the file to understand the overall context and structure. However, focus on reviewing only the specific hunk provided.
"""

prompt_user = """
Here is the diff for the file:
{diff}

Please provide a critique of the changes made in this file.
"""

def generate_critique(pr_url: str):
    diff = get_pr_diff(pr_url)
    response = litellm.completion(
        model=config.model,
        messages=[
            {"content": config.system_prompt, "role": "system"},
            {"content": config.user_prompt.format(diff=diff), "role": "user"},
        ],
    )
    return response.choices[0].message.content</code>
登入後複製

使用 Agenta 實現可觀察性

Agenta 增強了可觀察性,追蹤輸入、輸出和資料流,以便於偵錯。

初始化 Agenta 並配置 LiteLLM 回呼:

<code class="language-python">import agenta as ag

ag.init()
litellm.callbacks = [ag.callbacks.litellm_handler()]</code>
登入後複製

帶有 Agenta 裝飾器的儀器函數:

<code class="language-python">@ag.instrument()
def generate_critique(pr_url: str):
    # ... (Code remains the same)
    return response.choices[0].message.content</code>
登入後複製

設定AGENTA_API_KEY環境變數(從Agenta取得)和可選的AGENTA_HOST用於自架。

Build an AI code review assistant with vev, litellm and Agenta

創建法學碩士遊樂場

Agenta 的自訂工作流程功能為迭代開發提供了類似 IDE 的遊樂場。 以下程式碼片段演示了與 Agenta 的配置和整合:

<code class="language-python">from pydantic import BaseModel, Field
from typing import Annotated
import agenta as ag
import litellm
from agenta.sdk.assets import supported_llm_models

# ... (previous code)

class Config(BaseModel):
    system_prompt: str = prompt_system
    user_prompt: str = prompt_user
    model: Annotated[str, ag.MultipleChoice(choices=supported_llm_models)] = Field(default="gpt-3.5-turbo")

@ag.route("/", config_schema=Config)
@ag.instrument()
def generate_critique(pr_url:str):
    diff = get_pr_diff(pr_url)
    config = ag.ConfigManager.get_from_route(schema=Config)
    response = litellm.completion(
        model=config.model,
        messages=[
            {"content": config.system_prompt, "role": "system"},
            {"content": config.user_prompt.format(diff=diff), "role": "user"},
        ],
    )
    return response.choices[0].message.content</code>
登入後複製

使用 Agenta 進行服務和評估

  1. 執行 agenta init 並指定應用程式名稱和 API 金鑰。
  2. 運行agenta variant serve app.py

這使得應用程式可以透過 Agenta 的遊樂場進行存取以進行端到端測試。 LLM-as-a-judge用於評估。 評估者提示為:

<code>You are an evaluator grading the quality of a PR review.
CRITERIA: ... (criteria remain the same)
ANSWER ONLY THE SCORE. DO NOT USE MARKDOWN. DO NOT PROVIDE ANYTHING OTHER THAN THE NUMBER</code>
登入後複製

評估器的使用者提示:

<code>https://patch-diff.githubusercontent.com/raw/{owner}/{repo}/pull/{pr_number}.diff</code>
登入後複製
登入後複製

Build an AI code review assistant with vev, litellm and Agenta

Build an AI code review assistant with vev, litellm and Agenta

部署與前端

部署是透過 Agenta 的 UI 完成的:

  1. 導航到概述頁面。
  2. 點選所選變體旁的三個點。
  3. 選擇「部署到生產」。

Build an AI code review assistant with vev, litellm and Agenta

v0.dev 前端用於快速 UI 建立。

後續步驟與結論

未來的改進包括及時細化、合併完整的程式碼上下文以及處理大的差異。 本教學成功示範了使用 Agenta 和 LiteLLM 建置、評估和部署生產就緒的 AI 拉取請求審閱器。

Build an AI code review assistant with vev, litellm and Agenta

以上是使用 vev、litellm 和 Agenta 建立 AI 程式碼審查助手的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板