Enriqueça DataFrames com análises de texto usando LLMs. Extraia informações estruturadas de textos com Pydantic.
Project description
DataFrameIt
Enriqueça DataFrames com LLMs de forma simples e estruturada.
DataFrameIt processa textos em DataFrames usando Modelos de Linguagem (LLMs) e extrai informações estruturadas definidas por modelos Pydantic.
Documentação Completa | Referência para LLMs
Instalação
pip install dataframeit[google] # Google Gemini (recomendado)
pip install dataframeit[openai] # OpenAI
pip install dataframeit[anthropic] # Anthropic Claude
Configure sua API key:
export GOOGLE_API_KEY="sua-chave" # ou OPENAI_API_KEY, ANTHROPIC_API_KEY
Exemplo Rápido
from pydantic import BaseModel
from typing import Literal
import pandas as pd
from dataframeit import dataframeit
# 1. Defina o que extrair
class Sentimento(BaseModel):
sentimento: Literal['positivo', 'negativo', 'neutro']
confianca: Literal['alta', 'media', 'baixa']
# 2. Seus dados
df = pd.DataFrame({
'texto': [
'Produto excelente! Superou expectativas.',
'Péssimo atendimento, nunca mais compro.',
'Entrega ok, produto mediano.'
]
})
# 3. Processe!
resultado = dataframeit(df, Sentimento, "Analise o sentimento do texto.")
print(resultado)
Saída:
| texto | sentimento | confianca |
|---|---|---|
| Produto excelente! ... | positivo | alta |
| Péssimo atendimento... | negativo | alta |
| Entrega ok... | neutro | media |
Funcionalidades
- Múltiplos providers: Google Gemini, OpenAI, Anthropic, Cohere, Mistral via LangChain
- Múltiplos tipos de entrada: DataFrame, Series, list, dict
- Saída estruturada: Validação automática com Pydantic
- Resiliência: Retry automático com backoff exponencial
- Performance: Processamento paralelo, rate limiting configurável
- Busca web: Integração com Tavily para enriquecer dados
- Tracking: Monitoramento de tokens e métricas de throughput
- Configuração per-field: Prompts e parâmetros de busca personalizados por campo (v0.5.2+)
Configuração Per-Field (Novo em v0.5.2)
Configure prompts e parâmetros de busca específicos para cada campo usando json_schema_extra:
from pydantic import BaseModel, Field
class MedicamentoInfo(BaseModel):
# Campo com prompt padrão
principio_ativo: str = Field(description="Princípio ativo do medicamento")
# Campo com prompt customizado (substitui o prompt base)
doenca_rara: str = Field(
description="Classificação de doença rara",
json_schema_extra={
"prompt": "Busque em Orphanet (orpha.net). Analise: {texto}"
}
)
# Campo com prompt adicional (append ao prompt base)
avaliacao_conitec: str = Field(
description="Avaliação da CONITEC",
json_schema_extra={
"prompt_append": "Busque APENAS no site da CONITEC (gov.br/conitec)."
}
)
# Campo com parâmetros de busca customizados
estudos_clinicos: str = Field(
description="Estudos clínicos relevantes",
json_schema_extra={
"prompt_append": "Busque estudos clínicos recentes.",
"search_depth": "advanced",
"max_results": 10
}
)
# Requer search_per_field=True
resultado = dataframeit(
df,
MedicamentoInfo,
"Analise o medicamento: {texto}",
use_search=True,
search_per_field=True,
)
Opções disponíveis em json_schema_extra:
| Opção | Descrição |
|---|---|
prompt ou prompt_replace |
Substitui completamente o prompt base |
prompt_append |
Adiciona texto ao prompt base |
search_depth |
"basic" ou "advanced" (override per-field) |
max_results |
Número de resultados de busca (1-20) |
Documentação
- Início Rápido
- Guias
- Referência da API
- Referência para LLMs - Página compacta otimizada para assistentes de código
Exemplos
Veja a pasta example/ para notebooks Jupyter com casos de uso completos.
Licença
MIT
Project details
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 dataframeit-0.5.4.tar.gz.
File metadata
- Download URL: dataframeit-0.5.4.tar.gz
- Upload date:
- Size: 38.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0e87291db010a191b615633cd6c6a479d2008bed4caca03b3cfbb737c1066473
|
|
| MD5 |
55993931f3c286b2b1c07a0649a98fb7
|
|
| BLAKE2b-256 |
9d24cd5e5045f29901940b12d7348a089a28ac48b4bf766640c8db691902b197
|
File details
Details for the file dataframeit-0.5.4-py3-none-any.whl.
File metadata
- Download URL: dataframeit-0.5.4-py3-none-any.whl
- Upload date:
- Size: 44.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4882957b92571d9221a499f21ba7d9205ffd25ac01cfe82af78fa1fc0516ffad
|
|
| MD5 |
cc80e5a63362878d432d728bc583e326
|
|
| BLAKE2b-256 |
107a78636615a08d5707553e8235fe1ec6f7cfdfe3fc4385ba1c97a543ed5871
|