Skip to content

Mapeamento de features

Daniel Rezende edited this page Mar 12, 2025 · 3 revisions

Esta parte lida com os endpoints disponíveis e como eles se comportam. Note que as respostas “felizes” são exemplos e que, na prática, podem ocorrer erros. Questione sempre se o comportamento esperado condiz com a realidade.


1. Fallback e Seleção de Modelo

1.1. feature/simple-fallback ✅

  • Descrição: Envia um texto para diferentes LLMs com fallback automático.

  • Endpoint: POST /v1/invoke

  • Requisição:

    {
      "input": "bom dia"
    }
  • Resposta (sucesso):

    {
      "output": "bom dia Daniel",
      "model-used": "gemini"
    }
  • Resposta (falha total):

    {
      "error": "Não foi possível concluir a chamada"
    }

1.2. feature/nvidia-fallback ✅

  • Descrição: Envia um texto para o classificador NVIDIA e direciona para o tier necessário.

  • Endpoint: POST /v1/invoke

  • Requisição:

    {
      "input": "bom dia"
    }
  • Resposta:

    {
      "output": "bom dia Daniel",
      "model-used": "gemini"
    }

1.3. feature/tier-model ✅

  • Descrição: Permite definir o tipo de fallback, entre:

    • fast: Modelos rápidos e pequenos.
    • mid: Modelos medianos.
    • reasoning: Foco na qualidade da resposta.
    • latency: Foco na baixa latência.
  • Endpoint: POST /v1/invoke

  • Requisição:

    {
      "input": "bom dia",
      "tier-model": "fast | mid | reasoning | latency" 
    }
  • Resposta:

    {
      "output": "bom dia Daniel",
      "model-used": "gemini"
    }

1.4. feature/fallback-ordening ✅

  • Descrição: Define a ordem de fallback das LLMs. Importante: escolha entre definir um fallback específico ou seu tipo, NUNCA os dois.

  • Endpoint: POST /v1/invoke

  • Requisição (exemplo 1 – fallback específico):

    {
      "input": "bom dia",
      "fallback": ["chatgpt", "deepseek"]
    }
  • Requisição (exemplo 2 – por tipo):

    {
      "input": "bom dia",
      "tier-model": "fast | mid | reasoning | latency" 
    }
  • Resposta:

    {
      "output": "bom dia Daniel",
      "model-used": "deepseek"
    }

1.5. feature/streams


2. Endpoints com Processamento de Imagem

2.1. feature/send-image?

  • Descrição: Envia texto juntamente com arquivos (PDF ou imagem) para processamento. (Validação do tipo de arquivo é necessária.)

  • Endpoint: POST /v1/invoke-image?

  • Requisição:

    {
      "input": "Analise esta imagem para mim e gere uma imagem resultante",
      "file_path": ["file=@caminho/do/arquivo.pdf", "file=@caminho/do/arquivo2.png"]
    }
  • Resposta:

    {
      "output": "bom dia Daniel",
      "output-image": "image_path",
      "model-used": "mistral"
    }

2.2. feature/send-image-fallback

  • Descrição: Permite selecionar as LLMs por fallback ao processar texto e arquivos.

  • Endpoint: POST /v1/invoke-image?

  • Requisição:

    {
      "input": "Desenhe uma maça caindo do céu",
      "file_path": ["file=@caminho/do/arquivo.pdf", "file=@caminho/do/arquivo2.png"],
      "fallback": ["chatgpt", "deepseek"]
    }
  • Resposta:

    {
      "output": "",
      "output-image": "file=@caminho/do/arquivo.png",
      "model-used": "mistral"
    }

2.3. feature/send-image-fallback-type

  • Descrição: Além de enviar o arquivo, permite selecionar as LLMs por tipo de fallback. Atenção: ao usar tier-model, não se pode usar fallback.

  • Endpoint: POST /v1/invoke-image?

  • Requisição:

    {
      "input": "Desenhe uma maça caindo do céu",
      "file_path": ["file=@caminho/do/arquivo.pdf", "file=@caminho/do/arquivo2.png"],
      "tier-model": "fast | mid | reasoning | latency" 
    }
  • Resposta:

    {
      "output": "",
      "output-image": "file=@caminho/do/arquivo.png",
      "model-used": "mistral"
    }

3. Funcionalidades Específicas NVIDIA

3.1. feature/nvidia-cpu-gpu

  • Descrição: Seleciona automaticamente entre GPU e CPU, conforme a máquina.

3.2. feature/nvidia-async ✅

  • Descrição: Garante que a API trate requisições assíncronas do classifier.py.

4. RAG (Retrieval-Augmented Generation)

feature/RAG-simple

Endpoints e Descrições:

Endpoint Método Descrição
/v1/rag/store POST Armazena embeddings de documentos (retorna ou requer um token).
/v1/rag/query/{token} GET Recupera documentos vinculados ao token.
/v1/rag/invoke/{token} POST Consulta e gera resposta com LLM usando os documentos recuperados.
/v1/rag/delete/{token} DELETE Exclui um documento específico vinculado a um token.

5. Monitoramento

feature/monitoring-db

  • Descrição: Cria um banco de dados para armazenar dados de monitoramento.

feature/monitoramento-de-custo

  • Descrição: Monitora o valor gasto por requisição ou por período, considerando o modelo de cobrança de cada provedor.

feature/chat-token-usage-tracking

6. Memória sem utilização de arquivos

feature/history-by-cookies ❌

  • Descrição: Garante persistência do histórico de conversas do usuário.
  • Porque não foi implementado: A utilização de cookies não garante a persistência de dados em diferentes dispositivos.

feature/memória-das-ias-basica ✅

  • Descrição: Ter persistência de conversas em banco de dados, vinculado a um token.

feature/memoria-com-resumo-de-conversa

  • Descrição: Utilização de resumo de conversa após x interações.

feature/chat-model-caching

7. Autênticação

feature/jwt ✅

feature/Restringir-acesso-ao-histórico-com-token ✅

Garantir que cada usuário acesse apenas seu próprio context_token, impedindo o acesso a tokens de outros usuários.