From 11688a2b787125c063cd8625b38e556283d892b8 Mon Sep 17 00:00:00 2001 From: Renato Rosa Date: Wed, 19 Aug 2026 19:58:17 -0300 Subject: [PATCH] Adicionar app/services/external_model_service.py --- app/services/external_model_service.py | 46 ++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 app/services/external_model_service.py diff --git a/app/services/external_model_service.py b/app/services/external_model_service.py new file mode 100644 index 0000000..7a574fa --- /dev/null +++ b/app/services/external_model_service.py @@ -0,0 +1,46 @@ +import requests +import os + +class ExternalModelService: + def generate(self, provider: str, model: str, prompt: str): + if provider == "openai": + return self.openai(model, prompt) + + if provider == "anthropic": + return self.anthropic(model, prompt) + + if provider == "mistral": + return self.mistral(model, prompt) + + return "Erro: provider desconhecido." + + def openai(self, model, prompt): + url = "https://api.openai.com/v1/chat/completions" + headers = {"Authorization": f"Bearer {os.getenv('OPENAI_API_KEY')}"} + payload = { + "model": model, + "messages": [{"role": "user", "content": prompt}] + } + r = requests.post(url, json=payload, headers=headers) + return r.json()["choices"][0]["message"]["content"] + + def anthropic(self, model, prompt): + url = "https://api.anthropic.com/v1/messages" + headers = {"x-api-key": os.getenv("ANTHROPIC_API_KEY")} + payload = { + "model": model, + "max_tokens": 4096, + "messages": [{"role": "user", "content": prompt}] + } + r = requests.post(url, json=payload, headers=headers) + return r.json()["content"][0]["text"] + + def mistral(self, model, prompt): + url = "https://api.mistral.ai/v1/chat/completions" + headers = {"Authorization": f"Bearer {os.getenv('MISTRAL_API_KEY')}"} + payload = { + "model": model, + "messages": [{"role": "user", "content": prompt}] + } + r = requests.post(url, json=payload, headers=headers) + return r.json()["choices"][0]["message"]["content"]