Adicionar app/services/external_model_service.py
This commit is contained in:
@@ -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"]
|
||||||
Reference in New Issue
Block a user