Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Funciones de API avanzadas para modelos importados
Esta página proporciona ejemplos detallados de las funciones avanzadas disponibles para los modelos importados después del 11 de noviembre de 2025. Estas capacidades incluyen salidas estructuradas para una generación controlada, un soporte de visión mejorado para el procesamiento de múltiples imágenes, probabilidades de registro para obtener información fiable y uso de herramientas para GPT-OSS crear modelos.
Salidas estructuradas
Las salidas estructuradas permiten la generación controlada siguiendo formatos, esquemas o patrones específicos. Esta función garantiza que la respuesta del modelo cumpla con las restricciones predefinidas, lo que lo hace ideal para aplicaciones que requieren formatos de datos consistentes, integraciones de API o procesos de procesamiento automatizados.
Las salidas estructuradas de Custom Model Import se admiten mediante dos parámetros:
response_format- Soportes json_object y json_schema tipos
structured_outputs- Soportes json regexchoice, y grammar tipos
Al utilizar resultados estructurados en Custom Model Import, los clientes deben esperar que el rendimiento se vea reducido debido a la validación de las restricciones durante la generación. Las restricciones simples json_object tienen un impacto mínimo, mientras que las restricciones complejas grammar pueden aumentar significativamente la latencia json_schema y reducir el rendimiento. choice Para obtener un rendimiento óptimo, utilice tipos de restricciones más simples siempre que sea posible y mantenga los esquemas planos en lugar de anidados en profundidad.
Los siguientes ejemplos muestran la compatibilidad de los resultados estructurados en diferentes formatos de API. La definición del modelo Pydantic es:
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 admite salidas estructuradas utilizando únicamente el response_format parámetro con json_schema tipos json_object y.
Ejemplo: esquema 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())
Ejemplo de respuesta:
{
"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 admite parámetros response_format (json_object, json_schema) y structured_outputs (json, regex, choice, grammar). Úselo max_tokens en lugar de para enrutar las solicitudes a Open. max_gen_len AICompletion
Ejemplo: Salidas estructuradas: elección
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())
Ejemplo de respuesta:
{
"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 admite parámetros response_format (json_object, json_schema) y structured_outputs (json, regex, choice, grammar).
Ejemplo: Formato de respuesta: esquema 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())
Ejemplo de respuesta:
{
"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
}
}
Vision Support
Las capacidades de visión permiten procesar imágenes junto con la entrada de texto, con una compatibilidad mejorada con varias imágenes para tareas complejas de análisis visual. La importación de modelos personalizados ahora admite hasta 3 imágenes por solicitud, lo que supone una mejora con respecto a la limitación anterior de una sola imagen.
API compatible: solo Open AIChat Completion. Todos los modelos importados después del 11 de noviembre de 2025 utilizarán esta API de forma predeterminada para las capacidades de visión.
Requisitos de imagen:
Se requiere la codificación Base64: la imagen URLs provocará errores en las solicitudes
Máximo 3 imágenes por solicitud
Las imágenes de alta resolución aumentan considerablemente el tiempo de procesamiento y el uso de memoria
Las imágenes de alta resolución aumentan considerablemente el tiempo de procesamiento y el uso de memoria y pueden provocar errores de tiempo de espera. Varias imágenes de alta resolución agravan el impacto en el rendimiento de forma exponencial. Para obtener un rendimiento óptimo, cambie el tamaño de las imágenes de forma adecuada y utilice niveles de detalle más bajos siempre que sea posible.
- OpenAIChatCompletion
-
Ejemplo: procesamiento de varias imágenes
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())
Ejemplo de respuesta:
{
"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
}
Probabilidades logarítmicas
Las probabilidades logarítmicas representan la probabilidad de que cada ficha aparezca en una secuencia, calculada como log (p), donde p es la probabilidad de que una ficha se encuentre en cualquier posición dada su ficha anterior en el contexto. Como los probos logarítmicos son aditivos, la probabilidad de secuencia es igual a la suma de los probes logarítmicos individuales, lo que los hace útiles para clasificar generaciones según las puntuaciones medias por token. La importación de modelos personalizados siempre devolverá los valores de logprob sin procesar de los tokens solicitados.
Las aplicaciones clave incluyen tareas de clasificación en las que los sondeos de registro permiten establecer umbrales de confianza personalizados, sistemas de recuperación de preguntas y respuestas que utilizan puntuaciones de confianza para reducir las alucinaciones, completar automáticamente sugerencias basadas en la probabilidad simbólica y cálculos de perplejidad para comparar el rendimiento del modelo en función de las indicaciones. Los sondeos de registro también proporcionan funciones de análisis a nivel de token, lo que permite a los desarrolladores examinar los tokens alternativos que el modelo ha considerado.
Los logprobs no se almacenan en caché. En el caso de una solicitud que requiera problemas de registro rápidos, el sistema ignorará la caché de prefijos y volverá a calcular el llenado previo del mensaje completo para generar los problemas de registro. Esto supone una evidente desventaja en cuanto al rendimiento cuando se utilizan los logprobs.
El soporte de probabilidad logarítmica varía según el formato de la API:
BedrockCompletion - Solo fichas de salida
AbiertoAICompletion : solicita y genera tokens
AIChatFinalización abierta: fichas de solicitud y salida
- BedrockCompletion
-
BedrockCompletion solo admite los logprobs de token de salida. Esto devolverá el primer logprob de cada token de salida.
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())
Ejemplo de respuesta (truncada):
{
"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 admite problemas de registro tanto de entrada como de token de salida. Puede establecer top_logprobs=N y prompt_logprobs=N donde N es un número entero que representa las probabilidades logarítmicas de las N fichas más probables en cada posición.
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())
Ejemplo de respuesta (truncada):
{
"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
}
}