Иди на текст

Brzi početak

Pokrenite AI Code Reviewer za 5 minuta na GitHub-u ili GitLab-u.


Korak 1: Izaberite LLM provajdera i preuzmite API ključ

AI Reviewer podržava više LLM provajdera. Izaberite jednog (ili koristite oba za fallback):

  1. Idite na Google AI Studio
  2. Prijavite se sa Google nalogom
  3. Kliknite "Get API key""Create API key"
  4. Kopirajte ključ (počinje sa AIza...)

Besplatni nivo

Gemini API ima besplatni nivo: 15 zahtjeva po minuti, dovoljno za većinu timova od 4-8 programera.

  1. Idite na Mistral Console
  2. Registrujte se ili se prijavite
  3. Idite na API KeysCreate new key
  4. Kopirajte ključ (počinje sa sk-...)

Besplatni nivo

Mistral nudi besplatni nivo za eksperimentisanje. Nakon registracije, dobijate besplatne API kredite za isprobavanje svih modela. Provjerite Mistral Pricing za aktuelna ograničenja.

Besplatni Codestral

Codestral (model specijalizovan za kod) ima vlastiti besplatni nivo sa odvojenim endpoint-om i ključem:

  1. Idite na codestral.mistral.ai
  2. Generišite Codestral API ključ
  3. Postavite AI_REVIEWER_MISTRAL_API_URL=https://codestral.mistral.ai
  4. Postavite AI_REVIEWER_MISTRAL_MODEL=codestral-latest

Ovaj ključ radi samo sa codestral-latest na Codestral endpoint-u.

Preuzmite oba ključa koristeći gornja uputstva. Ovo vam daje:

  • Mistral kao primarni model (npr. mistral-large-latest)
  • Google Gemini kao automatski fallback ako Mistral nije dostupan

Ovo je najpouzdanija konfiguracija za produkcijsku upotrebu.

Sačuvajte ključ

API ključevi se prikazuju samo jednom. Sačuvajte ih na bezbjednom mjestu.


Korak 2: Dodajte tajne u repozitorijum

Putanja: Repository → SettingsSecrets and variablesActionsNew repository secret

Name Value
AI_REVIEWER_GOOGLE_API_KEY Vaš Gemini ključ (AIza...)
Name Value
AI_REVIEWER_MISTRAL_API_KEY Vaš Mistral ključ (sk-...)
Name Value
AI_REVIEWER_MISTRAL_API_KEY Vaš Mistral ključ (sk-...)
AI_REVIEWER_GOOGLE_API_KEY Vaš Gemini ključ (AIza...)

Kliknite "Add secret" za svaki.

Detaljna uputstva sa snimcima ekrana
  1. Otvorite vaš repozitorijum na GitHub-u
  2. Kliknite Settings (zupčanik u gornjem meniju)
  3. U lijevom meniju pronađite Secrets and variablesActions
  4. Kliknite zeleno dugme New repository secret
  5. Unesite ime i zalijepite ključ
  6. Kliknite Add secret
  7. Ponovite za svaku tajnu

Zvanična dokumentacija GitHub: Encrypted secrets

Za GitLab trebate kreirati GitLab token za postavljanje komentara.

Korak 2a: Kreirajte GitLab token

Putanja: Korisnički avatar → Edit profileAccess Tokens

Polje Vrijednost
Token name ai-reviewer
Expiration date Izaberite datum (maks. 1 godina)
Scopes ✅ api

Kliknite "Create personal access token"Kopirajte token (prikazuje se samo jednom!)

Komentari će se pojavljivati pod vašim korisničkim imenom

Personal Access Token je vezan za vaš nalog. Svi komentari revizije biće objavljeni u vaše ime.

GitLab Docs: Personal access tokens

Potrebna Maintainer prava

Za kreiranje Project Access Token-a potrebna je uloga Maintainer ili Owner u projektu.

GitLab Docs: Roles and permissions

Putanja: Project → SettingsAccess Tokens

Polje Vrijednost
Token name ai-reviewer
Expiration date Izaberite datum (maks. 1 godina)
Role Developer
Scopes ✅ api

Kliknite "Create project access token"Kopirajte token (prikazuje se samo jednom!)

GitLab Docs: Project access tokens

Korak 2b: Dodajte varijable u CI/CD

Putanja: Project → SettingsCI/CDVariables

Key Value Flags
AI_REVIEWER_GOOGLE_API_KEY Vaš Gemini ključ ✅ Mask, ❌ Odznačite Protected
AI_REVIEWER_GITLAB_TOKEN Token iz koraka 2a ✅ Mask, ❌ Odznačite Protected
Key Value Flags
AI_REVIEWER_MISTRAL_API_KEY Vaš Mistral ključ ✅ Mask, ❌ Odznačite Protected
AI_REVIEWER_GITLAB_TOKEN Token iz koraka 2a ✅ Mask, ❌ Odznačite Protected
Key Value Flags
AI_REVIEWER_MISTRAL_API_KEY Vaš Mistral ključ ✅ Mask, ❌ Odznačite Protected
AI_REVIEWER_GOOGLE_API_KEY Vaš Gemini ključ ✅ Mask, ❌ Odznačite Protected
AI_REVIEWER_GITLAB_TOKEN Token iz koraka 2a ✅ Mask, ❌ Odznačite Protected

Odznačite «Protected»!

Podrazumijevano, GitLab označava nove varijable kao Protected. Protected varijable su dostupne samo u zaštićenim granama (npr. main), ali MR pipeline-i se pokreću na nezaštićenim izvornim granama — varijabla će biti prazna i dobićete 401 Unauthorized.

CI_JOB_TOKEN ne radi

GitLab-ov automatski CI_JOB_TOKEN ne može postavljati komentare na Merge Request-e. Morate kreirati Personal Access Token (ili Project Access Token na Premium+).

GitLab Docs: CI/CD variables


Korak 3: Dodajte AI Review u CI

Kreirajte fajl .github/workflows/ai-review.yml:

name: AI Code Review

on:
  pull_request:
    types: [opened, synchronize, reopened]

concurrency:
  group: ai-review-${{ github.event.pull_request.number }}
  cancel-in-progress: true

jobs:
  review:
    runs-on: ubuntu-latest
    if: github.event.pull_request.head.repo.full_name == github.repository
    permissions:
      contents: read
      pull-requests: write

    steps:
      - uses: KonstZiv/ai-code-reviewer@v1
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          google_api_key: ${{ secrets.AI_REVIEWER_GOOGLE_API_KEY }}
name: AI Code Review

on:
  pull_request:
    types: [opened, synchronize, reopened]

concurrency:
  group: ai-review-${{ github.event.pull_request.number }}
  cancel-in-progress: true

jobs:
  review:
    runs-on: ubuntu-latest
    if: github.event.pull_request.head.repo.full_name == github.repository
    permissions:
      contents: read
      pull-requests: write

    steps:
      - uses: KonstZiv/ai-code-reviewer@v1
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          mistral_api_key: ${{ secrets.AI_REVIEWER_MISTRAL_API_KEY }}
          llm_provider: mistral
name: AI Code Review

on:
  pull_request:
    types: [opened, synchronize, reopened]

concurrency:
  group: ai-review-${{ github.event.pull_request.number }}
  cancel-in-progress: true

jobs:
  review:
    runs-on: ubuntu-latest
    if: github.event.pull_request.head.repo.full_name == github.repository
    permissions:
      contents: read
      pull-requests: write

    steps:
      - uses: KonstZiv/ai-code-reviewer@v1
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          mistral_api_key: ${{ secrets.AI_REVIEWER_MISTRAL_API_KEY }}
          google_api_key: ${{ secrets.AI_REVIEWER_GOOGLE_API_KEY }}
          llm_provider: mistral
          llm_fallback_provider: google
name: AI Code Review

on:
  pull_request:
    types: [opened, synchronize, reopened]

concurrency:
  group: ai-review-${{ github.event.pull_request.number }}
  cancel-in-progress: true

jobs:
  review:
    runs-on: ubuntu-latest
    if: github.event.pull_request.head.repo.full_name == github.repository
    permissions:
      contents: read
      pull-requests: write

    steps:
      - uses: KonstZiv/ai-code-reviewer@v1
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          mistral_api_key: ${{ secrets.AI_REVIEWER_MISTRAL_API_KEY }}
          llm_provider: mistral
          mistral_model: codestral-latest
          mistral_api_url: https://codestral.mistral.ai

Codestral ključ

Koristite ključ sa codestral.mistral.ai, ne obični Mistral API ključ.

O GITHUB_TOKEN

secrets.GITHUB_TOKEN je automatski token koji GitHub kreira za svako pokretanje workflow-a. Ne treba ga dodavati u tajne ručno — već je dostupan.

GitHub Docs: Automatic token authentication

Kreirajte ili ažurirajte .gitlab-ci.yml:

stages:
  - review

ai-review:
  image: ghcr.io/konstziv/ai-code-reviewer:1
  stage: review
  script:
    - ai-review
  rules:
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
  allow_failure: true

CI/CD varijable AI_REVIEWER_GOOGLE_API_KEY i AI_REVIEWER_GITLAB_TOKEN iz Koraka 2b se nasljeđuju automatski.

stages:
  - review

ai-review:
  image: ghcr.io/konstziv/ai-code-reviewer:1
  stage: review
  variables:
    AI_REVIEWER_LLM_PROVIDER: mistral
  script:
    - ai-review
  rules:
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
  allow_failure: true

CI/CD varijable AI_REVIEWER_MISTRAL_API_KEY i AI_REVIEWER_GITLAB_TOKEN iz Koraka 2b se nasljeđuju automatski.

stages:
  - review

ai-review:
  image: ghcr.io/konstziv/ai-code-reviewer:1
  stage: review
  variables:
    AI_REVIEWER_LLM_PROVIDER: mistral
    AI_REVIEWER_LLM_FALLBACK_PROVIDER: google
  script:
    - ai-review
  rules:
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
  allow_failure: true

Sve tri CI/CD varijable (AI_REVIEWER_MISTRAL_API_KEY, AI_REVIEWER_GOOGLE_API_KEY, AI_REVIEWER_GITLAB_TOKEN) iz Koraka 2b se nasljeđuju automatski.

stages:
  - review

ai-review:
  image: ghcr.io/konstziv/ai-code-reviewer:1
  stage: review
  variables:
    AI_REVIEWER_LLM_PROVIDER: mistral
    AI_REVIEWER_MISTRAL_MODEL: codestral-latest
    AI_REVIEWER_MISTRAL_API_URL: https://codestral.mistral.ai
  script:
    - ai-review
  rules:
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
  allow_failure: true

CI/CD varijable AI_REVIEWER_MISTRAL_API_KEY (koristite Codestral ključ) i AI_REVIEWER_GITLAB_TOKEN iz Koraka 2b su automatski dostupne.


Korak 4: Provjerite rezultat

Sada će se AI Review pokretati automatski pri:

Platforma Događaj
GitHub Kreiranje PR-a, novi komiti u PR-u, ponovno otvaranje PR-a
GitLab Kreiranje MR-a, novi komiti u MR-u

Šta ćete vidjeti

Nakon završetka CI job-a, u PR/MR će se pojaviti:

  • Inline komentari — povezani sa specifičnim linijama koda
  • Dugme "Apply suggestion" — za brzu primjenu ispravki (GitHub)
  • Summary komentar — opšti pregled sa metrikama

Svaki komentar sadrži:

  • 🔴 / 🟡 / 🔵 Oznaku ozbiljnosti
  • Opis problema
  • Prijedlog ispravke
  • Sklopivi odjeljak "Zašto je ovo važno?"

Footer prikazuje koji model i provajder je korišćen:

Model: Google / gemini-2.5-flash | Tokens: 1,234 | Latency: 2.3s | Est. cost: $0.0012


Rješavanje problema

Revizija se ne pojavljuje?

Provjerite listu:

  • Da li je API ključ dodat kao tajna? (AI_REVIEWER_GOOGLE_API_KEY ili AI_REVIEWER_MISTRAL_API_KEY)
  • Da li je llm_provider ispravno podešen ako koristite Mistral? (podrazumijevano je google)
  • github_token eksplicitno proslijeđen? (za GitHub)
  • Za GitLab: da li je AI_REVIEWER_GITLAB_TOKEN podešen na Personal Access Token?
  • CI job završen uspješno? (provjerite logove)
  • Za GitHub: ima li permissions: pull-requests: write?
  • Za fork PR-ove: tajne nijesu dostupne — ovo je očekivano ponašanje

Rate limit?

  • Gemini besplatni nivo: 15 zahtjeva po minuti
  • Mistral besplatni nivo: provjerite Mistral Pricing za aktuelna ograničenja

Sačekajte minut i pokušajte ponovo, ili konfigurišite fallback provajder.

👉 Svi problemi i rješenja →


Šta dalje?

Zadatak Dokument
Konfigurišite jezik odgovora Konfiguracija
Napredna podešavanja LLM provajdera Konfiguracija → LLM
Prebacivanje modela bez promjene koda GitHub → Konfiguracija putem Variables
Napredna podešavanja GitHub GitHub vodič
Napredna podešavanja GitLab GitLab vodič
Primjeri workflow-a Primjeri