GitHub Models — это способ «подружить» ИИ-модели с вашим репозиторием и GitHub Actions. Вы даёте ИИ доступ к контексту проекта и автоматизируете рутину — от триажа задач до онбординга контрибьюторов — прямо там, где живёт код. Ни лишних вкладок, ни сторонних ключей — достаточно стандартного GITHUB_TOKEN и разрешения models: read.

Так же разработчикам активно могут помогать GPT-агенты. Научим создавать таких на бесплатном тематическом вебинаре!

Что это за зверь — GitHub Models

GitHub Models — каталог и инфраструктура для вызова популярных LLM (OpenAI, Anthropic, Mistral и др.) напрямую из GitHub: через Playground для экспериментов, через API и через GitHub Actions для автоматизации. Главное — всё работает внутри вашего GitHub-контура и с понятной моделью прав.

Почему это удобно разработчикам и мейнтейнерам:

  • Контекст рядом с кодом. Модель видит то, что нужно для задачи (заголовок/тело issue, патч PR, историю обсуждений).
  • Без лишних ключей. В воркфлоу достаточно добавить permissions: models: read — и можно вызывать модели экшеном actions/ai-inference.
  • Повторяемость. Всё как в CI/CD: YAML-файл, версия action, логи, артефакты.

ОНЛАЙН-ПРАКТИКУМ
ЗАПУСК нейросети DEEPSEEK R1 ЛОКАЛЬНО НА СВОЕМ КОМПЬЮТЕРЕ
ЧТО БУДЕТ НА ОБУЧЕНИИ?
  • ПОКАЖЕМ, КАК РАЗВЕРНУТЬ МОДЕЛЬ нейросети DEEPSEEK R1 ПРЯМО НА СВОЁМ КОМПЬЮТЕРЕ
  • Где и как применять? Потестируем модель после установки на разных задачах
  • Как дообучить модель под себя?

«Continuous AI»: как ИИ-воркфлоу снимают рутину

Ниже — пять типовых сценариев. Их можно буквально скопировать в .github/workflows, включить GitHub Models — и поехали.

1) Автодедупликация задач (issues)

Проблема: два из трёх новых issues — дубликаты. Решение — автоматом находить похожие и ссылаться на них.

yaml
name: Detect duplicate issues

on:
 issues:
 types: [opened, reopened]

permissions:
 models: read
 issues: write

concurrency:
 group: ${{ github.workflow }}-${{ github.event.issue.number }}
 cancel-in-progress: true

jobs:
 continuous-triage-dedup:
 if: ${{ github.event.issue.user.type != 'Bot' }}
 runs-on: ubuntu-latest
 steps:
 - uses: pelikhan/action-genai-issue-dedup@v0
 with:
 github_token: ${{ secrets.GITHUB_TOKEN }}
 # labels: "auto"
 # count: "20"
 # since: "90d"

Коммьюнити-экшен pelikhan/action-genai-issue-dedup как раз для этого и сделан; его используют и в подборке GitHub Next «Awesome Continuous AI».

2) Проверка полноты багрепорта

Не хватает версии, шагов для воспроизведения, «ожидал/получил»? Попросим вежливо дозаполнить — автоматически.

yaml
name: Issue Completeness Check

on:
 issues:
 types: [opened]

permissions:
 issues: write
 models: read

jobs:
 check-completeness:
 runs-on: ubuntu-latest
 steps:
 - name: Check issue completeness
 uses: actions/ai-inference@v2
 id: ai
 with:
 model: openai/gpt-4o-mini
 system-prompt: You are a helpful assistant that helps analyze GitHub issues for completeness.
 prompt: |
 Analyze this GitHub issue for completeness. If missing reproduction steps, version info, or expected/actual behavior, respond with a friendly request for the missing info. If complete, say so.
 Title: ${{ github.event.issue.title }}
 Body: ${{ github.event.issue.body }}

 - name: Comment on issue
 if: steps.ai.outputs.response != ''
 uses: actions/github-script@v7
 with:
 script: |
 github.rest.issues.createComment({
 owner: context.repo.owner,
 repo: context.repo.repo,
 issue_number: ${{ github.event.issue.number }},
 body: `${{ steps.ai.outputs.response }}`
 })

Здесь задействован официальный экшен actions/ai-inference (поддерживает вызов моделей с GITHUB_TOKEN).

3) Детект спама и «slop» в issues/PR

Маркируем очевидный спам или низкокачественные вкладки лейблами — аккуратно и консервативно.

yaml
name: Contribution Quality Check

on:
 pull_request:
 types: [opened]
 issues:
 types: [opened]

permissions:
 pull-requests: write
 issues: write
 models: read

jobs:
 quality-check:
 runs-on: ubuntu-latest
 steps:
 - name: Detect spam or low-quality content
 uses: actions/ai-inference@v2
 id: ai
 with:
 model: openai/gpt-4o-mini
 system-prompt: You detect spam and low-quality contributions. Be conservative.
 prompt: |
 Is this GitHub ${{ github.event_name == 'issues' && 'issue' || 'pull request' }} spam, AI-generated slop, or low quality?
 Title: ${{ github.event.issue.title || github.event.pull_request.title }}
 Body: ${{ github.event.issue.body || github.event.pull_request.body }}
 Respond with one of: spam, ai-generated, needs-review, or ok

 - name: Apply label if needed
 if: steps.ai.outputs.response != 'ok'
 uses: actions/github-script@v7
 with:
 script: |
 const label = `${{ steps.ai.outputs.response }}`;
 const number = ${{ github.event.issue.number || github.event.pull_request.number }};
 if (label && label !== 'ok') {
 await github.rest.issues.addLabels({
 owner: context.repo.owner,
 repo: context.repo.repo,
 issue_number: number,
 labels: [label]
 });
 }

4) «Continuous resolver»: чистим залежавшиеся треды по расписанию

Планово отмечаем/закрываем нерелевантные задачи и PR, добавляя контекст в комментарии.

yaml
name: Continuous AI Resolver

on:
 schedule:
 - cron: '0 0 * * 0' # каждое воскресенье
 workflow_dispatch:

permissions:
 issues: write
 pull-requests: write

jobs:
 resolver:
 runs-on: ubuntu-latest
 steps:
 - name: Run resolver
 uses: ashleywolf/continuous-ai-resolver@main
 with:
 github_token: ${{ secrets.GITHUB_TOKEN }}

Готовый экшен — в открытом репозитории ashleywolf/continuous-ai-resolver (MIT).

5) Тёплый онбординг для первого PR

Приветствуем новичков, даём ссылку на CONTRIBUTING и подсказываем следующий шаг.

yaml
name: Welcome New Contributors

on:
 pull_request:
 types: [opened]

permissions:
 pull-requests: write
 models: read

jobs:
 welcome:
 runs-on: ubuntu-latest
 if: github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR'
 steps:
 - name: Generate welcome message
 uses: actions/ai-inference@v2
 id: ai
 with:
 model: openai/gpt-4o-mini
 temperature: 0.7
 prompt: |
 Write a friendly welcome message for a first-time contributor. Include:
 1. Thank them for their first PR
 2. Mention checking CONTRIBUTING.md
 3. Offer to help if they have questions
 Keep it brief and encouraging.

 - name: Post welcome comment
 uses: actions/github-script@v7
 with:
 script: |
 const message = `${{ steps.ai.outputs.response }}`;
 await github.rest.issues.createComment({
 owner: context.repo.owner,
 repo: context.repo.repo,
 issue_number: ${{ github.event.pull_request.number }},
 body: message
 });

Быстрый старт: что включить и где нажать

  1. Включите GitHub Models на уровне организации/репозитория.
  2. Добавьте права в воркфлоу:

yaml
permissions:
 models: read

Это позволит вызывать модели с помощью GITHUB_TOKEN.

  1. Поставьте экшен actions/ai-inference и дергайте нужную модель (например, openai/gpt-4o-mini).
  2. Для стабильности — фиксируйте версии action (@v2.0.1+…) и храните подсказки в репозитории как .prompt.yml — так они ревьюятся и переиспользуются.

Сколько это «ест» и что с лимитами

Использование моделей в GitHub ограничено по запросам в минуту/день, токенам и параллельности. Если словили rate limit — подождите ресета или оптимизируйте воркфлоу (батчинг, дедуп по событиям, concurrency в YAML).

Хорошая новость: у GitHub есть Copilot Free — бесплатный тариф с квотами (например, \~2000 completions и 50 чатов/мес для личного аккаунта), так что начать можно без бюджета. Для студентов/учителей/мейнтейнеров действуют отдельные льготы.

Практические советы

  • Начните с одного сценария (например, дедупликация issues) и посмотрите на эффект.
  • Оставляйте человека «в контуре»: автокомментируйте, но не авто-закрывайте до тех пор, пока не доверяете правилам.
  • Подбирайте тон сообщений под ваш проект (дружелюбный vs. формальный) — это банально, но влияет на отклик.
  • Следите за ложноположительными: добавляйте labels/since/count в дедупе, чтобы сравнивать «яблоки с яблоками».
  • Загляните в подборку Awesome Continuous AI — там живая витрина примеров и готовых экшенов.

Итог и следующий шаг

  1. Включите GitHub Models
  2. Добавьте models: read
  3. Скопируйте один из YAML выше →
  4. Подправьте промпт под ваш тон →
  5. Посмотрите на метрики (время реакции, % дублей, скорость ревью).

Поделитесь своими находками — экосистема быстро растёт, и чем больше примеров в открытом доступе, тем умнее становятся инструменты. Если сделаете что-то полезное, загляните в Awesome Continuous AI и добавьте ссылку на ваш проект.

Удачи! И пусть ИИ берёт на себя скучную часть, пока вы делаете классные вещи.

Большой практикум
ЗАМЕНИ ВСЕ НЕЙРОСЕТИ НА ОДНУ — PERPLEXITY
ПОКАЖЕМ НА КОНКРЕТНЫХ КЕЙСАХ
  • Освой нейросеть Perplexity и узнай, как пользоваться функционалом остальных ИИ в одном
  • УЧАСТВОВАТЬ ЗА 0 РУБ.
  • Расскажем, как получить подписку
Участвовать бесплатно
ОНЛАЙН-ПРАКТИКУМ
ЗАПУСК нейросети DEEPSEEK R1 ЛОКАЛЬНО НА СВОЕМ КОМПЬЮТЕРЕ
ЧТО БУДЕТ НА ОБУЧЕНИИ?
  • ПОКАЖЕМ, КАК РАЗВЕРНУТЬ МОДЕЛЬ нейросеть DEEPSEEK R1 ПРЯМО НА СВОЁМ КОМПЬЮТЕРЕ
Участвовать бесплатно