このチュートリアルでは、LLMOps のベスト プラクティスを使用して、本番環境に対応した AI プル リクエスト レビューアーを構築する方法を示します。 こちらからアクセスできる最後のアプリケーションは、公開 PR URL を受け入れ、AI によって生成されたレビューを返します。
アプリケーションの概要
このチュートリアルの内容は次のとおりです。
コアロジック
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
を設定します。
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 によるサービスの提供と評価
agenta init
を実行します。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>
デプロイメントとフロントエンド
導入は Agenta の UI を通じて行われます:
迅速な UI 作成には v0.dev フロントエンドが使用されました。
次のステップと結論
将来の改善には、プロンプト改良、完全なコードコンテキストの組み込み、大きな差分の処理が含まれます。 このチュートリアルでは、Agenta と LiteLLM を使用して本番環境に対応した AI プル リクエスト レビューアーを構築、評価、デプロイする方法を示します。
以上がvev、litellm、Agenta を使用して AI コード レビュー アシスタントを構築するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。