Rumah > pembangunan bahagian belakang > Tutorial Python > Bina pembantu semakan kod AI dengan vev, litellm dan Agenta

Bina pembantu semakan kod AI dengan vev, litellm dan Agenta

Mary-Kate Olsen
Lepaskan: 2025-01-14 09:33:44
asal
948 orang telah melayarinya

Tutorial ini menunjukkan membina penyemak permintaan tarik AI sedia pengeluaran menggunakan amalan terbaik LLMOps. Aplikasi akhir, boleh diakses di sini, menerima URL PR awam dan mengembalikan ulasan yang dijana AI.

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

Gambaran Keseluruhan Aplikasi

Tutorial ini merangkumi:

  • Pembangunan Kod: Mendapatkan semula PR berbeza daripada GitHub dan memanfaatkan LiteLLM untuk interaksi LLM.
  • Kebolehcerap: Melaksanakan Agenta untuk pemantauan dan penyahpepijatan aplikasi.
  • Kejuruteraan Segera: Mengulang pada gesaan dan pemilihan model menggunakan taman permainan Agenta.
  • Penilaian LLM: Menggunakan LLM-sebagai-hakim untuk penilaian segera dan model.
  • Pengerahan: Menggunakan aplikasi sebagai API dan mencipta UI mudah dengan v0.dev.

Logik Teras

Aliran kerja pembantu AI adalah mudah: diberikan URL PR, ia mendapatkan semula perbezaan daripada GitHub dan menyerahkannya kepada LLM untuk semakan.

Perbezaan GitHub diakses melalui:

<code>https://patch-diff.githubusercontent.com/raw/{owner}/{repo}/pull/{pr_number}.diff</code>
Salin selepas log masuk
Salin selepas log masuk

Fungsi Python ini mengambil perbezaan:

<code class="language-python">def get_pr_diff(pr_url):
    # ... (Code remains the same)
    return response.text</code>
Salin selepas log masuk

LiteLLM memudahkan interaksi LLM, menawarkan antara muka yang konsisten merentas pelbagai pembekal.

<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>
Salin selepas log masuk

Melaksanakan Kebolehmerhatian dengan Agenta

Agenta meningkatkan kebolehmerhatian, menjejak input, output dan aliran data untuk penyahpepijatan yang lebih mudah.

Mulakan Agenta dan konfigurasikan panggilan balik LiteLLM:

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

ag.init()
litellm.callbacks = [ag.callbacks.litellm_handler()]</code>
Salin selepas log masuk

Fungsi instrumen dengan penghias Agenta:

<code class="language-python">@ag.instrument()
def generate_critique(pr_url: str):
    # ... (Code remains the same)
    return response.choices[0].message.content</code>
Salin selepas log masuk

Tetapkan AGENTA_API_KEY pembolehubah persekitaran (diperolehi daripada Agenta) dan secara pilihan AGENTA_HOST untuk pengehosan sendiri.

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

Mencipta Taman Permainan LLM

Ciri aliran kerja tersuai Agenta menyediakan taman permainan seperti IDE untuk pembangunan berulang. Coretan kod berikut menunjukkan konfigurasi dan penyepaduan dengan 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>
Salin selepas log masuk

Melayan dan Menilai dengan Agenta

  1. Jalankan agenta init menyatakan nama apl dan kunci API.
  2. Lari agenta variant serve app.py.

Ini menjadikan aplikasi boleh diakses melalui taman permainan Agenta untuk ujian hujung ke hujung. LLM-sebagai-hakim digunakan untuk penilaian. Gesaan penilai ialah:

<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>
Salin selepas log masuk

Gesaan pengguna untuk penilai:

<code>https://patch-diff.githubusercontent.com/raw/{owner}/{repo}/pull/{pr_number}.diff</code>
Salin selepas log masuk
Salin selepas log masuk

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

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

Pengerahan dan Frontend

Pengerahan dilakukan melalui UI Agenta:

  1. Navigasi ke halaman gambaran keseluruhan.
  2. Klik tiga titik di sebelah varian yang dipilih.
  3. Pilih "Kerahkan ke Pengeluaran".

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

Halaman hadapan v0.dev telah digunakan untuk penciptaan UI yang pantas.

Langkah dan Kesimpulan Seterusnya

Peningkatan masa hadapan termasuk penghalusan segera, menggabungkan konteks kod penuh dan mengendalikan perbezaan yang besar. Tutorial ini berjaya menunjukkan membina, menilai dan menggunakan penyemak permintaan tarik AI sedia pengeluaran menggunakan Agenta dan LiteLLM.

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

Atas ialah kandungan terperinci Bina pembantu semakan kod AI dengan vev, litellm dan Agenta. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan