Skip to main content
Glama
openai-integration.md5.42 kB
# Integração FitSlot x OpenAI Este guia descreve como habilitar as novas integrações com a OpenAI adicionadas ao **FitSlot MCP Server** e como consumi-las a partir do backend `fitslot-api`. O objetivo é entregar respostas inteligentes para o chatbot e análises personalizadas de bioimpedância com o menor custo operacional possível. ## Visão Geral As seguintes funcionalidades passaram a utilizar modelos OpenAI (com fallback local caso a API não esteja configurada): - **Chatbot de suporte**: respostas contextualizadas às dúvidas dos usuários com base nas FAQs e ações sugeridas no aplicativo. - **Análise de PDFs de bioimpedância**: síntese personalizada das medições extraídas do PDF e recomendações práticas. Para reduzir custos, o serviço utiliza o modelo `gpt-4o-mini` por padrão, limitado a saídas curtas e objetivas. É possível ajustar o modelo e os limites de tokens via variáveis de ambiente. ## Configuração de Ambiente Defina as variáveis abaixo tanto no MCP server quanto no backend `fitslot-api` (quando precisar chamar a OpenAI diretamente): | Variável | Obrigatória | Descrição | | --- | --- | --- | | `OPENAI_API_KEY` | Sim | Chave de API obtida no painel da OpenAI. | | `OPENAI_MODEL` | Não (default `gpt-4o-mini`) | Modelo a ser utilizado. Prefira modelos "mini" para menor custo. | | `OPENAI_ORG` | Não | ID de organização (se aplicável). | | `OPENAI_PROJECT` | Não | ID de projeto (se aplicável). | | `OPENAI_TEMPERATURE` | Não | Ajuste da criatividade. Valores baixos (0.2) reduzem variação e tokens. | | `OPENAI_MAX_TOKENS` | Não | Limite máximo de tokens de saída. O padrão é 400. | Exemplo de configuração `.env`: ```bash OPENAI_API_KEY=sk-xxxx OPENAI_MODEL=gpt-4o-mini OPENAI_TEMPERATURE=0.2 OPENAI_MAX_TOKENS=400 ``` ## Como o MCP Server usa a OpenAI No arquivo `src/index.ts`, o servidor instancia `OpenAIService` com base nas variáveis de ambiente e injeta o serviço nos componentes: - `ChatbotService` usa `generateSupportAnswer` para enriquecer as respostas. Sem API key, o comportamento anterior (respostas baseadas em FAQ) é mantido. - `PDFAnalysisService` usa `generateBioimpedanceInsights` para produzir análises e recomendações personalizadas. Sem API key, permanece a lógica heurística pré-existente. ## Consumindo a partir do backend `fitslot-api` O backend pode aproveitar os mesmos serviços utilizando a biblioteca `fitslot-mcp` como dependência (ou replicando a chamada HTTP para o MCP via MCP/LLM). Abaixo, um exemplo em TypeScript de uso direto dos serviços: ```ts import { OpenAIService } from 'fitslot-mcp/dist/services/openai.service.js'; import { ChatbotService } from 'fitslot-mcp/dist/services/chatbot.service.js'; import { PDFAnalysisService } from 'fitslot-mcp/dist/services/pdf-analysis.service.js'; const openAIService = new OpenAIService({ apiKey: process.env.OPENAI_API_KEY, model: process.env.OPENAI_MODEL ?? 'gpt-4o-mini', temperature: Number(process.env.OPENAI_TEMPERATURE ?? 0.2), maxTokens: Number(process.env.OPENAI_MAX_TOKENS ?? 400) }); const chatbotService = new ChatbotService(openAIService); const pdfService = new PDFAnalysisService(openAIService); // 1) Endpoint para suporte export async function postSupportAssistant(req, res) { const { question } = req.body; const response = await chatbotService.getChatbotResponse(question); res.json({ success: true, data: response }); } // 2) Endpoint para análise de bioimpedância export async function postBioimpedanceAnalysis(req, res) { const { base64Pdf } = req.body; const report = await pdfService.analyzeBioimpedancePDFFromBase64(base64Pdf); res.json({ success: true, data: report }); } ``` ### Fluxo sugerido de integração 1. **Controller HTTP** (`fitslot-api`): recebe a requisição do app e delega para os serviços acima. 2. **Serviços de domínio**: utilizam `ChatbotService` ou `PDFAnalysisService`, que automaticamente chamam a OpenAI (se configurada) para enriquecer as respostas. 3. **Retorno para o App**: envie para o cliente o objeto retornado pelo serviço, que já contém mensagens em português e recomendações estruturadas. > Caso o backend prefira consumir o MCP via LLM Client/Protocol, exponha os tools `ask_support` e `analyze_pdf` do `fitslot-mcp`. A configuração da OpenAI no servidor garante que a resposta virá enriquecida com IA, sem ajustes adicionais no cliente MCP. ## Boas práticas para manter o custo baixo - Use modelos "mini" (`gpt-4o-mini`, `o4-mini`) e mantenha `maxTokens` ≤ 400. - Cacheie respostas de FAQs comuns no backend para reduzir chamadas repetidas. - Valide entradas no backend para evitar perguntas vazias ou PDFs inválidos, evitando requisições desnecessárias. - Monitore a taxa de erros e quedas de fallback para identificar problemas de configuração. ## Troubleshooting - **Respostas sem IA**: confirme se `OPENAI_API_KEY` está definido e válido. O log do MCP exibirá um aviso quando a chave estiver ausente. - **Erros de JSON na análise**: o serviço retorna ao fallback heurístico automaticamente; cheque os logs para detalhes. - **Custos elevados**: reduza `OPENAI_MAX_TOKENS`, utilize caching ou degrade o modelo para uma opção ainda mais econômica. Seguindo estas orientações, o backend `fitslot-api` consegue oferecer experiências inteligentes aos usuários mantendo controle sobre custo e confiabilidade.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/osmarsant/fitslot-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server