Código-fonte para llm4time.core.models.lmstudio

"""
Módulo para integração com modelos LM Studio em séries temporais.
"""

from .base import Model
import lmstudio as lms
import time


[documentos] class LMStudio(Model): """ Classe para integração com modelos LM Studio para previsão de séries temporais. Attributes: model (str): Nome ou caminho do modelo LM Studio. """
[documentos] def __init__(self, model: str) -> None: """ Inicializa a classe LMStudio com o modelo especificado. Args: model (str): Nome ou caminho do modelo LM Studio. """ self.model = model
[documentos] def predict( self, content: str, temperature: float = 0.7, **kwargs ) -> tuple[str, int, int, float]: """ Envia uma requisição para o modelo LM Studio e retorna a resposta com métricas. Args: content (str): Conteúdo da mensagem do usuário a ser enviada. temperature (float, optional): Grau de aleatoriedade da resposta. Padrão: 0.7. **kwargs: Argumentos adicionais passados para `client.respond`. Returns: tuple[str, int, int, float]: Tupla contendo: - response: Resposta do modelo. - prompt_tokens: Número de tokens usados no prompt. - response_tokens: Número de tokens usados na resposta. - response_time: Tempo total da requisição em segundos. Examples: >>> response, prompt_tokens, response_tokens, time_sec = model.predict( ... content="Série temporal: [199.99, 190.10, 180.01, 178.45, 160.33]. Preveja próximos 3 valores.", ... temperature=0.5 ... ) >>> print(response) '[149.25, 140.10, 128.50]' """ client = lms.llm(self.model) config = {"temperature": temperature} config.update(kwargs) start_time = time.time() response = client.respond(content, config=config) end_time = time.time() response_text = response.text if hasattr( response, 'text') else str(response) response_text = self._clean_response(response_text) total_tokens_prompt = response.stats.prompt_tokens_count if hasattr( response, "stats") else 0 total_tokens_response = response.stats.predicted_tokens_count if hasattr( response, "stats") else 0 return response_text, total_tokens_prompt, total_tokens_response, end_time - start_time