From e00666e5795d267b0e4961be75cbe88e1c5021b8 Mon Sep 17 00:00:00 2001 From: Brandon Li Date: Mon, 11 Aug 2025 18:34:47 -0400 Subject: [PATCH 1/9] test --- pr_agent/PR_agent.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pr_agent/PR_agent.py b/pr_agent/PR_agent.py index 449d3a32..ea2309e5 100644 --- a/pr_agent/PR_agent.py +++ b/pr_agent/PR_agent.py @@ -233,6 +233,7 @@ def next_turn( if __name__ == "__main__": + # test # Change to PRChangesTest.patch for testing with open("PRChangesTest.patch", "r") as f: patch_content = f.read() From 3afb70b57bb1be86c18715af8554dbddad6e2420 Mon Sep 17 00:00:00 2001 From: Brandon Li Date: Mon, 11 Aug 2025 18:36:22 -0400 Subject: [PATCH 2/9] test --- .github/workflows/pr-summary-agent.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr-summary-agent.yml b/.github/workflows/pr-summary-agent.yml index d3a23e93..419dd2d4 100644 --- a/.github/workflows/pr-summary-agent.yml +++ b/.github/workflows/pr-summary-agent.yml @@ -32,7 +32,7 @@ jobs: - name: Run agent run: | uv venv --python 3.12 - uv pip install -e "../agentic[all,dev]" --extra-index-url https://download.pytorch.org/whl/cpu --index-strategy unsafe-first-match + uv pip install -e "../PR_code_review-agent[all,dev]" --extra-index-url https://download.pytorch.org/whl/cpu --index-strategy unsafe-first-match git diff --merge-base HEAD^1 HEAD > PRChanges.patch cat PRChanges.patch uv run pr_agent/PR_agent.py From 4951423526fd7ec90279a4d6fe57ffb92e396fa3 Mon Sep 17 00:00:00 2001 From: Brandon Li Date: Mon, 11 Aug 2025 18:41:04 -0400 Subject: [PATCH 3/9] install apscheduler manually --- .github/workflows/pr-summary-agent.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/pr-summary-agent.yml b/.github/workflows/pr-summary-agent.yml index 419dd2d4..983b202c 100644 --- a/.github/workflows/pr-summary-agent.yml +++ b/.github/workflows/pr-summary-agent.yml @@ -33,6 +33,7 @@ jobs: run: | uv venv --python 3.12 uv pip install -e "../PR_code_review-agent[all,dev]" --extra-index-url https://download.pytorch.org/whl/cpu --index-strategy unsafe-first-match + uv pip install apscheduler git diff --merge-base HEAD^1 HEAD > PRChanges.patch cat PRChanges.patch uv run pr_agent/PR_agent.py From 37b75a91b27eb6c8cdc577f21650c6dae0aee15e Mon Sep 17 00:00:00 2001 From: Brandon Li Date: Mon, 11 Aug 2025 18:43:09 -0400 Subject: [PATCH 4/9] install apscheduler manually --- .github/workflows/pr-summary-agent.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr-summary-agent.yml b/.github/workflows/pr-summary-agent.yml index 983b202c..730ea5bc 100644 --- a/.github/workflows/pr-summary-agent.yml +++ b/.github/workflows/pr-summary-agent.yml @@ -33,7 +33,7 @@ jobs: run: | uv venv --python 3.12 uv pip install -e "../PR_code_review-agent[all,dev]" --extra-index-url https://download.pytorch.org/whl/cpu --index-strategy unsafe-first-match - uv pip install apscheduler + uv pip install litellm[proxy] git diff --merge-base HEAD^1 HEAD > PRChanges.patch cat PRChanges.patch uv run pr_agent/PR_agent.py From 9768c17741c79ff1850f085f3caef0cc6c67b6fe Mon Sep 17 00:00:00 2001 From: Brandon Li Date: Mon, 11 Aug 2025 18:51:11 -0400 Subject: [PATCH 5/9] fixes to api key retrieval --- pr_agent/PR_agent.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pr_agent/PR_agent.py b/pr_agent/PR_agent.py index ea2309e5..4be64b99 100644 --- a/pr_agent/PR_agent.py +++ b/pr_agent/PR_agent.py @@ -109,7 +109,7 @@ def prepare_summary(self, patch_content: str, filtered_results: List[SearchResul def post_to_github(self, summary: str) -> str: """Post summary as a GitHub comment""" - repo = os.getenv("repo") + repo = os.getenv("REPO") pr_id = os.getenv("PR_ID") gh_token = os.getenv("GITHUB_API_KEY") From 8a1430bd1644fd68fe268e8a44e414ed7694124e Mon Sep 17 00:00:00 2001 From: Brandon Li Date: Mon, 11 Aug 2025 19:53:57 -0400 Subject: [PATCH 6/9] removing buggy relevance checker --- pr_agent/PR_agent.py | 41 ++++++++++++++++++-------------------- pr_agent/code_rag_agent.py | 2 +- 2 files changed, 20 insertions(+), 23 deletions(-) diff --git a/pr_agent/PR_agent.py b/pr_agent/PR_agent.py index 4be64b99..e40d6d18 100644 --- a/pr_agent/PR_agent.py +++ b/pr_agent/PR_agent.py @@ -75,13 +75,9 @@ def __init__( model=GPT_4O_MINI, result_model=Searches, ) - - self.relevanceAgent = Agent( - name="Code Relevange Agent", - instructions="""You are an expert in determining if a snippet of code or documentation is directly relevant to understand the changes listed under . Your response must include a 'relevant' field boolean.""", - model=GPT_4O_MINI, - result_model=RelevanceResult, - ) + """ +You are an expert in determining if a snippet of code or documentation is directly relevant to understand the changes listed under . Your response must be a 'relevant' field boolean. +""" self.summaryAgent = SummaryAgent() @@ -188,27 +184,28 @@ def next_turn( print("all: ", all_results) # Filter rag search results using LLM-based relevance checking - filtered_results = [] - for result in all_results.values(): + #filtered_results = [] + #for result in all_results.values(): - try: - relevance_check = yield from self.relevanceAgent.grab_final_result( - f"\n{request_context.get('patch_content')}\n\n\n{result.content}{result.query}" - ) - - if relevance_check.relevant: - filtered_results.append(result) - except Exception as e: + # try: + # relevance_check = yield from self.relevanceAgent.grab_final_result( + # "True" + # ) + # print(relevance_check) + #f"\n{request_context.get('patch_content')}\n\n\n{result.content}{result.query}" + #if relevance_check.relevant: + # filtered_results.append(result) + # except Exception as e: # LLM error - print(e) + # print(e) - for result in all_results.values(): - filtered_results.append(result) + #for result in all_results.values(): + # filtered_results.append(result) - print("filtered: ", str(filtered_results)) + #print("filtered: ", str(filtered_results)) # Prepare for summary - formatted_str = self.prepare_summary(request_context.get("patch_content"),filtered_results) + formatted_str = self.prepare_summary(request_context.get("patch_content"),all_results) print(formatted_str) diff --git a/pr_agent/code_rag_agent.py b/pr_agent/code_rag_agent.py index 2f134c5a..474550ef 100644 --- a/pr_agent/code_rag_agent.py +++ b/pr_agent/code_rag_agent.py @@ -46,7 +46,7 @@ def __init__(self, self.ragTool = RAGTool( default_index="codebase", - index_paths=[], + index_paths=["../**/*.md"], recursive=True ) From 04c2a573fa4914bbaa76db226b082e3bd9867bde Mon Sep 17 00:00:00 2001 From: Brandon Li Date: Mon, 11 Aug 2025 19:58:49 -0400 Subject: [PATCH 7/9] fixes to type handling of search results --- pr_agent/PR_agent.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pr_agent/PR_agent.py b/pr_agent/PR_agent.py index e40d6d18..a74135d5 100644 --- a/pr_agent/PR_agent.py +++ b/pr_agent/PR_agent.py @@ -81,7 +81,7 @@ def __init__( self.summaryAgent = SummaryAgent() - def prepare_summary(self, patch_content: str, filtered_results: List[SearchResult]) -> str: + def prepare_summary(self, patch_content: str, filtered_results: Dict[SearchResult]) -> str: """Prepare for summary agent""" formatted_str = "" @@ -91,7 +91,7 @@ def prepare_summary(self, patch_content: str, filtered_results: List[SearchResul final_str = formatted_str[:] - for result in filtered_results: + for result in filtered_results.values(): formatted_str += f"<{result.file_path}>\n" formatted_str += f"{result.content}\n" formatted_str += f"\n\n" From 7ada51886eacf5959b5f213313c9719b9a42831b Mon Sep 17 00:00:00 2001 From: Brandon Li Date: Mon, 11 Aug 2025 20:00:10 -0400 Subject: [PATCH 8/9] fixes to type handling of search results --- pr_agent/PR_agent.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pr_agent/PR_agent.py b/pr_agent/PR_agent.py index a74135d5..474773dd 100644 --- a/pr_agent/PR_agent.py +++ b/pr_agent/PR_agent.py @@ -81,7 +81,7 @@ def __init__( self.summaryAgent = SummaryAgent() - def prepare_summary(self, patch_content: str, filtered_results: Dict[SearchResult]) -> str: + def prepare_summary(self, patch_content: str, filtered_results: Dict[str,SearchResult]) -> str: """Prepare for summary agent""" formatted_str = "" From e6d617e3bf27fb6aae631b39e493cf604bc3f90e Mon Sep 17 00:00:00 2001 From: Brandon Li Date: Mon, 11 Aug 2025 20:10:44 -0400 Subject: [PATCH 9/9] fixes to getting context from github action --- .github/workflows/pr-summary-agent.yml | 4 ++-- pr_agent/PR_agent.py | 5 +---- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/.github/workflows/pr-summary-agent.yml b/.github/workflows/pr-summary-agent.yml index 730ea5bc..dcb54287 100644 --- a/.github/workflows/pr-summary-agent.yml +++ b/.github/workflows/pr-summary-agent.yml @@ -32,7 +32,7 @@ jobs: - name: Run agent run: | uv venv --python 3.12 - uv pip install -e "../PR_code_review-agent[all,dev]" --extra-index-url https://download.pytorch.org/whl/cpu --index-strategy unsafe-first-match + uv pip install -e "../${{ github.event.repository.name }}[all,dev]" --extra-index-url https://download.pytorch.org/whl/cpu --index-strategy unsafe-first-match uv pip install litellm[proxy] git diff --merge-base HEAD^1 HEAD > PRChanges.patch cat PRChanges.patch @@ -42,7 +42,7 @@ jobs: OPENAI_API_KEY: ${{ secrets.PRAgentOpenAIKey }} PR_ID: ${{ github.event.pull_request.number }} GITHUB_API_KEY: ${{ secrets.GITHUB_TOKEN }} - REPO: ${{ github.GITHUB_REPOSITORY }} + REPO: ${{ github.repository }} - name: Update weaviate cache uses: actions/upload-artifact@v4 diff --git a/pr_agent/PR_agent.py b/pr_agent/PR_agent.py index 474773dd..e71e843f 100644 --- a/pr_agent/PR_agent.py +++ b/pr_agent/PR_agent.py @@ -75,9 +75,6 @@ def __init__( model=GPT_4O_MINI, result_model=Searches, ) - """ -You are an expert in determining if a snippet of code or documentation is directly relevant to understand the changes listed under . Your response must be a 'relevant' field boolean. -""" self.summaryAgent = SummaryAgent() @@ -96,7 +93,7 @@ def prepare_summary(self, patch_content: str, filtered_results: Dict[str,SearchR formatted_str += f"{result.content}\n" formatted_str += f"\n\n" - if token_counter(model=SUMMARY_MODEL, messages=[{"role": "user", "content": {final_str}}]) < 115000: + if token_counter(model=SUMMARY_MODEL, messages=[{"role": "user", "content": {final_str}}]) > 115000: break else: final_str = formatted_str[:]