Assistentes de IA Personalizados na Prática: o Código e os Comandos que Realmente Importam
Assistentes de IA Personalizados: o essencial em um artigo — código real, diagramas e etapas concretas, extraídos de um curso de 44 lições.
Sem teoria interminável aqui: abra o terminal e pratique. Aqui está o essencial de Assistentes IA Personalizados, extraído diretamente de um curso completo de 44 lições — com código real que você pode copiar e colar agora.
- Introdução e Configuração Inicial
- Conceber um Assistente Eficaz
- Criar GPTs Personalizados
- Projetos Claude e Gems Gemini
- Ações e Ferramentas Externas
Threads, mensagens e runs
Objetivos pedagógicos
- Criar e gerenciar um Thread de conversa
- Adicionar mensagens de usuário em um Thread
- Iniciar um Run e gerenciar seu ciclo de vida
- Escolher entre polling e streaming
- Recuperar e exibir a resposta do assistente
Threads: o que são na prática?
Um Thread é um contêiner persistente que armazena o histórico de uma conversa entre um usuário e um assistente. É a OpenAI quem o persiste em seus servidores. Você gerencia apenas o ID.
Boa prática: um Thread por sessão de usuário. Por exemplo, em seu app, você cria um Thread quando o usuário começa a conversar. Você armazena o thread_id em seu banco de dados.
| Status | Significado |
|---|---|
| queued | Na fila, vai iniciar |
| in_progress | O assistente está gerando a resposta |
| requires_action | Function call: seu código deve responder |
| completed | Concluído com sucesso |
| failed | Falha, ver last_error |
| cancelled | Cancelado manualmente |
| expired | Timeout (10 minutos) |
Polling: aguardar o fim do Run
O padrão clássico consiste em verificar regularmente o status até a conclusão:
Exemplo completo: conversa simples
Um Assistant global
Crie o Assistant uma única vez e armazene seu ID na configuração.
Um Thread por sessão
Crie um Thread no login do usuário, armazene o ID no banco de dados.
Recuperar o Thread
A cada nova mensagem, reutilize o ID armazenado para preservar o histórico.
Limites e cotas
| Aspecto | Limite |
|---|---|
| Run timeout | 10 minutos |
| Mensagens por Thread | Sem limite estrito, mas monitorar |
| Threads por conta | Sem limite estrito |
| Concorrência de Runs | Conforme tier (10-1000 simultâneos) |
| Armazenamento de Threads | 30 dias por padrão, purga automática depois |
File search e code interpreter
Objetivos pedagógicos
- Criar um Vector Store e fazer upload de arquivos
- Anexar um Vector Store a um Assistant para RAG
- Ativar Code Interpreter e testar cálculos em Python
- Recuperar arquivos gerados pelo Code Interpreter
- Combinar as duas tools no mesmo Assistant
File Search: o RAG nativo da OpenAI
File Search é a tool de RAG nativa da Assistants API. Você fornece arquivos, ela os indexa automaticamente (chunking, embedding, vector store) e permite que o Assistant busque trechos relevantes.
Diferença em relação a um RAG customizado: com File Search, você não precisa escolher chunker, nem modelo de embedding, nem gerenciar um vector DB. A OpenAI faz tudo.
Os Vector Stores
Um Vector Store é um contêiner de arquivos indexados, reutilizável entre vários Assistants. Você o cria uma vez, adiciona seus documentos e depois o anexa aos Assistants que precisam.
Recuperar as citações
Ativar Code Interpreter
Fazer upload de arquivo para Code Interpreter
Function calling e tools personalizadas
Objetivos pedagógicos
- Definir uma função customizada no formato JSON Schema
- Anexá-la a um Assistant como tool
- Gerenciar o status requires_action e enviar uma resposta
- Definir várias funções e deixar o Assistant escolher
- Construir um mini-agent que combina várias tools
Por que function calling?
File Search e Code Interpreter são poderosos, mas limitados: acessam apenas arquivos e Python local. Para TUDO o resto (seu banco de dados interno, suas APIs customizadas, ações específicas de negócio), é necessário o function calling.
Princípio: você descreve suas funções Python para o modelo. Quando ele quiser chamá-las, retorna o nome da função e os argumentos. Você executa a função do seu lado e envia o resultado.
Definir uma função no formato JSON Schema
Você descreve cada função com um nome, uma descrição e um schema dos parâmetros:
Gerenciar o status requires_action
Quando o Assistant decide chamar sua função, o Run passa para o status requires_action. Você deve:
Paralelização de tool_calls
Se o Assistant solicitar várias funções ao mesmo tempo (por exemplo "me dê o tempo em Paris E em Lyon"), você pode executá-las em paralelo para ganhar desempenho:
Mini-agent: combinar tools nativas e funções
O ápice: um Assistant que combina file_search, code_interpreter E suas funções customizadas. Torna-se um verdadeiro agent.
Este artigo cobre os trechos mais úteis — o curso completo Assistentes IA Personalizados (11 capítulos, 44 lições, exercícios corrigidos e projeto final) leva você até o fim.
./acessar-o-curso-completo curso gratuito: Engenharia de promptsFAQ
Quanto tempo para aprender Assistentes IA Personalizados?
É preciso ter pré-requisitos?
Por onde começar na prática?
📬 Quer receber este tipo de guia toda semana? Inscreva-se gratuitamente — código real, zero enrolação.