首页 > 后端开发 > 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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板