Skip to content

gabrielbelo2007/Agent_Systems

Repository files navigation

📝 README - Repositório do Curso de Sistemas Agênticos

Este repositório contém os materiais práticos (Python Notebooks) desenvolvidos para o curso de Sistemas Agênticos, com foco na utilização e engenharia de prompts para modelos de Linguagem de Grande Escala (LLMs), como Gemini e OpenAI.

As aulas cobrem desde a interação básica com a API até técnicas avançadas de Prompt Engineering e a construção de sistemas de Geração Aumentada por Recuperação (RAG - Retrieval-Augmented Generation).


💻 Estrutura do Repositório

O conteúdo está organizado em pastas por módulo (aula), contendo os respectivos Jupyter Notebooks.

Módulo Tema Principal Notebooks
Aula 01 Interação Básica com a API Aula01_Gemini.ipynb & Aula01_GPT.ipynb
Aula 02 Prompt Engineering Aula02_Gemini.ipynb & Aula02_GPT.ipynb
Aula 03 RAG (Retrieval-Augmented Generation) Aula03_Gemini.ipynb & Aula03_GPT.ipynb
Aula 04 Function Calling (Tools) Aula04_Gemini.ipynb
EXTRA Agent Patterns orquestrador.ipynb & paralelização.ipynb & prompt_encadeado.ipynb & reflexao.ipynb & roteamento.ipynb & multiagente.ipynb

🛠️ Detalhe dos Módulos

1️⃣ Aula 01: Interação Básica com a API (Gemini/OpenAI)

Este módulo foca na configuração inicial e nos padrões básicos de comunicação com os modelos de IA (Gemini e GPT).

  • Objetivos de Aprendizagem:
    • Carregar e configurar a chave de API (usando secrets do Google Colab).
    • Listar os modelos disponíveis.
    • Realizar a geração de texto simples.
    • Configurar a geração de múltiplas saídas (candidatos).
    • Realizar a geração com conteúdo multimodal (texto e imagem).
    • Gerenciar o histórico de uma conversa (chat) utilizando a função generate_content (em vez de start_chat), simulando o conceito de que o modelo apenas completa a entrada.
    • Analisar os tokens de entrada e saída consumidos.

2️⃣ Aula 02: Prompt Engineering (Clareza, Exemplos e Formatação)

Focada em técnicas essenciais para criar prompts eficazes. A estrutura da aula foi concebida para demonstrar a evolução de um prompt desde uma abordagem vaga até uma instrução altamente precisa e formatada.

  • Tópicos Abordados:
    • Clareza e Especificidade: A importância de ser preciso sobre a tarefa e os detalhes de resolução (Regras e Contexto), utilizando delimitadores para isolar o texto de entrada (como crases triplas).
    • Aprendizagem por Exemplos (In-Context Learning):
      • Zero-shot: Sem exemplos.
      • One-shot: Fornecimento de um único exemplo para guiar a saída.
      • Few-shot: Fornecimento de múltiplos exemplos para refinar o formato e o comportamento.
    • Formatação de Saída: Geração de respostas em formatos estruturados como JSON, seja através de exemplos ou utilizando o recurso de saída estruturada com bibliotecas como Pydantic (específico para o Gemini API).
    • Incentivo ao Raciocínio (Chain-of-Thought): Técnicas para guiar o modelo a apresentar o raciocínio ou a solução passo a passo (exemplos com equações matemáticas).

3️⃣ Aula 03: RAG - Geração Aumentada por Recuperação

Este módulo introduz o conceito de RAG, utilizando a framework LangChain em conjunto com o modelo Gemini. Demonstra como integrar fontes de dados externas (documentos PDF) para aumentar a base de conhecimento do modelo e melhorar a qualidade das respostas.

  • Fluxo de Trabalho:
    • Carregamento de Documento: Utilização de PyPDFLoader para ler documentos.
    • Quebra do Documento (Text Splitting): Uso de RecursiveCharacterTextSplitter para dividir o documento em partes menores (chunks) com sobreposição.
    • Armazenamento Vetorial: Geração de embeddings (com HuggingFaceEmbeddings) e armazenamento dos chunks em um banco de dados vetorial em memória (InMemoryVectorStore).
    • RAG Agent: Criação de um Agente com LangChain que utiliza uma ferramenta (retrieve_context) para buscar informações relevantes do banco vetorial e auxiliar o modelo ChatGoogleGenerativeAI a responder às consultas do usuário.

4️⃣ Aula 04: Function Calling (Tools)

Este módulo foca na capacidade dos modelos de linguagem de interagir com o mundo exterior por meio de ferramentas ou APIs externas (conhecido como Function Calling ou Chamada de Função).

  • Tópicos Abordados:
    • Declaração da Ferramenta: Como definir o schema de uma função.
    • Fluxo de Execução Manual: O processo em duas etapas em que o modelo sugere a chamada da função, o sistema a executa, e o resultado é devolvido ao modelo para que ele gere a resposta final.
    • Execução Automática de Funções: A capacidade do Gemini de executar a função diretamente sem a necessidade de o desenvolvedor intermediar a chamada.
    • Gerenciamento de Estado: Demonstração de um Agente-Garçom que utiliza múltiplas chamadas de função (adicionar_item, remover_item, ver_pedido) para gerenciar um banco de dados (lista de pedidos) ao longo da conversa.

⭐ EXTRA: Agent Patterns

Esta seção é um material extra que explora padrões avançados e complexos para a construção de sistemas agênticos, focando em como estruturar interações de LLMs para aumentar a confiabilidade, gerenciar a complexidade e orquestrar tarefas.

  • Padrões Incluídos:
    • Orquestração e Planejamento (orquestrador.ipynb): O LLM é usado para gerar um plano de execução estruturado (goal, steps, assigned_to), delegando subtarefas a diferentes "trabalhadores" (ex: Pesquisador, Escritor) antes de iniciar a resolução do objetivo.

    • Encadeamento de Prompts (prompt_encadeado.ipynb): A saída de uma chamada de API (ex: um resumo) se torna a entrada para a próxima chamada (ex: tradução), criando um pipeline de processamento sequencial.

    • Paralelização (Map-Reduce) (paralelização.ipynb): Utilização de asyncio para realizar múltiplas chamadas de API simultaneamente, reduzindo o tempo de espera. O resultado individual de cada chamada é, então, agregado em um passo final (Reduce).

    • Roteamento e Classificação (roteamento.ipynb): O LLM classifica a intenção do usuário (ex: CLIMA, CIÊNCIA) usando uma saída estruturada (Pydantic), e o sistema de software roteia a requisição para a lógica de resposta mais adequada (uma chamada mais curta, uma ferramenta específica, ou um modelo mais robusto).

    • Reflexão e Auto-Correção (reflexao.ipynb): Implementa um loop iterativo onde um LLM atua como gerador (ex: um poema) e outro LLM (ou o mesmo) atua como crítico/avaliador (usando saída estruturada PASSOU/FALHOU), fornecendo feedback que é incorporado na próxima tentativa de geração para refinar o resultado.

    • Multi-Agente (multiagente.ipynb): Simulação de agentes especializados (ex: Agente de Hotel, Agente de Restaurante) que avaliam o pedido do usuário e usam um campo de "handoff" (encaminhamento) na saída estruturada para passar o controle e o contexto da conversa para o agente correto.


About

Repositório referente a curso ministrado pelo professor Pablo Sampaio, e produzido por mim, sobre criação de "AI Agents".

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors