S
Sant'Clear
  • Cursos
  • Serviços
  • Sobre
S
Sant'Clear

Engenharia de software e inteligência artificial. Conteúdo técnico, consultoria e soluções.

Navegação
  • Mestre em IA
  • Serviços
  • Sobre
Links
  • LinkedIn
  • GitHub
© 2026Sant'ClearConteúdo 100% gratuito
  1. Início
  2. Mestre em IA
  3. Cap. 1

Neste artigo

  • O desafio de negócio e a arquitetura da solução
  • Passo 1: seleção inteligente de links com JSON estruturado
  • Configuração inicial dos prompts
  • Passo 2: orquestração da chamada ao modelo
  • Passo 3: geração da brochura com streaming
  • Prompt do gerador de brochuras
  • Conclusão técnica

Construção do Seu Primeiro Produto de IA: Gerador de Brochuras Empresariais

Nesta etapa, sairemos da simples experimentação com modelos para construir uma solução de negócio completa com LLMs. O objetivo é desenvolver um produto capaz de gerar automaticamente uma brochura institucional de uma empresa, voltada a investidores, potenciais clientes e candidatos, a partir de apenas duas entradas: o nome da empresa e a URL do seu site principal.

O desafio de negócio e a arquitetura da solução

Criar uma brochura de marketing realmente útil exige mais do que resumir uma única página. A aplicação precisa navegar pelo site com algum grau de inteligência, identificar páginas relevantes — como "Sobre", "Empresa", "Carreiras" ou equivalentes — e reunir essas informações para montar uma visão mais ampla e consistente da organização.

Para isso, a solução será estruturada em três etapas principais:

  1. Descoberta de links: uso de um LLM para filtrar URLs relevantes em um JSON estruturado.
  2. Extração de conteúdo: coleta do texto das páginas selecionadas.
  3. Geração com streaming: consolidação das informações e exibição do resultado em tempo real para o usuário.

Passo 1: seleção inteligente de links com JSON estruturado

O primeiro passo técnico é instruir o modelo a analisar uma lista bruta de links e decidir quais deles são relevantes para compor uma brochura institucional. Para isso, utilizaremos a técnica de one-shot prompting, fornecendo um exemplo explícito do formato de saída esperado. O objetivo é aumentar a confiabilidade da resposta e garantir que ela venha em JSON válido.

Configuração inicial dos prompts

import os
import json
from openai import OpenAI
from scraper import fetch_website_links, fetch_website_contents
from IPython.display import Markdown, display, update_display

# Inicialização do cliente
modelo_selecionado = "gpt-4o-mini"
cliente_openai = OpenAI()

prompt_sistema_link = """
Você recebe uma lista de links encontrados em uma página da web.
Seu papel é decidir quais desses links são mais relevantes para compor
uma brochura sobre a empresa, como páginas institucionais, páginas sobre
a empresa ou páginas de carreiras.

Você deve responder em JSON no formato abaixo:

{
  "links": [
    {"type": "about page", "url": "https://url.completa/sobre"},
    {"type": "careers page", "url": "https://outra.url.completa/carreiras"}
  ]
}
"""

def obter_prompt_usuario_links(url):
    lista_links = fetch_website_links(url)
    prompt_usuario = f"""
Aqui está a lista de links encontrada no site {url}.

Decida quais links são relevantes para a criação de uma brochura sobre a empresa.
Responda usando URLs completas no formato JSON.
Não inclua links de Termos de Serviço, Política de Privacidade ou e-mail.

Links: {lista_links}
"""
    return prompt_usuario

Observação: a variável lista_links armazena os links coletados pela função de scraping.


Passo 2: orquestração da chamada ao modelo

Com os prompts definidos, o próximo passo é encapsular a chamada ao modelo em uma função que receba a resposta, interprete o JSON retornado e o transforme em uma estrutura utilizável em Python.

O parâmetro response_format={"type": "json_object"} é especialmente importante aqui, porque reduz o risco de respostas fora do formato esperado e torna o fluxo mais previsível.

def selecionar_links_relevantes(url):
    resposta = cliente_openai.chat.completions.create(
        model=modelo_selecionado,
        messages=[
            {"role": "system", "content": prompt_sistema_link},
            {"role": "user", "content": obter_prompt_usuario_links(url)}
        ],
        response_format={"type": "json_object"}
    )

    resultado = resposta.choices[0].message.content
    links_selecionados = json.loads(resultado)
    return links_selecionados

Passo 3: geração da brochura com streaming

Para tornar a experiência mais fluida, vamos usar streaming na geração do conteúdo final. Em vez de aguardar o texto completo para só então exibi-lo, o usuário acompanhará a brochura sendo construída em tempo real, token por token.

Essa abordagem melhora a percepção de velocidade e dá ao produto uma experiência mais sofisticada.

Prompt do gerador de brochuras

O prompt abaixo define o comportamento esperado do modelo para a etapa de geração final:

prompt_sistema_brochura = """
Você é um assistente que analisa o conteúdo de várias páginas relevantes do site de uma empresa
e cria uma brochura curta sobre essa empresa para possíveis clientes, investidores e candidatos.

Responda em Markdown, sem blocos de código.
Inclua informações sobre cultura da empresa, clientes e carreiras/vagas sempre que estiverem disponíveis.
"""

def criar_brochura(nome_empresa, url):
    links_relevantes = selecionar_links_relevantes(url)
    conteudo_site = fetch_website_contents(url)

    for link in links_relevantes["links"]:
        conteudo_site += "\n\n---\n\n"
        conteudo_site += fetch_website_contents(link["url"])

    prompt_usuario_brochura = f"Você está analisando a empresa chamada: {nome_empresa}\n"
    prompt_usuario_brochura += "Aqui está o conteúdo da landing page e de outras páginas relevantes:\n"
    prompt_usuario_brochura += conteudo_site

    # Truncamento opcional para respeitar limites de contexto
    prompt_usuario_brochura = prompt_usuario_brochura[:20000]

    fluxo_resposta = cliente_openai.chat.completions.create(
        model=modelo_selecionado,
        messages=[
            {"role": "system", "content": prompt_sistema_brochura},
            {"role": "user", "content": prompt_usuario_brochura}
        ],
        stream=True
    )

    alvo_exibicao = display(Markdown(""), display_id=True)
    brochura_completa = ""

    for pedaco in fluxo_resposta:
        conteudo_token = pedaco.choices[0].delta.content or ""
        brochura_completa += conteudo_token
        update_display(Markdown(brochura_completa), display_id=alvo_exibicao.display_id)

Conclusão técnica

Este projeto mostra, na prática, como combinar chamadas encadeadas de IA, saídas estruturadas em JSON e renderização via streaming para criar um produto de IA com valor de negócio real.

Em vez de apenas gerar texto, a aplicação segue um fluxo robusto: primeiro identifica links relevantes, depois coleta o conteúdo necessário, e por fim sintetiza tudo em uma brochura útil, clara e orientada a objetivos comerciais.

Essa arquitetura é simples o suficiente para ser compreendida rapidamente, mas poderosa o bastante para servir como base de produtos reais voltados ao mercado.

AnteriorExperimentação com modelos de fronteiraPróximaExploração das APIs da Frontier
Voltar ao programa do curso