Ce didacticiel montre la création d'un réviseur de demandes d'extraction d'IA prêt pour la production à l'aide des meilleures pratiques LLMOps. L'application finale, accessible ici, accepte une URL de relations publiques publique et renvoie un avis généré par l'IA.
Aperçu de l'application
Ce tutoriel couvre :
Logique de base
Le flux de travail de l'assistant IA est simple : à partir d'une URL PR, il récupère la différence depuis GitHub et la soumet à un LLM pour examen.
Les différences GitHub sont accessibles via :
<code>https://patch-diff.githubusercontent.com/raw/{owner}/{repo}/pull/{pr_number}.diff</code>
Cette fonction Python récupère le différentiel :
<code class="language-python">def get_pr_diff(pr_url): # ... (Code remains the same) return response.text</code>
LiteLLM facilite les interactions LLM, offrant une interface cohérente entre différents fournisseurs.
<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>
Implémentation de l'observabilité avec Agenta
Agenta améliore l'observabilité, le suivi des entrées, des sorties et du flux de données pour un débogage plus facile.
Initialisez Agenta et configurez les rappels LiteLLM :
<code class="language-python">import agenta as ag ag.init() litellm.callbacks = [ag.callbacks.litellm_handler()]</code>
Fonctions des instruments avec les décorateurs Agenta :
<code class="language-python">@ag.instrument() def generate_critique(pr_url: str): # ... (Code remains the same) return response.choices[0].message.content</code>
Définissez la variable d'environnement AGENTA_API_KEY
(obtenue auprès de Agenta) et éventuellement AGENTA_HOST
pour l'auto-hébergement.
Créer un terrain de jeu LLM
La fonctionnalité de flux de travail personnalisé d'Agenta fournit un terrain de jeu de type IDE pour le développement itératif. L'extrait de code suivant illustre la configuration et l'intégration avec 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>
Servir et évaluer avec Agenta
agenta init
en spécifiant le nom de l'application et la clé API.agenta variant serve app.py
.Cela rend l'application accessible via le terrain de jeu d'Agenta pour des tests de bout en bout. LLM-as-a-juge est utilisé pour l’évaluation. L'invite de l'évaluateur est :
<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>
L'invite utilisateur pour l'évaluateur :
<code>https://patch-diff.githubusercontent.com/raw/{owner}/{repo}/pull/{pr_number}.diff</code>
Déploiement et frontend
Le déploiement s'effectue via l'interface utilisateur d'Agenta :
Une interface v0.dev a été utilisée pour la création rapide d'une interface utilisateur.
Prochaines étapes et conclusion
Les améliorations futures incluent un affinement rapide, l'intégration du contexte complet du code et la gestion des différences importantes. Ce didacticiel montre avec succès la création, l'évaluation et le déploiement d'un réviseur de demandes d'extraction d'IA prêt pour la production à l'aide d'Agenta et de LiteLLM.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!