Maven Central Version

Introducción

La biblioteca cliente para Java ofrece una interfaz fácil de usar para interactuar con los servicios de Sunra.

Instalación

Para integrar el cliente en tu proyecto, agrega la dependencia usando Maven o Gradle:
implementation("ai.sunra.client:sunra-client:0.1.5")

Características

Llamando a los Endpoints

Sunra gestiona las solicitudes de los endpoints a través de un sistema de colas, lo que garantiza la fiabilidad y la escalabilidad. Usa el método subscribe para enviar una solicitud y esperar el resultado. Ejemplo:
import ai.sunra.client.*;
import ai.sunra.client.queue.*;
import java.util.Map;
import com.google.gson.JsonObject;
import java.util.function.Consumer;

ClientConfig config = ClientConfig.builder()
    .withCredentials(CredentialsResolver.fromEnv())
    .build();

SunraClient client = SunraClient.withConfig(config);
Map<String, Object> input = Map.of(
    "prompt", "un perro corriendo en el parque");

Consumer<QueueStatus.StatusUpdate> statusUpdateHandler = update -> {
    String status = update.getStatus().toString();
    String message = String.format("\nActualización de estado: %s, ID de solicitud: %s",
        status, update.getRequestId());
    System.out.println(message);
};

SubscribeOptions<JsonObject> options = SubscribeOptions.<JsonObject>builder()
    .input(input)
    .resultType(JsonObject.class)
    .onQueueUpdate(statusUpdateHandler)
    .logs(true)
    .build();

// guarda la solicitud de suscripción en una variable e imprímela
Output<JsonObject> response = client.subscribe("black-forest-labs/flux-kontext-pro/text-to-image", options);
System.out.println("¡Completado!");
System.out.println(response.getData());

Gestión de la Cola

Gestiona tus solicitudes con estos métodos:
Enviando una Solicitud
Envía una solicitud y recupera el request_id para usarlo más tarde. Ejemplo:
import ai.sunra.client.*;
import ai.sunra.client.queue.*;
import java.util.Map;
import com.google.gson.JsonObject;
import java.util.function.Consumer;

ClientConfig config = ClientConfig.builder()
    .withCredentials(CredentialsResolver.fromEnv())
    .build();

SunraClient client = SunraClient.withConfig(config);
Map<String, Object> input = Map.of(
    "prompt", "un perro corriendo en el parque");

Consumer<QueueStatus.StatusUpdate> statusUpdateHandler = update -> {
    String status = update.getStatus().toString();
    String message = String.format("\nActualización de estado: %s, ID de solicitud: %s",
        status, update.getRequestId());
    System.out.println(message);
};

SubscribeOptions<JsonObject> options = SubscribeOptions.<JsonObject>builder()
    .input(input)
    .resultType(JsonObject.class)
    .onQueueUpdate(statusUpdateHandler)
    .logs(true)
    .build();

// guarda la solicitud de suscripción en una variable e imprímela
var request = client.queue().submit("black-forest-labs/flux-kontext-pro/text-to-image", options);
Comprobando el Estado de la Solicitud
Recupera el estado de una solicitud. Ejemplo:
import ai.sunra.client.*;
import ai.sunra.client.queue.*;

ClientConfig config = ClientConfig.builder()
    .withCredentials(CredentialsResolver.fromEnv())
    .build();

SunraClient client = SunraClient.withConfig(config);
var job = client.queue().status(QueueStatusOptions.withRequestId("pd_eTYYuw4EqYLzRBHgnAMHA8zH"));
Recuperando los Resultados de la Solicitud
Obtén el resultado de una solicitud completada. Ejemplo:
import ai.sunra.client.*;
import ai.sunra.client.queue.*;

ClientConfig config = ClientConfig.builder()
    .withCredentials(CredentialsResolver.fromEnv())
    .build();

SunraClient client = SunraClient.withConfig(config);
var result = client.queue().result(QueueStatusOptions.withRequestId("pd_eTYYuw4EqYLzRBHgnAMHA8zH"));

Carga de Archivos

Aún no implementado.
Tamaño máximo de archivo: 100MB

Soporte

Únete a nuestra comunidad para obtener ayuda o participar en debates: ¡Estamos aquí para ayudarte!