fix: Groq API tokens #24
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 "==========================================" |