Sistema de agentes do zero|INEMA.CLUB-PRO

Aula 2 · 12 min

Harness e modelo: o agente começa a conversar

O harness é o programa em volta do modelo. Nesta aula ele tem 19 linhas: pega o seu pedido, manda ao Ollama e imprime a resposta. Ainda não é agente, mas já mostra a separação que importa: trocar o modelo é mudar uma variável, não reescrever o programa.

Começar a aula
Cabeça de robô humanoide presa numa estrutura de metal com cabos ligados a um painel.

Nesta aula você vai

  1. 1O que o harness faz e o que o modelo faz
  2. 2Chamar o Ollama com Python puro
  3. 3Trocar de modelo com uma variável

Objetivo: rodar o primeiro agente.py e trocar o modelo pela variável MODELO sem mexer no código.

01O caminho do seu pedido

Clique em cada etapa.

Clique em cada bloco do diagrama para ver o que ele faz.

02O agente.py da aula 2

Rode dentro de agente-do-zero/. O primeiro comando copia o arquivo da aula do kit para a sua pasta.

Arquivo · kit/aula2/agente.py
#!/usr/bin/env python3
"""Agente do zero (aula 2): o harness mais simples, que leva o seu pedido ao modelo e devolve a resposta."""
import json, os, sys, urllib.request

MODELO = os.environ.get("MODELO", "llama3.2")
URL = os.environ.get("OLLAMA_URL", "http://localhost:11434") + "/api/chat"


def cerebro(mensagens):
    corpo = {"model": MODELO, "messages": mensagens, "stream": False, "think": False, "options": {"temperature": 0, "seed": 1}}
    pedido = urllib.request.Request(URL, json.dumps(corpo).encode(), {"Content-Type": "application/json"})
    with urllib.request.urlopen(pedido, timeout=600) as r:
        return json.loads(r.read())["message"]


if __name__ == "__main__":
    pedido = " ".join(sys.argv[1:])
    resposta = cerebro([{"role": "user", "content": pedido}])
    print(f"{resposta['content']}\n(modelo {MODELO})")
Terminal · copiar, conversar e trocar o modelo
cd ~/agente-do-zero
cp ~/agentes-do-zero-v72/kit/aula2/agente.py .
python3 agente.py "Explique em uma frase o que é um agente de IA."
ollama list | grep -q "^llama3.1:8b" || ollama pull llama3.1:8b   # 5 GB, uma vez só: o download mostra o progresso
MODELO=llama3.1:8b python3 agente.py "Explique em uma frase o que é um agente de IA."
Exemplo do repositório
Um agente de IA é um programa de computador que pode tomar ações autônomas com base em regras e objetivos definidos, simulando a capacidade de tomada de decisão humana.
(modelo llama3.2)
Um agente de IA é um sistema que pode tomar decisões e agir em um ambiente, com o objetivo de alcançar um objetivo específico, utilizando aprendizado de máquina e inteligência artificial.
(modelo llama3.1:8b)

Mesmo pedido, dois modelos, nenhuma linha de código mudou. A linha do ollama pull baixa o llama3.1:8b (5 GB) só se ele ainda não estiver na máquina. Se der erro de memória no seu notebook, pule a última linha e use o modelo pequeno do E2.

03O que cada parte do arquivo faz

Clique em cada parte.

1. Configuração

As duas primeiras variáveis leem o ambiente: se você não disser nada, vale llama3.2 no Ollama local.

Trocar de modelo ou de servidor é mudar a variável, nunca o código.

04Prática: o primeiro harness

Faça na ordem.

E1 · A primeira resposta

10 min

Rode o bloco do terminal e depois faça uma pergunta sua com python3 agente.py "sua pergunta".

Pronto quando: o terminal mostra a resposta e, na última linha, (modelo llama3.2).

E2 · Outro cérebro, mesmo programa

10 min

Baixe um modelo pequeno (ollama pull llama3.2:1b, 1,3 GB) e repita a pergunta com MODELO=llama3.2:1b na frente. Se o 5 GB ficou lento demais no seu notebook, este é o que você vai querer.

Pronto quando: a última linha mostra o nome do outro modelo e o agente.py não foi alterado.

05Teste o que aprendeu

A explicação aparece depois da sua resposta.

Pergunta 1 de 3

Você quer testar outro modelo. O que muda?

06Resumo da aula

HarnessO programa em volta: monta, chama, imprime. É seu.
ModeloPeça trocável, escolhida pela variável MODELO.
RepetívelTemperatura 0 e semente fixa para poder medir.
Aula anteriorPróxima aula