Migración desde Text Completions
Migración desde Text Completions a Messages
Al migrar desde Text Completions a Messages, considera los siguientes cambios.
Entradas y salidas
El cambio más grande entre Text Completions y Messages es la forma en que especificas las entradas del modelo y recibes las salidas del modelo.
Con Text Completions, las entradas son cadenas de texto sin procesar:
Con Messages, especificas una lista de mensajes de entrada en lugar de un prompt sin procesar:
Cada mensaje de entrada tiene un role
y content
.
Nombres de roles
La API de Text Completions espera turnos alternos de \n\nHuman:
y \n\nAssistant:
, pero la API de Messages espera roles user
y assistant
. Puedes ver documentación que se refiere a turnos “human” o “user”. Estos se refieren al mismo rol, y será “user” en adelante.
Con Text Completions, el texto generado por el modelo se devuelve en los valores completion
de la respuesta:
Con Messages, la respuesta es el valor content
, que es una lista de bloques de contenido:
Poner palabras en la boca de Claude
Con Text Completions, puedes pre-llenar parte de la respuesta de Claude:
Con Messages, puedes lograr el mismo resultado haciendo que el último mensaje de entrada tenga el rol assistant
:
Al hacerlo, el content
de la respuesta continuará desde el content
del último mensaje de entrada:
System prompt
Con Text Completions, el system prompt se especifica agregando texto antes del primer turno \n\nHuman:
:
Con Messages, especificas el system prompt con el parámetro system
:
Nombres de modelos
La API de Messages requiere que especifiques la versión completa del modelo (ej. claude-3-opus-20240229
).
Anteriormente soportábamos especificar solo el número de versión principal (ej. claude-2
), lo que resultaba en actualizaciones automáticas a versiones menores. Sin embargo, ya no recomendamos este patrón de integración, y Messages no lo soporta.
Razón de parada
Text Completions siempre tienen un stop_reason
de:
"stop_sequence"
: El modelo terminó su turno naturalmente, o una de tus secuencias de parada personalizadas fue generada."max_tokens"
: El modelo generó tumax_tokens
especificado de contenido, o alcanzó su máximo absoluto.
Messages tienen un stop_reason
de uno de los siguientes valores:
"end_turn"
: El turno conversacional terminó naturalmente."stop_sequence"
: Una de tus secuencias de parada personalizadas especificadas fue generada."max_tokens"
: (sin cambios)
Especificar tokens máximos
- Text Completions: parámetro
max_tokens_to_sample
. Sin validación, pero valores limitados por modelo. - Messages: parámetro
max_tokens
. Si pasas un valor mayor al que el modelo soporta, devuelve un error de validación.
Formato de streaming
Al usar "stream": true
con Text Completions, la respuesta incluía cualquiera de los eventos enviados por el servidor completion
, ping
, y error
. Ver Text Completions streaming para detalles.
Messages pueden contener múltiples bloques de contenido de tipos variados, y por lo tanto su formato de streaming es algo más complejo. Ver Messages streaming para detalles.