Integração com Inteligência Artificial Generativa

O Ro-DOU permite gerar resumos automáticos das publicações encontradas no Diário Oficial da União (DOU) usando um modelo de linguagem (LLM) de um provedor de IA externo.

Isso ajuda a reduzir o tempo de análise, destacando rapidamente o conteúdo mais relevante de cada publicação. O prompt enviado à IA pode ser customizado (ai_custom_prompt), permitindo adaptar o resumo — em tópicos, mais detalhado, em outro tom, etc.

⚠️ Disponível apenas para a fonte INLABS.

Assista ao vídeo abaixo para ver a configuração completa na prática:

Provedores suportados

  • OpenAI
  • Gemini
  • Claude
  • Azure OpenAI

⚠️ Atenção aos custos: o uso de IA pode gerar custos por consumo de tokens, cobrados diretamente pelo provedor escolhido. Ajuste ai_pub_limit para limitar quantas publicações são processadas por execução — importante em buscas com grande volume de resultados.

⚠️ Veracidade das informações: o texto gerado por IA pode conter informações imprecisas ou incompletas. Use sempre como apoio à análise, validando com a fonte original.

Como configurar

1. Providers

Provedores de build disponíveis: openai, gemini, claude.

💡 O Azure OpenAI utiliza o mesmo SDK do OpenAI e não possui um pacote dedicado.

2. Crie a variável com a chave de API no Airflow

Acesse http://localhost:8080/variable/list/ e crie uma variável com a chave do provedor escolhido. O nome é livre — você vai referenciá-lo no YAML pelo campo api_key_var (passo 3):

Provedor Variável sugerida
OpenAI OPENAI_API_KEY
Gemini GEMINI_API_KEY
Claude (Anthropic) ANTHROPIC_API_KEY

Para Azure, além da chave de API, são necessárias três variáveis adicionais:

Variável Descrição
AZURE_OPENAI_ENDPOINT URL do endpoint do Azure OpenAI
AZURE_OPENAI_API_VERSION Versão da API
AZURE_OPENAI_DEPLOYMENT Nome do deployment do modelo
AZURE_OPENAI_API_KEY Chave de API do Azure OpenAI

Crie-as automaticamente com:

make create-azure-openai-variables

3. Configure o YAML da DAG

Adicione ai_config no nível da DAG — ele aponta o provedor e a variável com a chave — e ai_search_config dentro de search, que liga o resumo e ajusta seus parâmetros:

dag:
  id: exemplo_com_ia
  description: DAG de exemplo com resumo por IA
  ...

  ai_config:
    provider: openai  # openai | gemini | claude | azure
    api_key_var: OPENAI_API_KEY
    model: gpt-4o-mini

  search:
    sources:
      - INLABS
    terms:
      - concurso público
    ai_search_config:
      use_ai_summary: True
      ai_pub_limit: 5
      ai_custom_prompt: |
        Você é um assistente que cria resumos concisos de publicações oficiais.

⚠️ Atenção: ai_search_config fica dentro de search, no mesmo nível de terms/sources — não é o mesmo bloco que ai_config (que fica no nível da DAG).

Referência de parâmetros

ai_config (nível da DAG — obrigatório se use_ai_summary: True)

Parâmetro Obrigatório Descrição
provider Sim openai, gemini, claude ou azure
api_key_var Sim Nome da variável do Airflow que contém a chave de API
model Sim Modelo suportado pelo provedor (ex: gpt-4o-mini)
temperature Não 0.0 a 1.0. Default: 0.2. Valores baixos deixam a resposta mais determinística; valores altos, mais variada
max_tokens Não Máximo de tokens na resposta da IA. Default: 200
Parâmetro Obrigatório Descrição
use_ai_summary Não Habilita o resumo por IA. Default: False
ai_pub_limit Não Máximo de publicações resumidas por execução da DAG. Default: 10
ai_custom_prompt Não Prompt customizado enviado à IA (veja o padrão abaixo)
temperature Não Mesmo efeito do temperature de ai_config. Default: 0.2
max_tokens Não Mesmo efeito do max_tokens de ai_config. Default: 200

Prompt padrão

Você é um assistente especializado em análise de
publicações do Diário Oficial da União (DOU).
Resuma o texto em uma única frase objetiva, fiel ao conteúdo original, em português brasileiro.

Inclua o termo "{}" no texto.

O resumo deve focar em:
- órgão responsável
- tipo de ato
- ação principal

Não invente informações. Não use markdown. Retorne apenas a frase.

Observação

O parâmetro use_summary (recurso separado do INLABS, que exibe a ementa da publicação quando ela existe) tem prioridade sobre o resumo por IA: se a publicação já tem ementa, ela é exibida no lugar do resumo gerado por IA; o resumo por IA só é gerado para as publicações sem ementa.