Lucas S. Vieira
Construindo o primeiro agente
Guilda de IA
Primeiro modelo de imagem que roda em iPhone. Pesos binários (1-bit) e ternários (1.6-bit). Compressão de 8.3× — de 15.97GB pra 3.42GB. Qualidade ternária retém 95% do FLUX.2 Klein 4B. Apache 2.0, open weights.
Imagens geradas com Bonsai Image 4B ternário (0.93GB)!
Agente = LLM + harness (estrutura para conversar)
O LLM puro sĂł responde uma pergunta. Um agente:
def criar_agente(instrucoes, max_historico=20):
return {
"instrucoes": instrucoes,
"historico": [],
"max_historico": max_historico
}
def conversar(agente, mensagem):
messages = [{"role": "system",
"content": agente["instrucoes"]}]
for msg in agente["historico"][-agente["max_historico"]:]:
messages.append(msg)
messages.append({"role": "user",
"content": mensagem})
# ... chama LLM, salva no histĂłrico, retorna resposta
Estado em dicionário = mais simples para iniciantes.
Funções puras são mais fáceis de testar e entender.
agente = criar_agente("VocĂŞ Ă© educado.")
conversar(agente, "Oi!") # histĂłrico atualiza
conversar(agente, "Lembra de mim?") # tem contexto
Se a conversa crescer demais, o prompt fica gigante.
Solução: limitar histórico.
# Pegar sĂł as Ăşltimas N mensagens
for msg in agente["historico"][-agente["max_historico"]:]:
...
Agentes reais pensam e agem em ciclos (Yao et al., 2022)
Input → Thought → Action → Observation → Thought → Answer
Exemplo: "Quanto Ă© 234 Ă— 987 + 100?"
Hoje: memória + instruções. Na S06: ferramentas!
Montar mensagens na mĂŁo funciona, mas Ă© repetitivo.
Com requests |
Com LangChain |
|---|---|
| Montar dict manual | ChatPromptTemplate |
| Gerenciar histĂłrico manual | InMemoryChatMessageHistory |
| Chamar API e parsear | ChatOpenAI (endpoint OpenAI-compatible) |
[-N:] manual |
Configurável |
cadeia = prompt | llm # pipe = encadeia
resultado = cadeia.invoke({"pergunta": "Oi!"})
"Agente Ă© LLM com memĂłria e personalidade. ReAct completa o ciclo: pensar e agir."
luksamuk.codes/pages/guilda-ia → Semana 05
- Vamos dar uma ferramenta para o agente
- O ciclo ReAct se completa: Thought → Action → Observation