Sources de données distantes
Chargez dynamiquement les données d'annotation dans Potato depuis des URL HTTP, des buckets S3, Google Cloud Storage, des bases PostgreSQL et les jeux de données Hugging Face, sans fichier local.
Potato sait charger les données d'annotation depuis d'autres sources que des fichiers locaux : URL, services de stockage dans le cloud, bases de données et jeux de données Hugging Face.
Vue d'ensemble
Le système de sources de données apporte :
- Plusieurs types de sources : URL, Google Drive, Dropbox, S3, Hugging Face, Google Sheets, bases SQL
- Chargement partiel : charger les données par tranches pour les gros jeux de données
- Chargement incrémental : charger automatiquement de nouvelles données à mesure que l'annotation avance
- Mise en cache : conserver les fichiers distants en local pour éviter de les retélécharger
- Identifiants protégés : substitution par variables d'environnement pour les secrets
Configuration
Ajoutez data_sources à votre config.yaml :
data_sources:
- type: file
path: "data/annotations.jsonl"
- type: url
url: "https://example.com/data.jsonl"Types de sources
Fichier local
data_sources:
- type: file
path: "data/annotations.jsonl"URL HTTP/HTTPS
data_sources:
- type: url
url: "https://example.com/data.jsonl"
headers:
Authorization: "Bearer ${API_TOKEN}"
max_size_mb: 100
timeout_seconds: 30
block_private_ips: true # SSRF protectionAmazon S3
data_sources:
- type: s3
bucket: "my-annotation-data"
key: "datasets/items.jsonl"
region: "us-east-1"
access_key_id: "${AWS_ACCESS_KEY_ID}"
secret_access_key: "${AWS_SECRET_ACCESS_KEY}"Prérequis : pip install boto3
Google Drive
data_sources:
- type: google_drive
url: "https://drive.google.com/file/d/xxx/view?usp=sharing"Pour les fichiers privés, utilisez credentials_file avec un compte de service. Prérequis : pip install google-api-python-client google-auth
Dropbox
data_sources:
- type: dropbox
url: "https://www.dropbox.com/s/xxx/file.jsonl?dl=0"Pour les fichiers privés, utilisez access_token: "${DROPBOX_TOKEN}". Prérequis : pip install dropbox
Jeux de données Hugging Face
data_sources:
- type: huggingface
dataset: "squad"
split: "train"
token: "${HF_TOKEN}" # For private datasets
id_field: "id"
text_field: "context"Prérequis : pip install datasets
Google Sheets
data_sources:
- type: google_sheets
spreadsheet_id: "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
sheet_name: "Sheet1"
credentials_file: "credentials/service_account.json"Prérequis : pip install google-api-python-client google-auth
Base de données SQL
data_sources:
- type: database
connection_string: "${DATABASE_URL}"
query: "SELECT id, text, metadata FROM items WHERE status = 'pending'"Ou avec des paramètres séparés :
data_sources:
- type: database
dialect: postgresql
host: "localhost"
port: 5432
database: "annotations"
username: "${DB_USER}"
password: "${DB_PASSWORD}"
table: "items"Prérequis : pip install sqlalchemy psycopg2-binary (PostgreSQL) ou pymysql (MySQL)
Chargement partiel et incrémental
Pour les gros jeux de données, activez le chargement partiel :
partial_loading:
enabled: true
initial_count: 1000
batch_size: 500
auto_load_threshold: 0.8 # Auto-load when 80% annotatedMise en cache
Les sources distantes sont mises en cache en local :
data_cache:
enabled: true
cache_dir: ".potato_cache"
ttl_seconds: 3600 # 1 hour
max_size_mb: 500Gestion des identifiants
Passez par des variables d'environnement pour les valeurs sensibles :
data_sources:
- type: url
url: "https://api.example.com/data"
headers:
Authorization: "Bearer ${API_TOKEN}"
credentials:
env_substitution: true
env_file: ".env"Sources multiples
Combinez des données venant de plusieurs sources :
data_sources:
- type: file
path: "data/base.jsonl"
- type: url
url: "https://example.com/extra.jsonl"
- type: s3
bucket: "my-bucket"
key: "annotations/batch1.jsonl"Compatibilité ascendante
La configuration data_files reste utilisable en parallèle de data_sources :
data_files:
- "data/existing.jsonl"
data_sources:
- type: url
url: "https://example.com/additional.jsonl"Sécurité
- Les sources URL bloquent par défaut les adresses IP privées ou internes (protection contre le SSRF)
- Ne versionnez jamais d'identifiants
- Utilisez la syntaxe
${VAR_NAME}pour les secrets - Rangez les fichiers
.envhors de votre dépôt
Pour aller plus loin
- Formats de données - Référence du format des données d'entrée
- Tableau de bord d'administration - Suivre l'état des sources de données
Pour les détails d'implémentation, consultez la documentation source.