Um pacote para previsão de séries temporais usando modelos de linguagem.
Project description
Get Started • Documentação • Referências • Contato
🧩 Get Started
LLM4Time é uma biblioteca Python para previsão de séries temporais com modelos de linguagem (LLMs). Ela fornece uma arquitetura modular que abrange:
- Pré-processamento e tratamento de dados
- Geração de prompts
- Previsão com LLMs
- Avaliação de métricas
- Visualização interativa
Instalação
pip install llm4time
Rodando a interface Streamlit
Além disso, disponibilizamos uma interface via Streamlit, proporcionando uma interação mais intuitiva e prática com a biblioteca.
Siga os passos abaixo para clonar o repositório, configurar o ambiente e executar a aplicação.
1. Clone o repositório
git clone https://github.com/zairobastos/LLM4Time.git
cd LLM4Time
2. Crie e ative um ambiente virtual (Opcional)
python -m venv venv
source venv/bin/activate # Bash/Zsh
source venv/bin/activate.fish # Fish Shell
3. Instale as dependências
python -m pip install --upgrade pip
pip install -r requirements.txt -r requirements-streamlit.txt
4. Execute a aplicação
Usando python 🐍
python app/main.py
Acesse a aplicação em
http://localhost:8501
Ou usando docker 🐋
docker compose up
Pré-processamento e tratamento de dados
1. Carregamento dos dados
from llm4time.core.data import loader
# Cria um dataset com as colunas 'date' e 'value'.
df = loader.load_data(
'etth2.csv', # Caminho do arquivo CSV com os dados
date_col='date', # Nome da coluna que contém as datas/timestamps
value_col='OT', # Nome da coluna que contém os valores da série temporal
duplicates='first' # Como tratar linhas duplicadas: 'first' mantém a primeira ocorrência
)
2. Pré-processamento
from llm4time.core.data import preprocessor
# Garante que todas as datas dentro do intervalo estejam presentes.
df = preprocessor.normalize(
df,
freq='h', # Frequência da série temporal ('h' = hora, 'd' = dia, etc.)
start='2016-07-01 00:00:00',
end='2018-06-26 19:00:00'
)
3. Imputação de dados ausentes
from llm4time.core.data import imputation
# Substitui os valores ausentes pela média da coluna 'value'.
df = imputation.mean(df)
4. Divisão dos dados
from llm4time.core.data import preprocessor
# Divide o conjunto de dados em treinamento e validação
train, y_val = preprocessor.split(
df,
start_date='2016-06-01 00:00:00', # Início do conjunto de treinamento
end_date='2016-12-01 00:00:00', # Fim do conjunto de treinamento
periods=24 # Número de períodos para previsão
)
Geração de prompts
5. Gerando prompt zero-shot
from llm4time.core import prompt
from llm4time.core import PromptType, TSFormat, TSType
content = prompt.generate(
train, # Conjunto de treino [(date, value), ...]
periods=24, # Número de períodos que queremos prever
prompt_type=PromptType.ZERO_SHOT, # Tipo de prompt: ZERO_SHOT (sem exemplos)
ts_format=TSFormat.ARRAY, # Formato da série temporal
ts_type=TSType.NUMERIC # Tipo de codificação dos valores da série
)
Previsão com LLMs
6. Instanciando um modelo OpenAI
from llm4time.core.models import OpenAI
model = OpenAI(
model='gpt-4o', # Nome do modelo OpenAI a ser utilizado.
api_key='...', # Chave de API para autenticação no serviço OpenAI.
base_url='..' # URL base do endpoint OpenAI.
)
7. Gerando uma previsão
# Gera a previsão
response, prompt_tokens, response_tokens, time_sec = model.predict(
content, # Prompt previamente gerado
temperature=0.7, # Grau de aleatoriedade da resposta
max_tokens=1000 # Número máximo de tokens na resposta
)
print("Resposta do modelo:", response)
print("Número de tokens do prompt:", prompt_tokens)
print("Número de tokens da resposta:", response_tokens)
print("Tempo de execução (s):", time_sec)
Avaliação de métricas
8. Métricas de erro
from llm4time.core import formatter
from llm4time.core.metrics import evaluate
# Converte a string da resposta em uma lista numérica.
y_pred = formatter.parse(
response,
ts_format=TSFormat.ARRAY,
ts_type=TSType.NUMERIC
)
"""
sMAPE: Erro percentual simétrico médio.
MAE: Erro absoluto médio.
RMSE: Raiz do erro quadrático médio.
"""
smape, mae, rmse = evaluate(y_val, y_pred)
print(f"sMAPE: {smape}")
print(f"MAE: {mae}")
print(f"RMSE: {rmse}")
Visualização interativa
9. Gráficos comparativos entre valores reais e previstos
from llm4time.visualization import plots
# Gera um gráfico comparativo entre valores reais e previstos.
plots.plot_forecast("Comparação entre valores reais e previstos", y_val, y_pred)
# Gera um gráfico de barras comparando estatísticas descritivas.
plots.plot_forecast_statistics("Comparação estatística", y_val, y_pred)
🔍 Referências
@article{zairo2025prompt,
title={Prompt-Driven Time Series Forecasting with Large Language Models},
author={Zairo Bastos and João David Freitas and José Wellington Franco and Carlos Caminha},
journal={Proceedings of the 27th International Conference on Enterprise Information Systems - Volume 1: ICEIS},
year={2025}
}
👥 Equipe
|
Zairo Bastos Mestrando 📧 🔗 |
Wesley Barbosa Graduando 📧 🔗 |
Fernanda Scarcela Graduanda 📧 🔗 |
Carlos Caminha Professor Orientador 📧 |
José Wellington Franco Professor Orientador 📧 |
📄 Licença
Este projeto está licenciado sob a MIT License.
📬 Contato
Em caso de dúvidas, sugestões ou feedback:
- 📧 Email: zairobastos@gmail.com
- 🔗 LinkedIn: Zairo Bastos
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file llm4time-0.0.9.tar.gz.
File metadata
- Download URL: llm4time-0.0.9.tar.gz
- Upload date:
- Size: 37.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ac6da43b976f9ea9a83fe9c610299057be4e397af08ddac15438bdf4cdb8bdeb
|
|
| MD5 |
7996f59e089fd04beea5319a9e732ea9
|
|
| BLAKE2b-256 |
669cbcf22b267c6708890af14ed2ae5565e80dbaaf12aa1d1e739d314320087b
|
File details
Details for the file llm4time-0.0.9-py3-none-any.whl.
File metadata
- Download URL: llm4time-0.0.9-py3-none-any.whl
- Upload date:
- Size: 57.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e90843f1714dfe3377e0ac2755e0421310f3114f54b63215be29846bf7e01a95
|
|
| MD5 |
f8e24fc6035621960f758a922ea72697
|
|
| BLAKE2b-256 |
becc0b207ef3d7f315a038c2ed3a9188d44c69d53a5c4571ac2737dd83d198e8
|