Introduzione
La libreria client per Python offre un’interfaccia facile da usare per interagire con i servizi di Port.
Installazione
Per integrare il client nel tuo progetto, installalo usando pip:
Funzionalità
Chiamata degli endpoint
Port gestisce le richieste degli endpoint tramite un sistema di code, garantendo affidabilità e scalabilità. Usa il metodo subscribe per inviare una richiesta e attendere il risultato.
Esempio:
import port_client
result = port_client.subscribe(
"black-forest-labs/flux-kontext-pro/text-to-image",
arguments={
"prompt": 'Una città di mare ispirata allo Studio Ghibli con case colorate, panni stesi e gatti che dormono sui davanzali.',
"width": 1024,
"height": 768,
"output_format": 'jpeg'
},
with_logs=True,
on_enqueue=print,
on_queue_update=print,
)
print(result)
Gestione delle code
Gestisci le tue richieste con questi metodi:
Invio di una richiesta
Invia una richiesta e recupera il request_id per un uso successivo.
Esempio:
import port_client
handler = port_client.submit(
"black-forest-labs/flux-kontext-pro/text-to-image",
arguments={
"prompt": 'Una città di mare ispirata allo Studio Ghibli con case colorate, panni stesi e gatti che dormono sui davanzali.',
"width": 1024,
"height": 768,
"output_format": 'jpeg'
},
webhook_url="https://optional.webhook.url/for/results",
)
request_id = handler.request_id
Controllo dello stato della richiesta
Recupera lo stato di una richiesta.
Esempio:
import port_client
status = port_client.status(request_id, with_logs=True)
Recupero dei risultati della richiesta
Recupera il risultato di una richiesta completata.
Esempio:
import port_client
result = port_client.result(request_id)
Caricamento di file
Carica i file per ottenere URL da utilizzare nelle richieste asincrone. Ciò è essenziale per i modelli che elaborano file, come i convertitori da immagine a video o da parlato a testo.
Dimensione massima del file: 100 MB
Caricamento di un file locale
Puoi caricare facilmente un file dal tuo filesystem locale. Ciò è utile per script o applicazioni che elaborano dati locali.
import port_client
# Inizializza il client sincrono
client = port_client.SyncClient()
try:
# Carica un file da un percorso specificato
file_url = client.upload_file(path="percorso/della/tua/immagine.png")
print(f"File caricato con successo: {file_url}")
# Questo URL può ora essere utilizzato con un endpoint del modello
except FileNotFoundError:
print("Errore: il file non è stato trovato nel percorso specificato.")
except Exception as e:
print(f"Si è verificato un errore: {e}")
Caricamento di dati in memoria
Puoi anche caricare dati che si trovano in memoria, come il contenuto di un’immagine creata con PIL (Pillow) o un file ricevuto in una richiesta web.
import port_client
from PIL import Image
import io
# Inizializza il client sincrono
client = port_client.SyncClient()
# Crea un'immagine in memoria, ad esempio con Pillow
image = Image.new("RGB", (600, 400), color = 'red')
byte_arr = io.BytesIO()
image.save(byte_arr, format='PNG')
image_bytes = byte_arr.getvalue()
# Carica i dati dell'immagine in memoria utilizzando il metodo `upload`
image_url = client.upload(
data=image_bytes,
content_type="image/png"
)
print(f"Immagine caricata con successo: {image_url}")
Supporto
Unisciti alla nostra community per aiuto o discussioni:
Siamo qui per aiutarti!