Skip to content

fix: Groq API tokens #24

fix: Groq API tokens

fix: Groq API tokens #24

Workflow file for this run

name: Test Action - Multi-Model Consensus Review Integration
on:
pull_request:
types:
- opened
- synchronize
- reopened
branches:
- main
- develop
workflow_dispatch:
inputs:
debug_enabled:
description: "Enable debug mode"
required: false
default: "true"
model_preset:
description: "Model configuration preset"
required: false
type: choice
options:
- default
- high-capability
- cost-optimized
- quality-optimized
default: "default"
# Limit concurrent runs
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
# ============================================================================
# Step 1: Generate PR Description (using prpilot-summary)
# ============================================================================
# First, generate an AI-powered PR description using prpilot-summary.
# This provides context for the multi-model consensus review.
# Requires secrets: GROQ_API_KEY
# ============================================================================
generate-description:
name: "Step 1: Generate PR Description"
runs-on: ubuntu-latest
if: github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch'
permissions:
pull-requests: write
contents: read
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Check if LLM API key exists
id: check_secrets
run: |
if [ -z "${{ secrets.GROQ_API_KEY }}" ]; then
echo "has_key=false" >> $GITHUB_OUTPUT
else
echo "has_key=true" >> $GITHUB_OUTPUT
fi
- name: Generate PR Description with prpilot-summary
id: generate_desc
if: steps.check_secrets.outputs.has_key == 'true'
uses: bishalprasad321/prpilot-summary@v1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
llm_api_key: ${{ secrets.GEMINI_API_KEY }}
llm_provider: gemini
ai_model: gemini-2.5-flash
max_diff_lines: "5000"
enable_incremental_diff_processing: "true"
debug: ${{ inputs.debug_enabled || 'false' }}
continue-on-error: true
- name: Log Description Generation Results
if: always()
run: |
echo "=========================================="
echo "Step 1: PR Description Generation"
echo "=========================================="
echo "Status: ${{ job.status }}"
echo "Outcome: ${{ steps.generate_desc.outcome }}"
echo ""
if [ "${{ steps.generate_desc.outcome }}" == "success" ]; then
echo "✅ PR description generated successfully"
else
echo "⚠️ Description generation encountered an error"
echo "This may be expected if:"
echo " - Secrets are not configured (GROQ_API_KEY missing)"
echo " - No meaningful changes in the PR"
echo " - LLM API is temporarily unavailable"
fi
echo "=========================================="
# ============================================================================
# Step 2: Multi-Model Consensus Code Review (using prpilot-review)
# ============================================================================
# Run multi-model consensus review after description is generated.
# This calls 3 independent reviewer models + 1 judge model for consensus.
# Requires secrets: GROQ_API_KEY
# Outputs: Decision (APPROVE/REQUEST_CHANGES/COMMENT), findings, round count
# ============================================================================
consensus-review:
name: "Step 2: Multi-Model Consensus Review"
needs: generate-description
runs-on: ubuntu-latest
if: github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch'
permissions:
pull-requests: write
contents: read
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Determine model configuration
id: model_config
run: |
PRESET="${{ inputs.model_preset || 'default' }}"
case $PRESET in
high-capability)
echo "reviewer_models=llama-3.3-70b-versatile,openai/gpt-oss-120b,openai/gpt-oss-20b" >> $GITHUB_OUTPUT
echo "judge_model=openai/gpt-oss-120b" >> $GITHUB_OUTPUT
echo "preset_name=Groq Maximum Quality" >> $GITHUB_OUTPUT
;;
cost-optimized)
echo "reviewer_models=llama-3.1-8b-instant,openai/gpt-oss-20b,openai/gpt-oss-20b" >> $GITHUB_OUTPUT
echo "judge_model=openai/gpt-oss-120b" >> $GITHUB_OUTPUT
echo "preset_name=Groq Maximum Speed" >> $GITHUB_OUTPUT
;;
quality-optimized)
echo "reviewer_models=llama-3.3-70b-versatile,openai/gpt-oss-120b,openai/gpt-oss-20b" >> $GITHUB_OUTPUT
echo "judge_model=openai/gpt-oss-120b" >> $GITHUB_OUTPUT
echo "preset_name=Groq Maximum Quality" >> $GITHUB_OUTPUT
;;
*)
echo "reviewer_models=llama-3.1-8b-instant,openai/gpt-oss-20b,llama-3.3-70b-versatile" >> $GITHUB_OUTPUT
echo "judge_model=openai/gpt-oss-120b" >> $GITHUB_OUTPUT
echo "preset_name=Groq Default Production" >> $GITHUB_OUTPUT
;;
esac
- name: Check if LLM API key exists
id: check_secrets
run: |
if [ -z "${{ secrets.GROQ_API_KEY }}" ]; then
echo "has_key=false" >> $GITHUB_OUTPUT
else
echo "has_key=true" >> $GITHUB_OUTPUT
fi
- name: Execute prpilot-review Action
id: consensus_review
if: steps.check_secrets.outputs.has_key == 'true'
uses: ./
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
llm_provider: groq
llm_api_key: ${{ secrets.GROQ_API_KEY }}
llm_provider_url: https://api.groq.com/openai/v1
reviewer_models: ${{ steps.model_config.outputs.reviewer_models }}
judge_model: ${{ steps.model_config.outputs.judge_model }}
max_consensus_rounds: "3"
inline_comments_enabled: "true"
max_diff_lines: "5000"
enable_incremental_diff_processing: "true"
debug: ${{ inputs.debug_enabled || 'false' }}
continue-on-error: true
- name: Log Review Execution Results
if: always()
run: |
echo "=========================================="
echo "Step 2: Multi-Model Consensus Review"
echo "=========================================="
echo "Model Configuration: ${{ steps.model_config.outputs.preset_name }}"
echo "Reviewer Models: ${{ steps.model_config.outputs.reviewer_models }}"
echo "Judge Model: ${{ steps.model_config.outputs.judge_model }}"
echo ""
echo "Status: ${{ job.status }}"
echo "Outcome: ${{ steps.consensus_review.outcome }}"
echo ""
echo "Review Results:"
echo " Decision: ${{ steps.consensus_review.outputs.review_decision || 'N/A' }}"
echo " Consensus Round: ${{ steps.consensus_review.outputs.consensus_round || 'N/A' }}"
echo " Review ID: ${{ steps.consensus_review.outputs.review_id || 'N/A' }}"
echo ""
if [[ "${{ steps.consensus_review.outcome }}" == "success" ]]; then
echo "✅ Consensus review completed successfully"
echo "Decision: ${{ steps.consensus_review.outputs.review_decision }}"
echo ""
echo "📋 Review Details:"
echo " - Consensus was reached in ${{ steps.consensus_review.outputs.consensus_round }} round(s)"
echo " - Review has been posted to the pull request"
echo " - Inline code comments with specific findings have been added"
else
echo "⚠️ Consensus review encountered an error"
echo "This may be expected if:"
echo " - Secrets are not configured (GROQ_API_KEY missing)"
echo " - Selected models are not valid for the current provider"
echo " - API quota exceeded (check API key billing settings)"
echo " - Reviewer/judge models not available"
echo " - LLM API is temporarily unavailable"
fi
echo "=========================================="