Spaces:
Paused
Paused
from openai import OpenAI | |
from groq import Groq | |
class LLM: | |
def __init__(self, api_key, modelo, temperatura=0.5, quantidade_tokens=2048, mensagem=""): | |
self.temperatura = temperatura | |
self.quantidade_tokens = quantidade_tokens | |
self.mensagem = mensagem | |
self.modelo = modelo | |
self.api_key = api_key | |
self.openai_client = None | |
self.groq_client = None | |
def _init_openai_client(self): | |
if not self.openai_client: | |
self.openai_client = OpenAI(api_key=self.api_key) | |
def _init_groq_client(self): | |
if not self.groq_client: | |
self.groq_client = Groq(api_key=self.api_key) | |
def gerar_resposta_openai(self): | |
self._init_openai_client() | |
messages = [] | |
if self.mensagem.strip(): | |
messages.append({"role": "system", "content": self.mensagem}) | |
messages.append({"role": "user", "content": self.prompt}) | |
response = self.openai_client.chat.completions.create( | |
model=self.modelo, | |
messages=messages, | |
temperature=self.temperatura, | |
max_tokens=self.quantidade_tokens, | |
top_p=1, | |
frequency_penalty=0, | |
presence_penalty=0 | |
) | |
return response.choices[0].message.content.strip() | |
def gerar_resposta_groq(self): | |
self._init_groq_client() | |
messages = [] | |
if self.mensagem.strip(): | |
messages.append({"role": "system", "content": self.mensagem}) | |
messages.append({"role": "user", "content": self.prompt}) | |
completion = self.groq_client.chat.completions.create( | |
model=self.modelo, | |
messages=messages, | |
temperature=self.temperatura, | |
max_tokens=self.quantidade_tokens, | |
top_p=0.65, | |
stream=False, # Mudamos para False para manter consistência com OpenAI | |
stop=None | |
) | |
return completion.choices[0].message.content.strip() | |
def gerar_resposta(self): | |
"""Método principal para gerar respostas baseado no modelo selecionado""" | |
if "gpt" in self.modelo: # Modelos OpenAI | |
return self.gerar_resposta_openai() | |
elif "llama" in self.modelo or "mixtral" in self.modelo: # Modelos Groq | |
return self.gerar_resposta_groq() | |
else: | |
raise ValueError(f"Modelo não suportado: {self.modelo}") | |