API Anthropic Claude Text Completions
Questa sezione fornisce i parametri di inferenza ed esempi di codice per l’utilizzo dei modelli Anthropic Claude con l’API Text Completions.
Panoramica dell’API Anthropic Claude Text Completions
Utilizza l’API Text Completions per la generazione di testo a turno singolo da un prompt fornito dall’utente. Ad esempio, puoi utilizzare l’API Text Completions per generare testo per un post di blog o riepilogare l’input di testo di un utente.
Per informazioni sulla creazione di prompt per i modelli Anthropic Claude, consulta Introduzione alla progettazione dei prompt. Se desideri utilizzare i prompt di completamento del testo esistenti con l’API Messages di Anthropic Claude, consulta Migrazione da Text Completions.
Modelli supportati
Puoi utilizzare l’API Text Completions con i seguenti modelli Anthropic Claude.
Richiesta e risposta
Il corpo della richiesta viene passato nel campo body di una richiesta a InvokeModel o InvokeModelWithResponseStream.
Per ulteriori informazioni, consulta la pagina https://docs.anthropic.com/claude/reference/complete_post nella documentazione di Anthropic Claude.
- Request
-
Anthropic Claude include i seguenti parametri di inferenza per una chiamata di inferenza Text Completions.
{
"prompt": "\n\nHuman:<prompt>\n\nAssistant:",
"temperature": float,
"top_p": float,
"top_k": int,
"max_tokens_to_sample": int,
"stop_sequences": [string]
}
I seguenti sono parametri obbligatori.
-
prompt: (obbligatorio) il prompt che desideri venga completato da Claude. Per una corretta generazione di risposte, è necessario formattare il prompt utilizzando un’alternanza dei turni di conversazione \n\nHuman: e \n\nAssistant:. Ad esempio:
"\n\nHuman: {userQuestion}\n\nAssistant:"
Per ulteriori informazioni, consulta Convalida dei prompt nella documentazione di Anthropic Claude.
-
max_tokens_to_sample (obbligatorio): numero massimo di token da generare prima dell’arresto. Consigliamo un limite di 4.000 token per prestazioni ottimali.
Tieni presente che i modelli Anthropic Claude potrebbero arrestare la generazione di token prima che sia raggiunto il valore max_tokens_to_sample. In modelli Anthropic Claude diversi i valori massimi per questo parametro sono differenti. Per ulteriori informazioni, consulta Confronto dei modelli nella documentazione di Anthropic Claude.
| Predefinita |
Minimo |
Massimo |
|
200
|
0
|
4096
|
I seguenti sono parametri opzionali.
-
stop_sequences (facoltativo): le sequenze che causano l’arresto della generazione da parte del modello.
I modelli Anthropic Claude si arrestano su "\n\nHuman:" e in futuro potrebbero includere ulteriori sequenze di arresto integrate. Utilizza il parametro di inferenza stop_sequences per includere stringhe aggiuntive che segnaleranno al modello di arrestare la generazione di testo.
-
temperature (facoltativo): quantità di randomizzazione inserita nella risposta. Utilizza un valore più vicino a 0 per le attività analitiche/a scelta multipla e un valore più vicino a 1 per le attività creative e generative.
| Predefinita |
Minimo |
Massimo |
|
1
|
0
|
1
|
-
top_p (facoltativo): utilizza il metodo “nucleus sampling”.
Nel metodo “nucleus sampling”, Anthropic Claude calcola la distribuzione cumulativa di tutte le opzioni per ogni token successivo in ordine di probabilità decrescente e la interrompe quando raggiunge un particolare valore specificato da top_p. Devi modificare un solo valore tra temperature o top_p, non entrambi.
| Predefinita |
Minimo |
Massimo |
|
1
|
0
|
1
|
-
top_k (facoltativo): campionamento eseguito solo dalle opzioni top K per ogni token successivo.
Utilizza top_k per rimuovere le risposte long tail a bassa probabilità.
| Predefinita |
Minimo |
Massimo |
|
250
|
0
|
500
|
- Response
-
Il modello Anthropic Claude restituisce i seguenti campi per effettuare chiamate di inferenza per il completamento di testo.
{
"completion": string,
"stop_reason": string,
"stop": string
}
-
completion: il completamento risultante fino all’esclusione delle sequenze di arresto.
-
stop_reason: il motivo per cui il modello ha smesso di generare la risposta.
-
"stop_sequence": il modello ha raggiunto una sequenza di arresto, fornita dall’utente con il parametro di inferenza stop_sequences o integrata nel modello.
-
"max_tokens": il modello ha superato il valore max_tokens_to_sample o il numero massimo di token del modello.
-
stop: se specifichi il parametro di inferenza stop_sequences, stop contiene la sequenza di arresto che ha segnalato al modello di arrestare la generazione di testo. Ad esempio, holes nella risposta seguente.
{
"completion": " Here is a simple explanation of black ",
"stop_reason": "stop_sequence",
"stop": "holes"
}
Se non specifichi stop_sequences, il valore predefinito per stop è vuoto.
esempio di codice
Questi esempi mostrano come chiamare il modello Anthropic Claude V2 con un throughput on demand. Per utilizzare Anthropic Claude versione 2.1, modifica il valore di modelId in anthropic.claude-v2:1.
import boto3
import json
brt = boto3.client(service_name='bedrock-runtime')
body = json.dumps({
"prompt": "\n\nHuman: explain black holes to 8th graders\n\nAssistant:",
"max_tokens_to_sample": 300,
"temperature": 0.1,
"top_p": 0.9,
})
modelId = 'anthropic.claude-v2'
accept = 'application/json'
contentType = 'application/json'
response = brt.invoke_model(body=body, modelId=modelId, accept=accept, contentType=contentType)
response_body = json.loads(response.get('body').read())
# text
print(response_body.get('completion'))
L'esempio seguente mostra come generare testo in streaming con Python utilizzando il prompt write an essay for living on mars in 1000 words (scrivi un saggio di 1000 parole su come poter vivere di Marte) e il modello Anthropic Claude V2:
import boto3
import json
brt = boto3.client(service_name='bedrock-runtime')
body = json.dumps({
'prompt': '\n\nHuman: write an essay for living on mars in 1000 words\n\nAssistant:',
'max_tokens_to_sample': 4000
})
response = brt.invoke_model_with_response_stream(
modelId='anthropic.claude-v2',
body=body
)
stream = response.get('body')
if stream:
for event in stream:
chunk = event.get('chunk')
if chunk:
print(json.loads(chunk.get('bytes').decode()))