이 튜토리얼에서는 LLMOps 모범 사례를 사용하여 프로덕션에 즉시 사용 가능한 AI 끌어오기 요청 검토기를 구축하는 방법을 보여줍니다. 여기에서 액세스할 수 있는 최종 애플리케이션은 공개 PR URL을 수락하고 AI 생성 리뷰를 반환합니다.
신청 개요
이 튜토리얼에서는 다음 내용을 다룹니다.
핵심 로직
AI 어시스턴트의 워크플로는 간단합니다. PR URL이 주어지면 GitHub에서 차이점을 검색하여 검토를 위해 LLM에 제출합니다.
GitHub diff는 다음을 통해 액세스할 수 있습니다.
<code>https://patch-diff.githubusercontent.com/raw/{owner}/{repo}/pull/{pr_number}.diff</code>
이 Python 함수는 diff를 가져옵니다.
<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 판사가 사용됩니다. 평가자 프롬프트는 다음과 같습니다.
<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 중국어 웹사이트의 기타 관련 기사를 참조하세요!