Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Funzionalità API avanzate per modelli importati
Questa pagina fornisce esempi dettagliati di funzionalità avanzate disponibili per i modelli importati dopo l'11 novembre 2025. Queste funzionalità includono output strutturati per la generazione controllata, supporto visivo avanzato per l'elaborazione di più immagini, log probability per informazioni sulla fiducia e strumenti per la creazione di modelli. GPT-OSS
Output strutturati
Gli output strutturati consentono la generazione controllata secondo formati, schemi o modelli specifici. Questa funzionalità garantisce che la risposta del modello rispetti i vincoli predefiniti, rendendolo ideale per le applicazioni che richiedono formati di dati coerenti, integrazioni API o pipeline di elaborazione automatizzate.
Gli output strutturati su Custom Model Import sono supportati tramite due parametri:
response_format- Supporti json_object e tipi json_schema
structured_outputs- Supporti json regexchoice, e grammar tipi
Quando si utilizzano output strutturati su Custom Model Import, i clienti dovrebbero aspettarsi compromessi in termini di prestazioni dovuti alla convalida dei vincoli durante la generazione. I vincoli semplici come choice e json_object hanno un impatto minimo, mentre i vincoli complessi come e possono aumentare significativamente la latenza e ridurre il throughput. json_schema grammar Per prestazioni ottimali, utilizzate tipi di vincoli più semplici quando possibile e mantenete gli schemi piatti anziché annidati in profondità.
Gli esempi seguenti mostrano il supporto degli output strutturati in diversi formati di API. La definizione del modello Pydantic è:
from pydantic import BaseModel
from enum import Enum
class CarType(str, Enum):
sedan = "sedan"
suv = "SUV"
truck = "Truck"
coupe = "Coupe"
class CarDescription(BaseModel):
brand: str
model: str
car_type: CarType
- BedrockCompletion
-
BedrockCompletion supporta output strutturati utilizzando solo il response_format parametro with json_object and json_schema types.
Esempio: schema JSON
payload = {
"prompt": "Generate a JSON with the brand, model and car_type of the most iconic car from the 90's",
"response_format": {
"type": "json_schema",
"json_schema": CarDescription.model_json_schema()
}
}
response = client.invoke_model(
modelId='your-model-arn',
body=json.dumps(payload),
accept='application/json',
contentType='application/json'
)
response_body = json.loads(response['body'].read())
Risposta di esempio:
{
"generation": "{\n \"brand\": \"Ferrari\",\n \"model\": \"F40\",\n \"car_type\": \"SUV\"\n }",
"prompt_token_count": 22,
"generation_token_count": 30,
"stop_reason": "stop",
"logprobs": null
}
- OpenAICompletion
-
Open AICompletion supporta entrambi i parametri response_format (json_object, json_schema) e structured_outputs (json, regex, choice, grammar). Utilizza invece di indirizzare le richieste a Open. max_tokens max_gen_len AICompletion
Esempio: Output strutturati - Scelta
payload = {
"prompt": "Classify the sentiment of this sentence. Amazon Bedrock CMI is Amazing!",
"max_tokens": 10,
"structured_outputs": {
"choice": ["positive", "negative"]
}
}
response = client.invoke_model(
modelId='your-model-arn',
body=json.dumps(payload),
accept='application/json',
contentType='application/json'
)
response_body = json.loads(response['body'].read())
Risposta di esempio:
{
"id": "cmpl-01f94c4652d24870bbb4d5418a01c384",
"object": "text_completion",
"choices": [
{
"index": 0,
"text": "positive",
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 17,
"completion_tokens": 4
}
}
- OpenAIChatCompletion
-
Open AIChat Completion supporta entrambi i response_format parametri (json_object, json_schema) e structured_outputs (json, regex, choice, grammar).
Esempio: Formato di risposta - Schema JSON
payload = {
"messages": [
{"role": "user", "content": "Generate a JSON with the brand, model and car_type of the most iconic car from the 90's"}
],
"max_tokens": 100,
"response_format": {
"type": "json_schema",
"json_schema": {
"name": "car-description",
"schema": CarDescription.model_json_schema()
}
}
}
response = client.invoke_model(
modelId='your-model-arn',
body=json.dumps(payload),
accept='application/json',
contentType='application/json'
)
response_body = json.loads(response['body'].read())
Risposta di esempio:
{
"id": "chatcmpl-cae5a43b0a924b8eb434510cbf978a19",
"object": "chat.completion",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "{\"brand\": \"Dodge\", \"model\": \"Viper\", \"car_type\": \"Coupe\"}"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 56,
"completion_tokens": 23
}
}
Supporto visivo
Le funzionalità di visione consentono l'elaborazione delle immagini insieme agli input di testo, con un supporto avanzato di più immagini per attività di analisi visiva complesse. Custom Model Import ora supporta fino a 3 immagini per richiesta, migliorato rispetto alla precedente limitazione delle immagini singole.
API supportata: solo Open AIChat Completion. Tutti i modelli importati dopo l'11 novembre 2025 utilizzeranno di default questa API per le funzionalità di visione.
Requisiti per le immagini:
È richiesta la codifica Base64: l'immagine URLs causerà errori nella richiesta
Massimo 3 immagini per richiesta
Le immagini ad alta risoluzione aumentano notevolmente i tempi di elaborazione e l'utilizzo della memoria
Le immagini ad alta risoluzione aumentano notevolmente il tempo di elaborazione e l'utilizzo della memoria e possono causare errori di timeout. Più immagini ad alta risoluzione aumentano l'impatto sulle prestazioni in modo esponenziale. Per prestazioni ottimali, ridimensionate le immagini in modo appropriato e utilizzate livelli di dettaglio inferiori quando possibile.
- OpenAIChatCompletion
-
Esempio: elaborazione di più immagini
import json
import boto3
import base64
client = boto3.client('bedrock-runtime', region_name='us-east-1')
# Load and encode images
with open('/path/to/car_image_1.jpg', 'rb') as f:
image_data_1 = base64.b64encode(f.read()).decode('utf-8')
with open('/path/to/car_image_2.jpg', 'rb') as f:
image_data_2 = base64.b64encode(f.read()).decode('utf-8')
payload = {
"messages": [
{
"role": "system",
"content": "You are a helpful assistant that can analyze images."
},
{
"role": "user",
"content": [
{
"type": "text",
"text": "Spot the difference between the two images?"
},
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{image_data_1}"
}
},
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{image_data_2}"
}
}
]
}
],
"max_tokens": 300,
"temperature": 0.5
}
response = client.invoke_model(
modelId='your-model-arn',
body=json.dumps(payload),
accept='application/json',
contentType='application/json'
)
response_body = json.loads(response['body'].read())
Risposta di esempio:
{
"id": "chatcmpl-ccae8a67e62f4014a9ffcbedfff96f44",
"object": "chat.completion",
"created": 1763167018,
"model": "667387627229-g6vkuhd609s4",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "There are no differences between the two images provided. They appear to be identical.",
"refusal": null,
"annotations": null,
"audio": null,
"function_call": null,
"tool_calls": [],
"reasoning_content": null
},
"logprobs": null,
"finish_reason": "stop",
"stop_reason": null,
"token_ids": null
}
],
"service_tier": null,
"system_fingerprint": null,
"usage": {
"prompt_tokens": 2795,
"total_tokens": 2812,
"completion_tokens": 17,
"prompt_tokens_details": null
},
"prompt_logprobs": null,
"prompt_token_ids": null,
"kv_transfer_params": null
}
Probabilità di registro
Le probabilità di log rappresentano la probabilità di ogni token in una sequenza, calcolata come log (p) dove p è la probabilità di un token in qualsiasi posizione, dato il token precedente nel contesto. Poiché i log probs sono additivi, la probabilità di sequenza è uguale alla somma dei singoli token log probs, il che li rende utili per classificare le generazioni in base ai punteggi medi per token. Custom Model Import restituirà sempre i valori logprob non elaborati per i token richiesti.
Le applicazioni principali includono attività di classificazione in cui i log probs abilitano soglie di confidenza personalizzate, sistemi di domande e risposte per il recupero che utilizzano punteggi di confidenza per ridurre le allucinazioni, suggerimenti di completamento automatico basati sulla probabilità dei token e calcoli di perplessità per confrontare le prestazioni del modello tra i prompt. I log probs forniscono anche funzionalità di analisi a livello di token, che consentono agli sviluppatori di esaminare token alternativi in base al modello considerato.
I logprobs non vengono memorizzati nella cache. Per una richiesta che richiede il prompt logprobs, il sistema ignorerà la cache dei prefissi e ricalcola la precompilazione del prompt completo per generare i logprobs. Ciò presenta un evidente compromesso in termini di prestazioni quando si utilizza logprobs.
Il supporto per la probabilità di log varia in base al formato dell'API:
BedrockCompletion - Solo token di output
ApriAICompletion : richiama e invia i token
Open AIChat Completion: token di richiesta e di output
- BedrockCompletion
-
BedrockCompletion supporta solo i token di output logprobs. Ciò restituirà il primo logprob per ogni token di output.
payload = {
"prompt": "How is the rainbow formed?",
"max_gen_len": 10,
"temperature": 0.5,
"return_logprobs": True
}
response = client.invoke_model(
modelId='your-model-arn',
body=json.dumps(payload),
accept='application/json',
contentType='application/json'
)
response_body = json.loads(response['body'].read())
Risposta di esempio (troncata):
{
"generation": " A rainbow is formed when sunlight passes through water dro",
"prompt_token_count": 7,
"generation_token_count": 10,
"stop_reason": "length",
"logprobs": [
{
"362": -2.1413702964782715
},
{
"48713": -0.8180374503135681
},
{
"374": -0.09657637774944305
},
...
]
}
- OpenAIChatCompletion
-
Open AIChat Completion supporta sia i prompt che i token di output logprobs. È possibile impostare top_logprobs=N e prompt_logprobs=N dove N è un numero intero che rappresenta le probabilità logaritmiche per gli N token più probabili in ogni posizione.
payload = {
"messages": [
{
"role": "user",
"content": "How is the rainbow formed?"
}
],
"max_tokens": 10,
"temperature": 0.5,
"logprobs": True,
"top_logprobs": 1,
"prompt_logprobs": 1
}
response = client.invoke_model(
modelId='your-model-arn',
body=json.dumps(payload),
accept='application/json',
contentType='application/json'
)
response_body = json.loads(response['body'].read())
Esempio di risposta (troncata):
{
"id": "chatcmpl-xxx",
"object": "chat.completion",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "A rainbow is formed..."
},
"logprobs": {
"content": [
{
"token": "A",
"logprob": -0.07903262227773666,
"bytes": [65],
"top_logprobs": [
{
"token": "A",
"logprob": -0.07903262227773666,
"bytes": [65]
}
]
},
{
"token": " rainbow",
"logprob": -0.20187227427959442,
"bytes": [32, 114, 97, 105, 110, 98, 111, 119],
"top_logprobs": [...]
},
...
]
},
"finish_reason": "length"
}
],
"usage": {
"prompt_tokens": 41,
"completion_tokens": 10,
"total_tokens": 51
}
}