Documentation développeur

Créez avec April Flow.

Utilisez le SDK Java April Flow, le SDK Python et l’outil CLI de scraping pour connecter des applications, téléverser des documents, interroger des Collections, créer des sessions de prompts et concevoir des flux de travail alimentés par l’IA.

Vue d’ensemble

April Flow comme plateforme de développement

April Flow est une plateforme d’IA souveraine pour les documents et les données. Les développeurs peuvent l’utiliser à partir de services backend, scripts, workers, outils en ligne de commande et applications internes.

Les SDK exposent des API typées pour les Collections, téléversements, documents, prompts, identité, facturation, messages de support et notifications. Le projet de scraping démontre comment un outil Python peut collecter du contenu et l’envoyer vers April Flow.

Modèle d’intégration typique

Application, worker, script, ou CLI
  -> SDK April Flow
      -> Collections
      -> Téléversements
      -> Documents
      -> Sessions de prompts
      -> Notifications
  -> Votre assistant, scraper, automatisation ou flux de travail produit

SDK Java

SDK Java pour les applications côté serveur, services backend, traitements par lots et systèmes basés sur la JVM.

SDK Python

SDK Python pour les scripts, outils CLI, automatisations, scraping, traitement de données et services backend.

CLI de scraping

Un projet de scraping Python utilisant le SDK Python April Flow pour collecter et téléverser du contenu.

Dépôt

Structure du dépôt

Le dépôt regroupe les SDK et les outils au même endroit afin que les développeurs puissent consulter les deux implémentations de langage ainsi que l’exemple de scraper.

aprilflow-sdk
  aprilflow-java-sdk
    SDK Java
    Projet Maven
    Java 17+
    Client HTTP Jersey
    Sérialisation JSON Jackson
    Prise en charge des notifications SSE

  aprilflow-python-sdk
    SDK Python
    Python 3.10+
    Client HTTP httpx
    Modèles pydantic
    Prise en charge du flux de notifications

  aprilflow-scraper
    CLI de scraping Python
    Utilise aprilflow-python-sdk
    Utilise Scrapy et Playwright
    Fournit des commandes de collection, scraping, téléversement et shell
    Conçu autour de profils de scraping extensibles

Prérequis

Prérequis

SDK Java

  • Java 17 ou version ultérieure
  • Maven
  • URL de base April Flow
  • Clé utilisateur April Flow

SDK Python

  • Python 3.10 ou version ultérieure
  • httpx
  • pydantic
  • URL de base April Flow
  • Clé utilisateur April Flow

Conservez les clés utilisateur côté serveur

Les clés utilisateur April Flow doivent être stockées uniquement sur des systèmes backend de confiance. Ne les intégrez pas dans du JavaScript de navigateur, des applications mobiles, des dépôts publics ou des bundles frontend téléchargeables.

Installation

Installer les SDK

Utilisez le SDK Java depuis Maven ou installez-le localement pendant le développement. Utilisez le SDK Python en mode éditable pour le développement local.

<dependency>
    <groupId>com.aprilsoftware</groupId>
    <artifactId>aprilflow-java-sdk</artifactId>
    <version>1.0</version>
</dependency>
cd aprilflow-java-sdk
mvn clean install

Client

Créer un client

Les deux SDK s’authentifient avec une clé utilisateur April Flow. Le client obtient des jetons d’accès et utilise une authentification bearer pour les appels API.

import aprilflow.sdk.AprilFlowClient;

AprilFlowClient client;

client = AprilFlowClient.create(
    "https://api.aprilflow.ai",
    System.getenv("APRILFLOW_USER_KEY")
);

System.out.println(client.prompt().builtWith());
AprilFlowClient client;

client = AprilFlowClient.builder()
    .baseUrl("https://api.aprilflow.ai")
    .userKey(System.getenv("APRILFLOW_USER_KEY"))
    .build();

Collections

Travailler avec les Collections

Les Collections regroupent le contenu téléversé et peuvent être utilisées par les prompts. Une Collection peut représenter une base de connaissances, un espace client, un site web, un jeu de données ou un ensemble de documentation produit.

import aprilflow.sdk.collection.Collection;
import aprilflow.sdk.collection.CollectionVisibility;
import aprilflow.sdk.collection.CreateCollectionRequest;

Collection collection;

collection = client.collection().create(
    CreateCollectionRequest.create()
        .name("SDK example collection")
        .description("Collection created from the Java SDK")
        .visibility(CollectionVisibility.Private)
);

System.out.println(collection.getId());

Téléversements

Téléverser des documents et attendre leur traitement

L’API de téléversement prend en charge les octets, fichiers et flux. Les deux SDK fournissent également des assistants d’attente qui s’abonnent aux notifications et renvoient le résultat lorsque le traitement atteint un statut final.

import aprilflow.sdk.upload.Upload;
import aprilflow.sdk.upload.UploadFileRequest;
import aprilflow.sdk.upload.UploadWaitOptions;

import java.nio.file.Path;

Upload upload;

upload = client.upload().uploadFileAndWait(
    UploadFileRequest.create()
        .collectionId(collection.getId())
        .file(Path.of("/path/to/document.pdf"))
        .fileName("document.pdf")
        .contentType("application/pdf"),
    UploadWaitOptions.defaultOptions()
);

System.out.println(upload.getStatus());

Documents

Rechercher et récupérer des documents

L’API document fournit des fonctions de recherche, récupération par lot, récupération d’objet, opérations sur les documents originaux et suppression.

import aprilflow.sdk.document.DocumentItem;
import aprilflow.sdk.document.DocumentSearchRequest;

java.util.List<DocumentItem> documents;

documents = client.document().search(
    DocumentSearchRequest.create()
        .collectionId(collection.getId())
        .text("search text")
        .maxResult(10)
);

Prompts

Créer des sessions de prompts

Les sessions de prompts permettent aux applications de conserver un contexte conversationnel. Elles peuvent fonctionner avec du texte simple, des Collections sélectionnées ou des téléversements sélectionnés.

import aprilflow.sdk.prompt.CreateSessionResult;
import aprilflow.sdk.prompt.PromptRequest;
import aprilflow.sdk.prompt.PromptWaitOptions;

CreateSessionResult result;

result = client.prompt().session().createAndWait(
    PromptRequest.create()
        .text("Summarize the uploaded content.")
        .collectionIds(java.util.List.of(collection.getId())),
    PromptWaitOptions.defaultOptions()
);

System.out.println(result.getPrompt().getOutput());

Notifications

Écouter le traitement asynchrone

Le traitement des téléversements et des prompts peut être suivi via des flux de notifications. La plupart des applications devraient utiliser les assistants d’attente de plus haut niveau, mais des abonnements directs sont disponibles lorsqu’un flux de travail nécessite des événements.

import aprilflow.sdk.notification.NotificationSubscription;

NotificationSubscription subscription;

subscription = client.upload().watch(
    collection.getId(),
    upload.getId(),
    notification -> {
        System.out.println(notification.getAction());
        System.out.println(notification.getObjectType());
        System.out.println(notification.getObject());
    },
    error -> {
        error.printStackTrace();
    }
);

subscription.close();

Scraper

Exemple de CLI de scraping

Le dépôt comprend un CLI de scraping Python qui utilise le SDK Python April Flow pour les appels API. Il est construit autour de profils de scraping extensibles, afin que les développeurs puissent ajouter de nouvelles sources tout en réutilisant le même flux de sélection de Collection, de gestion des exécutions, de téléversement et de shell.

Flux de travail du scraper

  1. Installez le SDK Python et le projet de scraping.
  2. Définissez l’URL de base April Flow et la clé utilisateur.
  3. Listez ou sélectionnez la Collection cible.
  4. Exécutez un profil de scraping.
  5. Examinez le répertoire d’exécution généré.
  6. Téléversez le répertoire d’exécution scrappé dans April Flow.
  7. Utilisez des sessions de prompts pour poser des questions sur le contenu téléversé.

Profils de scraping

Étendre le scraper avec des profils

Le scraper est conçu autour de profils. Un profil définit la manière dont une source spécifique doit être découverte, explorée, analysée, normalisée et écrite dans un répertoire d’exécution avant le téléversement.

Cela rend le scraper extensible. Les développeurs peuvent ajouter leurs propres profils pour des sites web publics, portails de documentation, sources réglementaires, bases de connaissances internes ou sources spécifiques à un client, tout en réutilisant le même flux en ligne de commande et pipeline de téléversement April Flow.

Responsabilité du profil

  • Définir la source à scraper
  • Découvrir les pages, enregistrements ou URL sources
  • Récupérer le contenu à l’aide de Scrapy, Playwright ou d’une logique spécifique à la source
  • Extraire le contenu pertinent des pages
  • Normaliser titre, texte, URL, date et métadonnées
  • Écrire les fichiers dans un répertoire d’exécution structuré

Pipeline de scraping partagé

  • Exécute les profils depuis le CLI
  • Conserve les sorties d’exécution organisées
  • Prend en charge la sélection de Collections
  • Téléverse les fichiers scrappés dans April Flow
  • Prend en charge l’utilisation par shell interactif
  • Peut être utilisé manuellement, par tâches cron ou dans des workers d’automatisation

Structure conceptuelle d’un profil

aprilflow-scraper
  profiles
    cssf
      Découvrir les pages sources
      Extraire le contenu des pages
      Normaliser les documents
      Écrire la sortie de l’exécution

    votre_profil
      Découvrir votre source
      Extraire votre contenu
      Normaliser vos documents
      Réutiliser la même commande de téléversement

Pourquoi les profils sont importants

La logique de scraping est généralement spécifique à une source, mais le téléversement, la sélection de Collections, la gestion des exécutions, les commandes shell, la journalisation et les appels API April Flow ne doivent pas être réécrits pour chaque source. Les profils isolent l’extraction spécifique à une source tandis que le reste du scraper reste réutilisable.

Cela rend le scraper utile à la fois comme exemple et comme point de départ pour des intégrations réelles. Une équipe peut conserver plusieurs profils dans le même projet, chacun ciblant un site web, un espace documentaire, un fournisseur de données ou un système de contenu interne différent.

Installation

pip install -e ../aprilflow-python-sdk

cd aprilflow-scraper
pip install -e .

playwright install chromium
playwright install-deps chromium

Configuration

export APRILFLOW_BASE_URL="https://api.aprilflow.ai"
export APRILFLOW_USER_KEY="..."

export SCRAPER_DATA_DIR="$HOME/scraper"

Ligne de commande

scraper collections list
scraper collections get ab12cd34
scraper collections use ab12cd34

scraper scrape cssf --limit 20

scraper upload <run_dir> --into ab12cd34 --concurrency 2

Shell interactif

scraper shell

collections list
use ab12cd34
scrape cssf

upload ~/scraper/runs/2026-02-11_174642_cssf --concurrency 2

quit

Production

Notes d’intégration en production

Sécurité

Stockez les clés utilisateur dans une gestion de secrets, des variables d’environnement ou une configuration serveur protégée. Renouvelez les clés lorsque nécessaire.

Traitement

Utilisez les assistants d’attente pour les workers simples. Utilisez les abonnements aux notifications lorsque vous devez réagir à des événements de traitement asynchrone.

Périmètres de données

Concevez les Collections autour de limites claires telles qu’un produit, client, espace de travail, domaine ou politique de rétention.

Observabilité

Journalisez les identifiants de téléversement, prompts et Collections, ainsi que les événements de notification afin que les workers puissent être surveillés et relancés de manière fiable.

GitHub

Dépôt GitHub

Utilisez le dépôt GitHub pour consulter le SDK Java, le SDK Python, le CLI de scraping, les tests et les exemples.

Dépôt SDK April Flow

https://github.com/aprilsoftware/aprilflow-sdk