Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 47 additions & 0 deletions .github/workflows/pr-description.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: Gerar descrição do PR com IA

on:
pull_request:
types: [opened, reopened]

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

jobs:
describe:
# Só gera a descrição se o autor não tiver escrito nada.
if: github.event.pull_request.body == '' || github.event.pull_request.body == null
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Gerar diff do PR
run: |
git fetch origin "${{ github.event.pull_request.base.ref }}" --depth=1
git diff "origin/${{ github.event.pull_request.base.ref }}...HEAD" \
-- . ':(exclude)package-lock.json' ':(exclude)*.lock' \
> pr.diff
# Evita estourar o limite de tokens do modelo em PRs muito grandes.
head -c 20000 pr.diff > pr.diff.trunc && mv pr.diff.trunc pr.diff

- name: Gerar descrição com GitHub Models
id: inference
uses: actions/ai-inference@v1
with:
model: openai/gpt-4o-mini
system-prompt: |
Você escreve descrições de Pull Request em português do Brasil, em Markdown,
com base apenas no diff fornecido. Use as seções "## Resumo" e "## Mudanças"
(lista de bullets). Seja direto, sem inventar contexto que não esteja no diff.
prompt-file: pr.diff
response-file: description.md

- name: Atualizar descrição do PR
env:
GH_TOKEN: ${{ github.token }}
run: gh pr edit "${{ github.event.pull_request.number }}" --body-file description.md