Powered by Spring Boot 3 + Spring AI

Swagger Agent

Transforme qualquer especificação OpenAPI em ferramentas dinâmicas que podem ser invocadas por modelos de linguagem (LLMs). Construído com Spring Boot 3, Spring AI e preparado para rodar com OpenAI ou modelos locais via Ollama.

Quick Start

🚀 Inicie em 4 Passos

Configure e execute o Swagger Agent rapidamente com a configuração padrão (OpenAI).

# 1. Clone o repositório
 git clone https://github.com/cesarschutz/swagger-agent.git
 cd swagger-agent
 
 # 2. Adicione seus arquivos OpenAPI na pasta `openapi-specs/`
 # Exemplo: openapi-specs/petstore/petstore.yaml

 # 3. Exporte sua chave da OpenAI e execute`
 export OPENAI_API_KEY="sua_chave_openai_aqui"
 
 # 4. Execute a aplicação
 ./mvnw spring-boot:run

💡 Quer usar um modelo local?

Pule para a seção Configurando o Provedor de IA para aprender a usar o Swagger Agent com o Ollama.

Interfaces do Sistema

💻 Conheça as Telas do Swagger Agent

Explore as interfaces web e mobile do projeto, desde a tela inicial até a visualização de ferramentas disponíveis.

Interface Web Principal

💻 Interface Web Principal

Tela principal do chat onde você pode conversar naturalmente com as APIs. Interface limpa e moderna com suporte a markdown..

Tela de Ferramentas

🛠️ Visualização de Ferramentas Web

Tela que mostra todas as ferramentas disponíveis geradas automaticamente das especificações OpenAPI, com métodos HTTP coloridos e descrições claras.

Interface Mobile Home

📱 Interface Mobile - Home

Versão mobile otimizada da interface principal. Design responsivo que se adapta perfeitamente a smartphones e tablets.

Interface Mobile Menu

📱 Interface Mobile - Menu

Navegação otimizada para dispositivos móveis, garantindo acesso rápido a todas as funcionalidades e seções do agente.

Interface Mobile Ferramentas

📱 Interface Mobile - Ferramentas

Visualização mobile das ferramentas disponíveis, com layout otimizado para telas menores e navegação touch-friendly.

🎨 Design Moderno

Interface com gradientes, efeitos glass, animações suaves e design responsivo que funciona perfeitamente em desktop, tablet e mobile.

🛠️ Painel de Ferramentas

Visualize todas as APIs disponíveis organizadas por projeto. Clique em qualquer ferramenta para ver exemplos de como usá-la.

💬 Chat Inteligente

Conversa natural com suporte a markdown, emojis e indicadores de digitação. Sessões únicas para cada usuário.

Experimentar Interface Demo
Funcionalidades Principais

✨ Uma solução completa para integração de IA com APIs

Descubra como o Swagger Agent revoluciona a forma como você interage com APIs através de conversas naturais.

🚀 Chat Inteligente

Interface conversacional que permite interagir com APIs usando linguagem natural. Streaming em tempo real e suporte a markdown.

  • Conversação natural com APIs
  • Streaming de respostas em tempo real
  • Suporte completo a Markdown

💻 Interface Gráfica

Interface web moderna e responsiva com design profissional. Funciona perfeitamente em desktop, tablet e mobile.

  • Design responsivo e moderno
  • Visualização de ferramentas disponíveis
  • Interface intuitiva e amigável
  • Suporte completo a dispositivos móveis

🛠️ Ferramentas Dinâmicas

Geração automática de ferramentas a partir de especificações OpenAPI. Cada endpoint se torna uma ferramenta que o LLM pode usar.

  • Geração automática de ferramentas
  • Suporte completo a OpenAPI 3.0
Conceitos Fundamentais

📚 Entendendo os Pilares da Tecnologia

Vamos explorar cada conceito fundamental que torna possível a integração inteligente entre IA e APIs, com explicações didáticas e exemplos práticos.

🤖 Modelos de Linguagem (LLMs)

Large Language Models (LLMs) são sistemas de IA treinados em enormes volumes de texto para compreender e gerar linguagem humana. Funcionam como um "cérebro digital" que leu milhões de livros e conversas.

🎯 Como Funcionam na Prática

Quando você faz uma pergunta, o LLM usa padrões estatísticos para prever qual seria a resposta mais apropriada, palavra por palavra.

🛠️ Ferramentas (Function Calling)

Imagine um LLM como um cérebro muito inteligente que precisa de "mãos" para interagir com o mundo real. Essas "mãos" são as ferramentas (tools) ou function calling.

🔧 Analogia Prática

É como ter um assistente super inteligente que sabe de tudo, mas precisa de ferramentas específicas: uma calculadora para matemática, um telefone para ligar, uma API para buscar dados.

📋 OpenAPI (Swagger)

OpenAPI é um padrão para descrever APIs REST de forma estruturada. É como um "manual de instruções" detalhado da sua API, legível por humanos e máquinas.

📖 Analogia Simples

Imagine que sua API é um restaurante. O OpenAPI seria o cardápio detalhado que lista todos os pratos (endpoints), ingredientes (parâmetros) e como fazer o pedido (métodos HTTP).

🍃 Spring Boot

Spring Boot é o framework Java mais popular para criar aplicações robustas. Elimina a complexidade de configuração, permitindo focar na lógica de negócio.

🚀 Por Que Spring Boot?

É como ter um "kit de construção" completo para aplicações Java. Você não precisa montar cada peça do zero - o Spring Boot já vem com tudo configurado.

🧠 Spring AI

Spring AI é o framework oficial da Spring para integração com modelos de IA. Fornece abstrações simples para trabalhar com LLMs, eliminando a complexidade de integração.

🎯 O Que o Spring AI Faz

É como ter um "tradutor universal" entre sua aplicação Java e qualquer modelo de IA. Você escreve código Java simples, e ele cuida da comunicação complexa com os LLMs.

🤖 Provedores de IA

Suporte nativo para múltiplos provedores de IA, desde soluções em nuvem até modelos locais. Flexibilidade total para escolher o que melhor se adapta ao seu caso de uso.

🏠 Modelos Locais vs Nuvem

Nuvem: Mais poderosos, pagos por uso
Local: Gratuitos, privados, sem limite de uso

  • OpenAI: GPT-4, GPT-3.5-turbo (nuvem)
  • Ollama: Llama, Mistral, Qwen (local)
  • Anthropic: Claude (nuvem)
  • Google: Gemini (nuvem)
Configuração de Provedores

🤖 Configurando o Provedor de IA

A seleção do provedor de IA (OpenAI ou Ollama) é feita pela propriedade app.ai.provider. Você pode configurá-la via variável de ambiente ou arquivo application.yml.

Opção 1: Usar OpenAI (Padrão)

Ideal para começar rapidamente. Requer uma chave de API e conexão com a internet.

# Método 1: Via Variáveis de Ambiente
export OPENAI_API_KEY="sua_chave_openai_aqui"
export AI_PROVIDER=openai # Opcional (padrão)

# Método 2: Via application.yml
app:
  ai:
    provider: openai
spring:
  ai:
    openai:
      api-key: "sua_chave_openai_aqui"

# Após configurar, execute:
./mvnw spring-boot:run

Opção 2: Usar Modelo Local (Ollama)

Perfeito para uso offline, maior privacidade e experimentação com modelos abertos.

# 1. Inicie o Ollama (se ainda não estiver rodando)
docker run -d --name ollama -p 11434:11434 ollama/ollama:latest
docker exec -it ollama ollama pull qwen2.5:0.5b

# 2. Configure a aplicação
export AI_PROVIDER=ollama
export SPRING_AI_OLLAMA_CHAT_OPTIONS_MODEL="qwen2.5:0.5b"

# 3. Execute a aplicação
./mvnw spring-boot:run

📖 Entendendo a Propriedade `AI_PROVIDER`

A propriedade app.ai.provider controla qual bean de IA será carregado pelo Spring Boot. Apenas um provedor é ativado por vez, garantindo que a aplicação seja leve e sem conflitos.

  • openai: Carrega a configuração para a API da OpenAI (padrão).
  • ollama: Carrega a configuração para o provedor Ollama.

Importante: É necessário reiniciar a aplicação após alterar o valor desta propriedade.

API Reference

🔌 Endpoints Principais

Documentação dos endpoints principais e exemplos de uso da API do Swagger Agent.

💬 Chat Síncrono

POST /api/chat
Content-Type: application/json

{
  "message": "Quais pets estão disponíveis?",
  "sessionId": "sessao-123"
}

Endpoint principal para conversas síncronas. Retorna resposta completa após processamento.

🛠️ Listar Ferramentas

GET /api/tools

# Retorna todas as ferramentas dinâmicas
# geradas a partir das especificações OpenAPI

Lista todas as ferramentas disponíveis com suas descrições e parâmetros.

🌊 Chat Streaming

POST /api/chat/stream
Content-Type: application/json
Accept: text/event-stream

{
  "message": "Explique como funciona o Spring AI",
  "sessionId": "sessao-456"
}

Endpoint para respostas em streaming (Server-Sent Events). Ideal para interfaces em tempo real.

Arquitetura

Ferramenta Como o Sistema Funciona

Entenda o fluxo completo desde a inicialização da aplicação até a resposta inteligente, passando por todas as camadas do sistema.

📊 Arquitetura do Sistema

graph TD subgraph "Interface do Usuário" A["💻 Frontend
(Interface de Chat)"] end subgraph "Backend (Swagger Agent)" B["Controller
(/api/chat)"] C["Orquestrador
(ChatService)"] D["Gerador de Ferramentas
(OpenAPI Parser)"] E["Executor de Ferramentas"] F["Modelo de IA
(Spring AI)"] end subgraph "Configuração" G["📄 Specs OpenAPI
(.yaml)"] end subgraph "Sistemas Externos" H["🌐 API Externa
(Ex: Petstore)"] I["☁️ Provedor LLM
(OpenAI, Ollama, etc.)"] end %% Fluxo de Interação do Usuário A -- "1. Prompt do Usuário" --> B B -- "2. Repassa" --> C C -- "3. Consulta" --> F F -- "4. Decide usar ferramenta" --> C C -- "5. Solicita execução" --> E E -- "6. Chama API" --> H H -- "7. Resposta da API" --> E E -- "8. Retorna resultado" --> C C -- "9. Envia para LLM com resultado" --> F F -- "10. Gera resposta final" --> C C -- "11. Devolve para UI" --> A %% Fluxo de Setup G -- "Lê na inicialização" --> D D -- "Gera e registra Ferramentas" --> E %% Conexão com LLM F-.->I %% Estilos classDef user fill:#e3f2fd,stroke:#1976d2,stroke-width:2px classDef backend fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px classDef config fill:#e8f5e8,stroke:#388e3c,stroke-width:2px classDef external fill:#ffebee,stroke:#d32f2f,stroke-width:2px class A user class B,C,D,E,F backend class G config class H,I external

🏗️ Como o Swagger Agent Funciona

Fluxo do Sistema

O Swagger Agent é um intermediário inteligente que conecta modelos de linguagem (LLMs) a APIs externas através de especificações OpenAPI. O processo funciona em duas fases principais:

📋 Fase 1: Inicialização e Geração de Ferramentas

Durante a inicialização da aplicação, o Swagger Agent:

  • Lê as especificações OpenAPI da pasta openapi-specs/
  • Analisa cada endpoint e gera automaticamente "ferramentas" (tools) que podem ser invocadas por LLMs
  • Registra essas ferramentas como beans do Spring, tornando-as disponíveis para o sistema

🔄 Fase 2: Execução e Interação

Durante uma conversa com o usuário:

  • O usuário envia uma pergunta ou solicitação via interface de chat
  • O LLM analisa a pergunta e decide qual ferramenta usar para responder
  • O agente executa a ferramenta correspondente, fazendo a chamada para a API externa
  • O resultado é processado e retornado ao LLM, que gera uma resposta final para o usuário

💬 ChatClient API

Utilizamos a API fluente do Spring AI para comunicação com modelos de IA, similar ao WebClient. Suporte a OpenAI, Ollama e outros provedores com troca fácil de componentes.

🛠️ Function Calling

Implementamos o sistema de Tools/Function Calling do Spring AI, permitindo que o modelo execute ferramentas dinâmicas geradas a partir de especificações OpenAPI.

🧠 Memória de Conversa

Aproveitamos o sistema de Chat Conversation Memory do Spring AI para manter contexto entre mensagens e sessões únicas para cada usuário.

💬 Experimente o Swagger Agent

Agora que você entende como tudo funciona, que tal testar na prática? Converse naturalmente com APIs e veja a magia acontecer!

💬 Consulta Simples
"Quais pets estão disponíveis na loja?"
🔍 Busca Específica
"Busque informações do pet com ID 123"
➕ Criação de Dados
"Adicione um novo pet chamado Buddy"
🛠️ Exploração
"Quais operações posso fazer com pets?"

💡 Dicas para Testar

  • Seja natural: Fale como falaria com uma pessoa
  • Explore: Pergunte "o que posso fazer?" para descobrir funcionalidades
  • Seja específico: Use IDs ou nomes quando souber
  • Teste limites: Veja como a IA lida com perguntas complexas

Sobre o Demo: Utiliza dados de exemplo do Petstore API. É um ambiente seguro para experimentar sem afetar dados reais.