Vai al contenuto principale

Modelli Amazon Nova: guida con esempi

Scopri i nuovi modelli Amazon Nova (Micro, Lite, Pro, Premier, Canvas, Reel), come accedervi tramite Bedrock Playground e API e come creare una demo di app multi‑agente.
· 8 min leggi

Scopri con l'IA

Amazon ha rilasciato una nuova suite di modelli fondamentali all’avanguardia progettati per un utilizzo su larga scala a costi contenuti. Nova entra ora nell’ecosistema LLM di Amazon, è integrato con il servizio Amazon Bedrock e supporta più modalità come generazione di testo, immagini e video.

In questo post, ti offrirò una panoramica dei nuovi modelli Amazon Nova, spiegherò come accedervi tramite il servizio Bedrock, evidenzierò le funzionalità e i vantaggi di ciascun modello e ne mostrerò l’utilizzo pratico, inclusa l’integrazione in un’applicazione multi‑agente.

Cosa sono i modelli Amazon Nova?

I modelli Nova di Amazon sono modelli fondamentali molto attesi, accessibili tramite il servizio Amazon Bedrock. Sono progettati per una varietà di applicazioni, tra cui inferenza rapida a basso costo, comprensione multimediale e generazione creativa di contenuti. Vediamo ciascun modello.

Amazon Nova Micro

Il modello più veloce della famiglia, con la massima velocità e un basso costo computazionale. Micro è ideale per applicazioni che richiedono generazione solo‑testo rapida, con una velocità di inferenza di 200 token/secondo.

Alcuni dei migliori casi d’uso di Micro sono analisi in tempo reale, chatbot interattivi e servizi di generazione di testo ad alto traffico.

Benchmark di Amazon Nova Micro

Benchmark di Nova Micro. (Fonte: Amazon)

Amazon Nova Lite

Il membro multimodale economico della famiglia Nova, Lite offre un buon equilibrio tra velocità e alta accuratezza in molte attività, in particolare per ragionamento e traduzione rispetto a controparti come GPT-4o o Llama.

Gestisce grandi volumi di richieste in modo efficiente mantenendo al contempo un’elevata accuratezza. Lite può essere una scelta ottimale per applicazioni in cui la velocità è molto importante e serve un modello in grado di gestire più modalità.

Benchmark di Amazon Nova Lite

Benchmark di Nova Lite. (Fonte: Amazon)

Amazon Nova Pro

Il modello più avanzato della famiglia Nova per l’elaborazione del testo, Nova Pro, offre un’accuratezza notevole mantenendo costi computazionali relativamente bassi rispetto a modelli con capacità simili.

Secondo Amazon, Nova Pro è adatto ad applicazioni come il riassunto di video, il question answering, il ragionamento matematico, lo sviluppo software e agenti AI in grado di eseguire workflow multi‑step. Come i modelli Micro e Lite, anche Nova Pro supporta attualmente il fine‑tuning.

Benchmark di Amazon Nova Pro

Benchmark di Nova Pro. (Fonte: Amazon)

Amazon Nova Premier

Il modello multimodale più capace della famiglia, in arrivo all’inizio del 2025, dovrebbe rappresentare un salto di qualità rispetto al modello Pro.

Amazon Nova Canvas

Canvas è la soluzione di Nova per la generazione di immagini. Può generare immagini di alta qualità, offrire controllo su palette di colori e stile e fornire funzionalità come inpainting, outpainting, estensione delle immagini, style transfer e rimozione dello sfondo. Il modello è indicato per creare immagini di marketing, mockup di prodotto, ecc.

Amazon Nova Reel

Nova Reel è un modello di generazione video progettato per output video di alta qualità e facilmente personalizzabili. Nova Reel consente di creare e controllare stile visivo, ritmo e movimento della camera nei video. Reel, come gli altri modelli Nova, include controlli di sicurezza integrati che favoriscono la generazione di contenuti allineati.

Amazon Nova Reel

Come accedere ai modelli Amazon Nova tramite Amazon Bedrock Playground

Puoi usare il Playground di Amazon Bedrock per testare e confrontare più modelli tramite un’interfaccia pronta all’uso.

Darò per scontato che tu abbia Amazon CLI e Bedrock configurati e pronti all’uso. In caso contrario, puoi consultare il mio tutorial su AWS Multi‑Agent Orchestrator, dove spiego nel dettaglio i passaggi per configurare un ambiente per l’uso dei modelli forniti dai servizi Bedrock. Inoltre, il post sul blog di Nils Durner offre schermate passo‑passo per guidarti nella configurazione dei servizi Bedrock.

Amazon Bedrock Playground

Amazon Bedrock Playground

Confrontando Nova Micro e Pro, ho notato che il divario di accuratezza tra i due modelli non è evidente. Sebbene Micro sia più del doppio più veloce di Pro nella generazione di testo, fornisce risposte adeguate per la maggior parte dei casi d’uso comuni. Pro, invece, tende a produrre risposte leggermente più dettagliate e lunghe.

Come accedere ai modelli Amazon Nova tramite le API di Amazon Bedrock

Per usare i modelli Nova via API e integrarli nel tuo codice, assicurati innanzitutto che il tuo account AWS, l’AWS CLI e l’accesso ai modelli siano configurati correttamente (la documentazione fornisce indicazioni a riguardo).

Quindi, installa la libreria boto3, l’SDK AWS per Python, che ti consente di lavorare con i loro modelli.

pip install boto3

Puoi interagire con i modelli in modo programmatico usando uno script come quello seguente:

import boto3
import json 

client = boto3.client(service_name="bedrock-runtime")

messages = [
    {"role": "user", "content": [{"text": "Write a short poem"}]},
]

model_response = client.converse(
    modelId="us.amazon.nova-lite-v1:0", 
    messages=messages
)

print("\\n[Full Response]")
print(json.dumps(model_response, indent=2))

print("\\n[Response Content Text]")
print(model_response["output"]["message"]["content"][0]["text"])

Progetto demo con Nova Micro e AWS Multi‑Agent Orchestrator

Ora realizziamo un progetto demo per testare le capacità agentiche di Nova Micro. Useremo il framework AWS Multi‑Agent Orchestrator per configurare una semplice applicazione Python composta da due agenti: Python Developer Agent e ML Expert Agent. Se vuoi configurare l’orchestrator, puoi usare questa guida ad AWS Multi‑Agent Orchestrator.

Useremo anche Chainlit, un pacchetto Python open‑source, per implementare una semplice UI per l’applicazione. Per iniziare, installa le librerie necessarie:

chainlit==1.2.0
multi_agent_orchestrator==0.0.18

Cominciamo importando le librerie necessarie:

import uuid
import chainlit as cl
from multi_agent_orchestrator.orchestrator import MultiAgentOrchestrator, OrchestratorConfig
from multi_agent_orchestrator.classifiers import BedrockClassifier, BedrockClassifierOptions
from multi_agent_orchestrator.agents import AgentResponse
from multi_agent_orchestrator.agents import BedrockLLMAgent, BedrockLLMAgentOptions, AgentCallbacks
from multi_agent_orchestrator.orchestrator import MultiAgentOrchestrator
from multi_agent_orchestrator.types import ConversationMessage
import asyncio
import chainlit as cl

Il framework usa un Classifier per scegliere il miglior agente per la richiesta in arrivo dell’utente. Usiamo “anthropic.claude-3-haiku-20240307-v1:0” come modello per il nostro Classifier.

class ChainlitAgentCallbacks(AgentCallbacks):
    def on_llm_new_token(self, token: str) -> None:
        asyncio.run(cl.user_session.get("current_msg").stream_token(token))

# Initialize the orchestrator
custom_bedrock_classifier = BedrockClassifier(BedrockClassifierOptions(
    model_id='anthropic.claude-3-haiku-20240307-v1:0',
    inference_config={
        'maxTokens': 500,
        'temperature': 0.7,
        'topP': 0.9
    }
))

orchestrator = MultiAgentOrchestrator(options=OrchestratorConfig(
        LOG_AGENT_CHAT=True,
        LOG_CLASSIFIER_CHAT=True,
        LOG_CLASSIFIER_RAW_OUTPUT=True,
        LOG_CLASSIFIER_OUTPUT=True,
        LOG_EXECUTION_TIMES=True,
        MAX_RETRIES=3,
        USE_DEFAULT_AGENT_IF_NONE_IDENTIFIED=False,
        MAX_MESSAGE_PAIRS_PER_AGENT=10,
    ),
    classifier=custom_bedrock_classifier
)

Poi definiamo due agenti basati su Nova Micro, uno come esperto sviluppatore Python e l’altro come esperto di machine learning.

def create_python_dev():
    return BedrockLLMAgent(BedrockLLMAgentOptions(
        name="Python Developer Agent",
        streaming=True,
        description="Experienced Python developer specialized in writing, debugging, and evaluating only Python code.",
        model_id="amazon.nova-micro-v1:0",
        callbacks=ChainlitAgentCallbacks()
    ))

def create_ml_expert():
    return BedrockLLMAgent(BedrockLLMAgentOptions(
        name="Machine Learning Expert",
        streaming=True,
        description="Expert in areas related to machine learning including deep learning, pytorch, tensorflow, scikit-learn, and large language models.",
        model_id="amazon.nova-micro-v1:0",
        callbacks=ChainlitAgentCallbacks()
    ))
    

# Add agents to the orchestrator
orchestrator.add_agent(create_python_dev())
orchestrator.add_agent(create_ml_expert())

Infine, impostiamo il corpo principale dello script per la UI di Chainlit in modo da gestire le richieste degli utenti e le risposte degli agenti.

@cl.on_chat_start
async def start():
    cl.user_session.set("user_id", str(uuid.uuid4()))
    cl.user_session.set("session_id", str(uuid.uuid4()))
    cl.user_session.set("chat_history", [])

@cl.on_message
async def main(message: cl.Message):
    user_id = cl.user_session.get("user_id")
    session_id = cl.user_session.get("session_id")
    msg = cl.Message(content="")
    await msg.send()  # Send the message immediately to start streaming
    cl.user_session.set("current_msg", msg)
    response:AgentResponse = await orchestrator.route_request(message.content, user_id, session_id, {})
    # Handle non-streaming responses
    if isinstance(response, AgentResponse) and response.streaming is False:
        # Handle regular response
        if isinstance(response.output, str):
            await msg.stream_token(response.output)
        elif isinstance(response.output, ConversationMessage):
                await msg.stream_token(response.output.content[0].get('text'))
    await msg.update()

if __name__ == "__main__":
    cl.run()

Il risultato è la UI di Chainlit, che ti permette di chattare in pratica e liberamente con i modelli Nova.

Esecuzione della nostra app su Chainlit

Esecuzione della nostra app su Chainlit

I modelli di generazione di immagini e video sono disponibili anche via API. Puoi fare riferimento alla documentazione per script che mostrano come utilizzarli.

Conclusione

I modelli Amazon Nova rappresentano un passo avanti nell’ecosistema dei modelli fondamentali, combinando accuratezza allo stato dell’arte, velocità, convenienza e capacità multimodali. Man mano che la suite LLM di Amazon cresce con nuovi prodotti, sta diventando una scelta potente per creare applicazioni convenienti e scalabili sull’infrastruttura AWS.

Che tu stia sviluppando applicazioni AI agentiche, creando chatbot per l’assistenza clienti o esplorando come developer, sperimentare con i modelli Nova è un’esperienza che vale la pena. È utile anche approfondire AWS, Bedrock e gli strumenti LLM di Amazon.

In questo articolo abbiamo coperto gli aspetti chiave di questi modelli, come sperimentarli e come creare una semplice applicazione AI agentica usando i modelli Nova.

Hesam Sheikh Hassani

Autore

Hesam Sheikh Hassani

Studente magistrale in Intelligenza Artificiale e technical writer in ambito AI. Condivido approfondimenti sulle tecnologie AI più recenti, rendo la ricerca di ML accessibile e semplifico argomenti complessi legati all’AI, per aiutarti a restare in prima linea.

Argomenti

Correlato