Перейти до змісту

Швидкий старт

Запустіть AI Code Reviewer за 5 хвилин на GitHub або GitLab.


Крок 1: Оберіть LLM-провайдера та отримайте API ключ

AI Reviewer підтримує декілька LLM-провайдерів. Оберіть один (або використовуйте обидва для fallback):

  1. Перейдіть на Google AI Studio
  2. Увійдіть з Google акаунтом
  3. Натисніть "Get API key""Create API key"
  4. Скопіюйте ключ (він починається з AIza...)

Безкоштовний рівень

Gemini API має безкоштовний рівень: 15 запитів на хвилину, достатньо для більшості команд з 4-8 розробників.

  1. Перейдіть на Mistral Console
  2. Зареєструйтесь або увійдіть
  3. Перейдіть до API KeysCreate new key
  4. Скопіюйте ключ (він починається з sk-...)

Безкоштовний рівень

Mistral пропонує безкоштовний рівень для експериментів. Після реєстрації ви отримуєте безкоштовні API-кредити для випробування всіх моделей. Актуальні ліміти: Mistral Pricing.

Безкоштовний Codestral

Codestral (модель для коду) має власний безкоштовний рівень з окремим endpoint і ключем:

  1. Перейдіть на codestral.mistral.ai
  2. Згенеруйте Codestral API ключ
  3. Встановіть AI_REVIEWER_MISTRAL_API_URL=https://codestral.mistral.ai
  4. Встановіть AI_REVIEWER_MISTRAL_MODEL=codestral-latest

Цей ключ працює тільки з codestral-latest на Codestral endpoint.

Отримайте обидва ключі за інструкціями вище. Це дає вам:

  • Mistral як основну модель (напр. mistral-large-latest)
  • Google Gemini як автоматичний fallback, якщо Mistral недоступний

Це найнадійніша конфігурація для production.

Збережіть ключ

API ключі показуються лише один раз. Збережіть їх у безпечному місці.


Крок 2: Додайте секрети у репозиторій

Шлях: Repository → SettingsSecrets and variablesActionsNew repository secret

Name Value
AI_REVIEWER_GOOGLE_API_KEY Ваш Gemini ключ (AIza...)
Name Value
AI_REVIEWER_MISTRAL_API_KEY Ваш Mistral ключ (sk-...)
Name Value
AI_REVIEWER_MISTRAL_API_KEY Ваш Mistral ключ (sk-...)
AI_REVIEWER_GOOGLE_API_KEY Ваш Gemini ключ (AIza...)

Натисніть "Add secret" для кожного.

Детальна інструкція з скріншотами
  1. Відкрийте ваш репозиторій на GitHub
  2. Натисніть Settings (шестерня у верхньому меню)
  3. У лівому меню знайдіть Secrets and variablesActions
  4. Натисніть зелену кнопку New repository secret
  5. Введіть ім'я та вставте ваш ключ
  6. Натисніть Add secret
  7. Повторіть для кожного секрету

Офіційна документація GitHub: Encrypted secrets

Для GitLab також потрібен GitLab токен для публікації коментарів.

Крок 2a: Створіть GitLab токен

Шлях: Аватар користувача → Edit profileAccess Tokens

Поле Значення
Token name ai-reviewer
Expiration date Оберіть дату (макс. 1 рік)
Scopes ✅ api

Натисніть "Create personal access token"Скопіюйте токен (показується лише раз!)

Коментарі будуть від вашого імені

Personal Access Token прив'язаний до вашого облікового запису. Всі коментарі ревʼю будуть опубліковані від вашого імені.

GitLab Docs: Personal access tokens

Потрібні права Maintainer

Для створення Project Access Token потрібна роль Maintainer або Owner у проєкті.

GitLab Docs: Roles and permissions

Шлях: Project → SettingsAccess Tokens

Поле Значення
Token name ai-reviewer
Expiration date Оберіть дату (макс. 1 рік)
Role Developer
Scopes ✅ api

Натисніть "Create project access token"Скопіюйте токен (показується лише раз!)

GitLab Docs: Project access tokens

Крок 2b: Додайте змінні в CI/CD

Шлях: Project → SettingsCI/CDVariables

Key Value Flags
AI_REVIEWER_GOOGLE_API_KEY Ваш Gemini ключ ✅ Mask, ❌ Зніміть Protected
AI_REVIEWER_GITLAB_TOKEN Токен з кроку 2a ✅ Mask, ❌ Зніміть Protected
Key Value Flags
AI_REVIEWER_MISTRAL_API_KEY Ваш Mistral ключ ✅ Mask, ❌ Зніміть Protected
AI_REVIEWER_GITLAB_TOKEN Токен з кроку 2a ✅ Mask, ❌ Зніміть Protected
Key Value Flags
AI_REVIEWER_MISTRAL_API_KEY Ваш Mistral ключ ✅ Mask, ❌ Зніміть Protected
AI_REVIEWER_GOOGLE_API_KEY Ваш Gemini ключ ✅ Mask, ❌ Зніміть Protected
AI_REVIEWER_GITLAB_TOKEN Токен з кроку 2a ✅ Mask, ❌ Зніміть Protected

Зніміть «Protected»!

За замовчуванням GitLab позначає нові змінні як Protected. Protected змінні доступні лише в захищених гілках (наприклад, main), але MR pipeline запускається на незахищених source гілках — змінна буде порожньою і ви отримаєте 401 Unauthorized.

CI_JOB_TOKEN не працює

Автоматичний CI_JOB_TOKEN від GitLab не може постити коментарі до Merge Requests. Ви повинні створити Personal Access Token (або Project Access Token на Premium+).

GitLab Docs: CI/CD variables


Крок 3: Додайте AI Review у CI

Створіть файл .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

Використовуйте ключ з codestral.mistral.ai, а не звичайний Mistral API ключ.

Про GITHUB_TOKEN

secrets.GITHUB_TOKEN — це автоматичний токен, який GitHub створює для кожного workflow run. Його не потрібно додавати в secrets вручну — він вже доступний.

GitHub Docs: Automatic token authentication

Створіть або оновіть .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 змінні AI_REVIEWER_GOOGLE_API_KEY та AI_REVIEWER_GITLAB_TOKEN з кроку 2b наслідуються автоматично.

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 змінні AI_REVIEWER_MISTRAL_API_KEY та AI_REVIEWER_GITLAB_TOKEN з кроку 2b наслідуються автоматично.

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

Всі три CI/CD змінні (AI_REVIEWER_MISTRAL_API_KEY, AI_REVIEWER_GOOGLE_API_KEY, AI_REVIEWER_GITLAB_TOKEN) з кроку 2b наслідуються автоматично.

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 змінні AI_REVIEWER_MISTRAL_API_KEY (використовуйте ключ Codestral) та AI_REVIEWER_GITLAB_TOKEN з Кроку 2b доступні автоматично.


Крок 4: Перевірте результат

Тепер AI Review буде запускатись автоматично при:

Платформа Подія
GitHub Створення PR, нові коміти в PR, reopening PR
GitLab Створення MR, нові коміти в MR

Що ви побачите

Після завершення CI job, в PR/MR з'являться:

  • Inline коментарі — прив'язані до конкретних рядків коду
  • Кнопка "Apply suggestion" — для швидкого застосування виправлень (GitHub)
  • Summary коментар — загальний огляд з метриками

Кожен коментар містить:

  • 🔴 / 🟡 / 🔵 Severity badge
  • Опис проблеми
  • Пропозицію виправлення
  • Collapsible секцію "Чому це важливо?"

У підвалі коментаря вказано, яку модель і провайдера було використано:

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


Troubleshooting

Review не з'являється?

Перевірте чеклист:

  • API ключ додано як секрет? (AI_REVIEWER_GOOGLE_API_KEY або AI_REVIEWER_MISTRAL_API_KEY)
  • llm_provider встановлено правильно, якщо використовується Mistral? (за замовчуванням google)
  • github_token передано явно? (для GitHub)
  • Для GitLab: AI_REVIEWER_GITLAB_TOKEN встановлено як Personal Access Token?
  • CI job завершився успішно? (перевірте логи)
  • Для GitHub: є permissions: pull-requests: write?
  • Для fork PRs: секрети недоступні — це очікувана поведінка

Rate limit?

  • Gemini free tier: 15 запитів на хвилину
  • Mistral free tier: актуальні ліміти на Mistral Pricing

Зачекайте хвилину та спробуйте знову, або налаштуйте fallback-провайдера.

👉 Всі проблеми та рішення →


Що далі?

Задача Документ
Налаштувати мову відповідей Конфігурація
Розширені налаштування LLM-провайдерів Конфігурація → LLM
Перемикання моделей без зміни коду GitHub → Конфігурація через Variables
Розширені налаштування GitHub GitHub Guide
Розширені налаштування GitLab GitLab Guide
Приклади workflows Приклади