Funzionalità API avanzate per modelli importati - Amazon Bedrock

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

Nota

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

avvertimento

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.

Nota

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 } }