Programma
La guerra dell’IA procede a ritmo serrato: Gemini e Gemma di Google hanno fatto parlare di sé di recente, ma ora Claude 3 di Anthropic si è imposto come un contendente potente, superando GPT-4 e Gemini Ultra in tutti i benchmark.
In questo tutorial esploreremo i modelli Claude 3, i benchmark di performance e come accedervi. Confronteremo anche Claude 3 con il suo predecessore, Claude 2.1, e con ChatGPT. Infine, vedremo la Python API di Claude 3 per generare testo, usare le funzionalità di visione, effettuare streaming delle risposte e lavorare in modo asincrono.
Che cos’è Claude 3?
Anthropic ha introdotto di recente una nuova famiglia di modelli di IA chiamata Claude 3. Questi modelli fissano nuovi standard di riferimento in varie attività cognitive. La famiglia include tre modelli all’avanguardia: Haiku, Sonnet e Opus. Possono alimentare chat con clienti in tempo reale, autocompletamenti e attività di estrazione dei dati.
Attualmente, Opus e Sonnet sono disponibili su claude.ai e sulla Claude API, mentre il modello più piccolo, Haiku, sarà rilasciato a breve. I modelli Claude 3 seguono meglio istruzioni complesse e multistep, rispettano il tono del brand e le linee guida di risposta e generano output strutturati in formati come JSON.
Rispetto ai modelli Claude precedenti, questi nuovi modelli mostrano una migliore comprensione del contesto, con conseguenti rifiuti non necessari meno frequenti.
Offrono una finestra di contesto da 200K ma possono elaborare input superiori a 1 milione di token. In particolare, Claude 3 Opus ha raggiunto un richiamo quasi perfetto, superando il 99% di accuratezza.
Per garantire l’affidabilità dei modelli, Anthropic ha dedicato team alla rilevazione e mitigazione di un ampio spettro di rischi.
Dettagli dei modelli
Claude 3 offre tre modelli con un equilibrio tra intelligenza, velocità e costo per diverse applicazioni.
Claude 3 Opus
Opus è progettato per attività complesse e ad alta intensità cognitiva, eccelle nella risoluzione di problemi aperti e nell’analisi strategica, con un’ampia finestra di contesto e un costo maggiore in linea con le sue capacità avanzate.
Prezzo: Token in input a $15 per milione e token in output a $75 per milione.
Claude 3 Sonnet
Sonnet offre un equilibrio ottimale tra prestazioni e costo, ideale per carichi di lavoro enterprise che includono elaborazione dati, ottimizzazione delle vendite e distribuzioni di IA su larga scala. È conveniente e dispone di un’ampia finestra di contesto.
Prezzo: Token in input a $3 per milione e token in output a $15 per milione.
Claude 3 Haiku
Haiku si distingue per velocità ed efficienza, ideale per esigenze di risposta in tempo reale nell’assistenza clienti, moderazione dei contenuti e attività orientate al risparmio, risultando il modello più economico e reattivo della suite.
Prezzo: Token in input a $0,25 per milione e token in output a $1,25 per milione.
Come accedere a Claude 3
Ci sono tre modi per accedere ai modelli Claude 3.
Claude Chat
Se cerchi un modo semplice e gratuito per provare i modelli di Claude AI, puoi registrarti su claude.ai/chats, che è simile a ChatGPT. L’interfaccia chat è interattiva e facile da usare.
Al momento offrono Claude 3 Sonnet gratuitamente, ma per accedere a Claude 3 Opus è necessario acquistare un abbonamento mensile Claude Pro.

Claude Chat
Workbench
Per accedere gratuitamente a Claude 3 Opus, devi registrarti all’API Anthropic: console.anthropic.com.
Segui pochi semplici passaggi per registrarti gratis e iniziare a usare il modello Opus cliccando sulla scheda Workbench e selezionando il modello “claude-3-opus-20240229”.

Anthropic Workbench
API e SDK
Il terzo modo per accedere ai modelli Claude 3 è tramite API. Anthropic offre SDK client per Python e Typescript. Puoi anche accedere al modello tramite REST API usando il comando curl nel terminale.
curl https://api.anthropic.com/v1/messages \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "content-type: application/json" \
--data \
'{
"model": "claude-3-opus-20240229",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "How many moons does Jupiter have?"}
]
}'
Uno sguardo ai benchmark
I modelli Claude 3 sono stati confrontati con i migliori Large Language Model (LLM) e hanno mostrato miglioramenti significativi in vari test.
In particolare, Claude 3 Opus ha superato GPT-4 e Gemini Ultra in alcuni dei benchmark di valutazione più comuni, tra cui MMLU, GPQA e GSM8K. Mostra livelli di comprensione e fluidità quasi umani su compiti complessi, rappresentando un primo passo verso un’intelligenza generale.
Scopri l’LLM all’avanguardia di OpenAI leggendo l’articolo di DataCamp Cos’è GPT-4 e perché è importante? Inoltre, scopri il rivale di ChatGPT targato Google, Google Gemini, leggendo Che cos’è Google Gemini? Tutto quello che c’è da sapere.
I modelli Claude 3 sono migliorati nell’analisi e previsione, nella generazione di codice e nella produzione di risposte in lingue diverse dall’inglese, come si vede dai dati di benchmark qui sotto:

Le capacità visive dei modelli Claude 3 sono migliorate sensibilmente, permettendo di comprendere foto, diagrammi e grafici complessi. Questo progresso è utile per le aziende con basi di conoscenza in vari formati, come PDF, flowchart e slide di presentazioni.

I modelli Claude 3 hanno anche ridotto in modo significativo i rifiuti non necessari e migliorato l’accuratezza rispetto alle generazioni precedenti.

Infine, possiamo vedere che i modelli Claude 3 mostrano un miglioramento doppio nell’accuratezza su domande aperte rispetto a Claude 2.1. Inoltre, i nuovi modelli mostrano livelli inferiori di risposte errate.
Claude 3 Opus vs Claude 2.1
In questa sezione confronteremo le risposte di Claude 3 Opus e Claude 2.1 su tre attività comuni per capire le rispettive prestazioni.
Q&A
Prompt: Parlo senza bocca e sento senza orecchie. Non ho corpo, ma prendo vita con il vento. Cosa sono?
Claude 2.1 ha rifiutato di rispondere alla domanda, citando mancanza di contenuto. Tuttavia l’utente stava proponendo un indovinello e Claude Opus ha fornito la risposta corretta.
Generazione di codice
Prompt: Crea un’applicazione web FastAPI per un semplice modello di classificazione Scikit-learn.
Il codice di Claude 2.1 sembrava funzionare inizialmente, ma ha generato un errore dopo l’inserimento dei valori di esempio. Indagando, abbiamo scoperto che il codice non è ottimizzato e la funzione di inferenza presenta alcuni errori.
D’altra parte, confrontandolo con Claude 3 Opus, abbiamo riscontrato che il codice è girato senza problemi e ha fornito previsioni accurate, come mostrato di seguito.

Problema complesso
Prompt: Come si confronta una rete neurale con un solo layer e un solo input e output con una regressione logistica?
Entrambi i modelli hanno fornito risposte simili, ma la risposta di Claude 3 Opus era più dettagliata e di facile lettura.
Claude 3 Opus vs ChatGPT 4
Confrontiamo Claude 3 Opus e ChatGPT 4 su compiti simili ai precedenti per mostrare come Claude 3 abbia un piccolo margine rispetto a GPT-4.
Q&A
Prompt: Quante lune ha Giove?

Entrambe le affermazioni sono errate. Al 5 febbraio 2024, Giove ha 95 lune. Questo prompt è utile per capire il periodo di cutoff dei dataset. Sembra che Claude 3 Opus sia stato addestrato su un dataset più vecchio, del 2021, mentre ChatGPT è stato aggiornato ad aprile 2023.
Generazione di codice
Prompt: Creare un’applicazione web Gradio per un semplice modello di classificazione Scikit-learn.

Il codice generato dal modello Claude 3 è stato eseguito senza problemi, mentre quello generato da GPT-4 non è riuscito a girare a causa di più errori e allucinazioni.
Problema complesso
Prompt: Ci sono quattro persone in un ascensore e quattro piani in un edificio. Qual è la probabilità che ciascuna persona scenda a un piano diverso?

Entrambi i modelli sono arrivati alla risposta corretta della famosa domanda di probabilità. Uno ha fornito il procedimento matematico, l’altro ha generato ed eseguito codice Python per mostrare lo stesso risultato. In questo caso, vincono entrambi.
Claude 3 Python SDK
In questa parte conosceremo il Claude 3 Python SDK e come usarlo per generare risposte personalizzate.
Per iniziare
1. Installa il pacchetto Python anthropic usando PIP.
pip install anthropic
2. Prima di installare il pacchetto Python, vai su https://console.anthropic.com/dashboard e ottieni la chiave API.

3. Imposta la variabile d’ambiente ANTHROPIC_API_KEY e assegna come valore la chiave API. Configurare e accedere alla variabile d’ambiente è molto semplice in DataLab, il notebook dati di DataCamp con funzioni di IA.

4. Crea l’oggetto client usando la chiave API. Useremo questo client per la generazione di testo, l’accesso alla visione e lo streaming.
import os
import anthropic
client = anthropic.Anthropic(
api_key=os.environ["ANTHROPIC_API_KEY"],
)
Claude 2 Completions API
È importante notare che il più recente modello Claude 3 non usa la Completion API. Se provi a usare questa API con i modelli Claude 3, otterrai un errore e ti verrà consigliato di usare invece la Messages API.
from IPython.display import Markdown, display
from anthropic import HUMAN_PROMPT, AI_PROMPT
completion = client.completions.create(
model="claude-2.1",
max_tokens_to_sample=300,
prompt=f"{HUMAN_PROMPT} What is Matthew effect? {AI_PROMPT}",
)
Markdown(completion.completion)

Se vuoi saperne di più sulla più economica Python API di Claude, leggi Prime mosse con Claude 2 e l’API di Anthropic.
Claude 3 Messages API
Per chiarezza, testeremo la Messages API di Anthropic con il modello Claude 3 Opus. Questa API è simile alla Completion API, ma richiede l’argomento messages come elenco di dizionari contenenti ruolo e contenuto.
Prompt = "Write the Go code for the simple data analysis."
message = client.messages.create(
model="claude-3-opus-20240229",
max_tokens=1024,
messages=[
{"role": "user", "content": Prompt}
]
)
Markdown(message.content[0].text)
Usando IPython Markdown la risposta verrà mostrata in formato Markdown. Vale a dire che vedrai elenchi puntati, blocchi di codice, titoli e link in modo pulito.

Il codice funziona perfettamente e la spiegazione è abbastanza chiara da permettere a chiunque di capire cosa sta succedendo.
Aggiungere un system prompt
Possiamo personalizzare la risposta fornendo il system prompt. Gli abbiamo chiesto di convertire tutte le risposte in svedese.
Prompt = "Write a report on climate change."
message = client.messages.create(
model="claude-3-opus-20240229",
max_tokens=1024,
system="Respond only in Svenska.",
messages=[
{"role": "user", "content": Prompt}
]
)
Markdown(message.content[0].text)
Ha generato perfettamente un report sul cambiamento climatico in svedese.

Claude 3 Vision Block
La Messages API include funzionalità di visione. In questa sezione useremo due foto da Pexels.com per generare una risposta.
- Immagine 1: Foto di Debayan Chakraborty: https://www.pexels.com/photo/indian-blue-jay-20433278/
- Immagine 2: Foto di Rachel Xiao: https://www.pexels.com/photo/brown-pendant-lamp-hanging-on-tree-near-river-772429/

Caricheremo le immagini usando il pacchetto httpx e le convertiremo in base64.
import base64
import httpx
media_type = "image/jpeg"
url_1 = "https://images.pexels.com/photos/20433278/pexels-photo-20433278/free-photo-of-indian-blue-jay.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2"
image_encode_1 = base64.b64encode(httpx.get(url_1).content).decode("utf-8")
url_2 = "https://images.pexels.com/photos/772429/pexels-photo-772429.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2"
image_encode_2 = base64.b64encode(httpx.get(url_2).content).decode("utf-8")
Visione con una singola immagine
Per fare domande sulle immagini, dobbiamo fornire alla Claude 3 API i dati dell’immagine, il tipo di codifica e il media type. Sia l’immagine che il prompt fanno parte del dizionario content passato all’argomento message.
message = client.messages.create(
model="claude-3-opus-20240229",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": media_type,
"data": image_encode_1,
},
},
{
"type": "text",
"text": "Describe the image."
}
],
}
],
)
Markdown(message.content[0].text)

Visione con più immagini
Aggiungere più immagini può essere complesso, ma seguendo lo schema dell’esempio di codice capirai come funziona.
Dobbiamo semplicemente creare del testo che indichi Immagine 1 e Immagine 2, quindi porre domande su queste due immagini.
message = client.messages.create(
model="claude-3-opus-20240229",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{
"type": "text",
"text": "Image 1:"
},
{
"type": "image",
"source": {
"type": "base64",
"media_type": media_type,
"data": image_encode_1,
},
},
{
"type": "text",
"text": "Image 2:"
},
{
"type": "image",
"source": {
"type": "base64",
"media_type": media_type,
"data": image_encode_2,
},
},
{
"type": "text",
"text": "What do these images have in common?"
}
],
}
],
)
Markdown(message.content[0].text)
Perfetto. Entrambe le immagini ritraggono uccelli.

Claude 3 Streaming API
Per streaming si intende il processo di generazione dell’output testuale in modo continuo, invece di attendere che l’intera sequenza sia generata prima di restituire qualsiasi risultato. Con questa tecnica, l’output è generato token per token, riducendo la latenza percepita.
Invece di create, useremo la funzione stream per generare la risposta in streaming.
Per visualizzare i risultati, useremo la sintassi with e un for loop per stampare i token non appena sono disponibili.
Prompt = "Write a Python code for typical data engineering workflow."
completion = client.messages.stream(
max_tokens=1024,
messages=[
{
"role": "user",
"content": Prompt,
}
],
model="claude-3-opus-20240229",
)
with completion as stream:
for text in stream.text_stream:
print(text, end="", flush=True)

Claude 3 Async API
Le API sincrone eseguono le richieste in sequenza e le bloccano finché non ricevono una risposta prima di avviare la chiamata successiva. Le API asincrone, invece, consentono più richieste concorrenti senza blocchi, risultando più efficienti e scalabili.
Inizializzeremo il client async usando AsyncAnthropic. Quindi creeremo la funzione main con la keyword async ed eseguiremo la funzione con asyncio.run.
Nota: se usi l’async in Jupyter Notebook, prova a usare await main() invece di asyncio.run(main()).
import asyncio
from anthropic import AsyncAnthropic
async_client = AsyncAnthropic(
api_key=os.environ["ANTHROPIC_API_KEY"],
)
Prompt = "Could you explain what MLOps is and suggest some of the best tools to use for it?"
async def main() -> None:
message = await async_client.messages.create(
max_tokens=1024,
messages=[
{
"role": "user",
"content": Prompt,
}
],
model="claude-3-opus-20240229",
)
display(Markdown(message.content[0].text))
asyncio.run(main())

Combinare streaming e Async API
Possiamo combinare facilmente lo streaming con i metodi async usando la funzione stream del client asincrono. In questo modo potremo ricevere più richieste e trasmettere le risposte in streaming, rendendo l’applicazione di IA scalabile e robusta.
async def main() -> None:
completion = async_client.messages.stream(
max_tokens=1024,
messages=[
{
"role": "user",
"content": Prompt,
}
],
model="claude-3-opus-20240229",
)
async with completion as stream:
async for text in stream.text_stream:
print(text, end="", flush=True)
asyncio.run(main())

Se hai difficoltà a eseguire il codice, puoi accedere a questo workbook DataLab dove puoi visualizzare ed eseguire il codice tu stesso (dopo averne fatto una copia).
Impara ad accedere ai Large Language Model di OpenAI seguendo il tutorial Usare GPT-3.5 e GPT-4 tramite l’API OpenAI in Python.
Considerazioni finali
Anthropic è ora un’azienda rivolta sia al pubblico sia al mondo enterprise, simile a OpenAI. Fornisce accesso ai propri modelli a chiunque e, in alcuni casi, gratuitamente. Puoi accedere all’LLM con le migliori prestazioni, Claude 3 Opus, tramite abbonamento Pro o accesso via API. Tuttavia, Anthropic non dispone dell’ecosistema che ha OpenAI: mancano modelli di embedding, generazione di immagini e video, text-to-speech e riconoscimento vocale. Mancano anche funzioni core offerte dall’API di OpenAI.
Puoi scoprire il nuovo modello text-to-video di OpenAI che ha spopolato sui social leggendo Che cos’è Sora di OpenAI? Come funziona, casi d’uso, alternative e altro.
In questo tutorial abbiamo visto il modello Claude 3, molto discusso nel mondo dell’IA. Lo abbiamo confrontato con Claude 2.1 e GPT-4 in varie attività. Infine, abbiamo usato l’SDK Python di Anthropic per generare testo, usare le capacità di visione, trasmettere la risposta token per token e usare l’API in modo asincrono.
Se sei alle prime armi con l’IA e vuoi capirne il funzionamento interno, ti consigliamo lo skill track AI Fundamentals. Ti fornirà conoscenze pratiche su temi popolari come ChatGPT, large language model, IA generativa e molto altro.
In quanto data scientist certificato, sono appassionato di sfruttare tecnologie all’avanguardia per creare applicazioni di machine learning innovative. Con una solida esperienza in riconoscimento vocale, analisi e reportistica dei dati, MLOps, AI conversazionale e NLP, ho affinato le mie competenze nello sviluppo di sistemi intelligenti in grado di avere un impatto concreto. Oltre alla mia expertise tecnica, sono anche un comunicatore efficace, con il talento di rendere chiari e sintetici concetti complessi. Di conseguenza, sono diventato un blogger molto seguito in ambito data science, condividendo idee ed esperienze con una community in crescita di professionisti dei dati. Attualmente mi concentro sulla creazione e sull’editing di contenuti, lavorando con large language model per sviluppare contenuti potenti e coinvolgenti che possano aiutare aziende e singoli a valorizzare al meglio i propri dati.





