ホームページ > バックエンド開発 > Python チュートリアル > vev、litellm、Agenta を使用して AI コード レビュー アシスタントを構築する

vev、litellm、Agenta を使用して AI コード レビュー アシスタントを構築する

Mary-Kate Olsen
リリース: 2025-01-14 09:33:44
オリジナル
948 人が閲覧しました

このチュートリアルでは、LLMOps のベスト プラクティスを使用して、本番環境に対応した AI プル リクエスト レビューアーを構築する方法を示します。 こちらからアクセスできる最後のアプリケーションは、公開 PR URL を受け入れ、AI によって生成されたレビューを返します。

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

アプリケーションの概要

このチュートリアルの内容は次のとおりです。

  • コード開発: GitHub から PR の差分を取得し、LLM 対話に LiteLLM を活用します。
  • 可観測性: アプリケーションの監視とデバッグのために Agenta を実装します。
  • プロンプト エンジニアリング: Agenta のプレイグラウンドを使用してプロンプトとモデルの選択を繰り返します。
  • LLM 評価: 迅速なモデル評価のために、裁判官として LLM を採用します。
  • デプロイ: アプリケーションを 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

LLM プレイグラウンドの作成

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. アプリ名と API キーを指定して agenta init を実行します。
  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 つの点をクリックします。
  3. 「本番環境へのデプロイ」を選択します。

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

迅速な UI 作成には v0.dev フロントエンドが使用されました。

次のステップと結論

将来の改善には、プロンプト改良、完全なコードコンテキストの組み込み、大きな差分の処理が含まれます。 このチュートリアルでは、Agenta と LiteLLM を使用して本番環境に対応した AI プル リクエスト レビューアーを構築、評価、デプロイする方法を示します。

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

以上がvev、litellm、Agenta を使用して AI コード レビュー アシスタントを構築するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート