Skip to main content

Messages compatible con Anthropic

Migre su aplicación de Anthropic a Model Studio cambiando tres configuraciones. Este tema cubre los parámetros de solicitud y respuesta con ejemplos de código.

Para migrar una aplicación existente de Anthropic a Model Studio, cambie estas configuraciones:
  • api_key: Reemplace con la clave API de Model Studio.
  • base_url: Reemplace con un endpoint de Model Studio listado a continuación.
  • model: Reemplace con un nombre de modelo compatible, como qwen3.7-plus.
Alibaba Cloud Model Studio ha lanzado dominios específicos de espacio de trabajo para las regiones de China (Pekín), Singapur y China (Hong Kong). Los nuevos dominios dedicados ofrecen un rendimiento superior y una mayor estabilidad para las solicitudes de inferencia. Recomendamos migrar a los nuevos dominios:
  • China (Pekín): de https://dashscope.aliyuncs.com a https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com
  • Singapur: de https://dashscope-intl.aliyuncs.com a https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com
  • China (Hong Kong): de https://cn-hongkong.dashscope.aliyuncs.com a https://{WorkspaceId}.cn-hongkong.maas.aliyuncs.com
{WorkspaceId} es su ID de espacio de trabajo, que se encuentra en la página Workspace Details de la consola de Alibaba Cloud Model Studio. El dominio existente permanece totalmente funcional.
  • Singapore
  • China (Beijing)
  • Germany (Frankfurt)
  • EE. UU. (Virginia)
  • Japan (Tokyo)
SDK base_url:https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/apps/anthropicURL de solicitud HTTP:POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/apps/anthropic/v1/messages
Reemplace {WorkspaceId} con su ID de espacio de trabajo real. Autenticación: Pase su clave API de Model Studio en el encabezado x-api-key o en el encabezado Authorization: Bearer.

Cuerpo de la solicitud

model string (Obligatorio)Nombre del modelo. Modelos admitidos:
Qwen-Max: qwen4-max-preview (solo Token Plan), serie qwen3.8-max, qwen3.7-max, qwen3.7-max-2026-05-20, qwen3.7-max-2026-06-08Qwen-Plus: qwen3.7-plus, qwen3.7-plus-2026-05-26, qwen3.6-plus, qwen3.6-plus-2026-04-02, qwen3.5-plus, qwen3.5-plus-2026-04-20, qwen3.5-plus-2026-02-15, qwen-plus, qwen-plus-latestQwen-Flash: qwen3.8-flash, qwen3.7-flash, qwen3.7-flash-2026-07-15, qwen3.6-flash, qwen3.6-flash-2026-04-16, qwen3.5-flash, qwen3.5-flash-2026-02-23, qwen-flash, qwen-flash-2025-07-28Qwen-Coder: qwen3-coder-flashQwen-VL: qwen3-vl-plusQwen Modelos de código abierto: qwen3.6-27b, qwen3.5-397b-a17b, qwen3.5-122b-a10b, qwen3.5-27b, qwen3.5-35b-a3b, qwen3.8-2.4t-a95b, qwen3.8-27bModelos de tercerosdeepseek-v4.1-flash, deepseek-v4-pro, deepseek-v4-pro-0813, deepseek-v4-flash-0731, kimi-k3.1-pro, kimi-k3, kimi-k2.7-code, kimi-k2.5, glm-5.3, glm-5.1, glm-5, MiniMax-M2.5, deepseek-v4.1-flash-1017
max_tokens integer (Obligatorio)
  • qwen4-max-preview, deepseek-v4.1-flash, deepseek-v4-pro, deepseek-v4-pro-0813, deepseek-v4-flash-0731, serie qwen3.8-max, qwen3.8-flash: max_tokens es el recuento total máximo de tokens tanto para el contenido de la respuesta como para el contenido de la cadena de pensamiento. La generación se detiene anticipadamente cuando la salida del modelo excede este valor, y stop_reason es max_tokens.
    max_tokens limita la longitud combinada del contenido de la respuesta y el proceso de pensamiento. Cuando el pensamiento extendido está habilitado, max_tokens > thinking.budget_tokens
  • glm-5.3: max_tokens es el recuento total máximo de tokens tanto para el contenido de la respuesta como para el contenido de la cadena de pensamiento. La generación se detiene anticipadamente cuando la salida del modelo excede este valor, y stop_reason es max_tokens. glm-5.3 ignora el parámetro thinking.budget_tokens.
  • glm-5.2: Cuando no se pasa el parámetro thinking.budget_tokens, max_tokens es el recuento total máximo de tokens tanto para el contenido de la respuesta como para el contenido de la cadena de pensamiento. La generación se detiene anticipadamente cuando la salida del modelo excede este valor, y stop_reason es max_tokens. Cuando se pasa el parámetro thinking.budget_tokens, max_tokens representa únicamente el número máximo de tokens para el contenido de la respuesta, y los tokens de razonamiento se controlan por separado mediante thinking.budget_tokens.
  • Otros modelos: Número máximo de tokens para el contenido de la respuesta. Si el contenido generado excede este valor, la generación se detiene anticipadamente y stop_reason es max_tokens.
    max_tokens no limita la longitud del proceso de pensamiento. Cuando el pensamiento extendido está habilitado, los tokens de pensamiento se controlan por separado mediante thinking.budget_tokens.
system string or array (Opcional)Prompt del sistema que define el comportamiento del modelo. system es un parámetro de nivel superior — el arreglo messages no acepta un rol system.Una cadena equivale a un solo bloque type="text". Pase un arreglo para marcar puntos de interrupción de caché de prompts.
type string (Obligatorio)Valor fijo: text.text string (Obligatorio)El texto del prompt del sistema.cache_control object (Opcional)Punto de interrupción de caché de prompts. En caso de acierto de caché, las solicitudes subsiguientes se facturan a la tarifa de lectura de caché. Contiene solo type, fijado en ephemeral.
messages array (Obligatorio)El arreglo de mensajes, organizado en turnos alternados de user/assistant.
role string (Obligatorio)El rol del mensaje. Valores válidos: user, assistant.content string or array (Obligatorio)Cadena de texto plano o arreglo de contenido estructurado. Una cadena equivale a un solo bloque content con type="text".
Texto
type string (Obligatorio)Valor fijo: text.text string (Obligatorio)El contenido de texto.cache_control object (Opcional)Punto de interrupción de caché de prompts. Contiene solo type, fijado en ephemeral.
Imagen (requiere modelo de visión)
type string (Obligatorio)Valor fijo: image.source object (Obligatorio)El origen de los datos de imagen.
type string (Obligatorio)Valores válidos: url (URL pública de imagen), base64 (codificado en Base64).url stringLa URL pública de la imagen. Obligatorio cuando type es url.media_type stringEl tipo MIME de la imagen, como image/jpeg. Obligatorio cuando type es base64.data stringLos datos de imagen codificados en Base64. Obligatorios cuando type es base64.
Video (requiere modelo de visión)
type string (Obligatorio)Valor fijo: video.source object (Obligatorio)El origen de los datos de video.
type string (Obligatorio)Valores válidos: url (URL pública de video), base64 (codificado en Base64).url stringLa URL pública del video. Obligatorio cuando type es url.media_type stringEl tipo MIME del video, como video/mp4. Obligatorio cuando type es base64.data stringLos datos de video codificados en Base64. Obligatorios cuando type es base64.
Uso de herramientas (rol asistente; instrucción de llamada a herramienta devuelta por el modelo)
type string (Obligatorio)Valor fijo: tool_use.id string (Obligatorio)El identificador único de la llamada a herramienta, utilizado para asociar el resultado en un tool_result posterior.name string (Obligatorio)El nombre de la herramienta llamada.input object (Obligatorio)Los parámetros de entrada de la llamada a herramienta. La estructura está determinada por el input_schema de la herramienta correspondiente en tools.cache_control object (Opcional)Punto de interrupción de caché de prompts. Contiene solo type, fijado en ephemeral. El contenido de la llamada a herramienta participa en el prefijo de caché.
Resultado de herramienta (rol usuario; resultado de ejecución de una herramienta enviado de vuelta al modelo)
type string (Obligatorio)Valor fijo: tool_result.tool_use_id string (Obligatorio)Corresponde al id en el bloque tool_use.content string (Obligatorio)Contenido devuelto por la herramienta.cache_control object (Opcional)Punto de interrupción de caché de prompts. Contiene solo type, fijado en ephemeral.
stream boolean (Opcional)Si se habilita el streaming. Valor predeterminado: false.temperature number (Opcional)Controla la diversidad del texto generado. Rango de valores: [0, 2). Los valores más altos producen resultados más aleatorios.
Este rango es diferente al rango oficial de Anthropic de [0.0, 1.0]. Al migrar desde Anthropic, verifique el valor de este parámetro.
top_p number (Opcional)Umbral de probabilidad de muestreo de núcleo.
Tanto temperature como top_p pueden controlar la diversidad del texto generado. Recomendamos configurar solo uno de ellos. Para más información, consulte Descripción general.
top_k integer (Opcional)Tamaño del conjunto de candidatos durante el muestreo.stop_sequences array (Opcional)Secuencias de texto que activan la detención de la generación. La salida termina antes de la secuencia coincidente.
Después de una coincidencia, el stop_reason en la respuesta es stop_sequence, y la secuencia coincidente se devuelve en el campo stop_sequence de la respuesta.
thinking object (Opcional)kimi-k3.1-pro habilita el pensamiento de forma predeterminada.Configuración de pensamiento extendido. Cuando está habilitada, el modelo razona antes de responder, y la respuesta incluye bloques de contenido de tipo thinking. No todos los modelos admiten el modo de pensamiento.Cuando no se pasa este parámetro, si el modelo realiza pensamiento o no depende de su comportamiento predeterminado: qwen4-max-preview, qwen3.8-max, qwen3.8-flash, la serie deepseek-v4, la serie glm y kimi-k3.1-pro habilitan el pensamiento de forma predeterminada; kimi-k2.6 y kimi-k2.5 lo deshabilitan de forma predeterminada; kimi-k2.7-code y MiniMax-M2.5 solo admiten el modo de pensamiento (no puede deshabilitarse). Para consultar la compatibilidad con el modo de pensamiento y los valores predeterminados de cada modelo, consulte Pensamiento profundo.
type string (Obligatorio)Valores válidos: enabled (habilitar modo de pensamiento), disabled (deshabilitar modo de pensamiento).budget_tokens integer (Opcional, quedará obsoleto)
Este parámetro quedará obsoleto. Para nuevas integraciones, utilice effort.
Tokens máximos para el proceso de razonamiento. Independiente de max_tokens: este parámetro limita la parte de razonamiento, mientras que max_tokens limita la respuesta final. Un presupuesto mayor permite un análisis más exhaustivo en preguntas complejas. Surte efecto cuando type es enabled.
tools array (Opcional)Definiciones de herramientas para llamada de funciones.
name string (Obligatorio)El nombre de la herramienta.description string (Opcional)La descripción de la función de la herramienta.input_schema object (Obligatorio)La definición JSON Schema de los parámetros de entrada de la herramienta.
kimi-k3.1-pro (implementado en Alibaba Cloud Model Studio) admite web_search y web_fetch en Pekín, Singapur, EE. UU. (Virginia), Alemania (Fráncfort), Japón (Tokio) y China (Hong Kong).deepseek-v4.1-flash-1017 admite las herramientas de búsqueda web web_search y de recuperación de páginas web web_fetch. Para los requisitos y ejemplos de solicitudes compatibles con Anthropic, consulte Extractor web.tool_choice object (Opcional)Estrategia de selección de herramientas:
  • {"type": "auto"}: El modelo decide si llamar a una herramienta (predeterminado).
  • {"type": "any"}: Forzar al modelo a llamar a cualquier herramienta.
  • {"type": "none"}: Prohibir al modelo llamar a herramientas.
  • {"type": "tool", "name": "tool_name"}: Forzar al modelo a llamar a una herramienta específica.
output_config object (Opcional)
effort string (Opcional)Controla la intensidad de inferencia de los modelos. Los valores válidos y predeterminados varían según el modelo.Para kimi-k3.1-pro (implementado en Alibaba Cloud Model Studio), el valor predeterminado es max. Los valores admitidos son max (razonamiento profundo), high (razonamiento mejorado), medium (razonamiento moderado) y low (razonamiento ligero).
  • glm-5.3: Valor predeterminado: max Valores válidos:
    • low: Inferencia de baja intensidad
    • high: Inferencia de alta intensidad
    • max: Inferencia de intensidad máxima
    Pasar cualquier otro valor devuelve un error.
  • glm-5.2 y deepseek-v4-pro: Valor predeterminado: max Valores válidos:
    • high: Inferencia de alta intensidad
    • max: Inferencia de intensidad máxima
    low y medium se asignan a high, y xhigh se asigna a max.
  • qwen4-max-preview, qwen3.8-max/qwen3.8-flash: Valor predeterminado: xhigh Valores válidos:
    • xhigh: Inferencia de alta intensidad
    • medium: Inferencia de intensidad media
    • low: Inferencia de baja intensidad
    max y high se asignan a xhigh.
format object (Opcional)Configuración de salida estructurada. Cuando está habilitada, el modelo devuelve una cadena JSON. El comportamiento varía según el modelo:deepseek-v4.1-flash y deepseek-v4.1-flash-1017 no admiten este parámetro y devuelven un error 400 si se especifica.
  • Salidas estructuradas estrictas: Disponible para qwen4-max-preview y modelos de las series qwen3.8, qwen3.7, deepseek (excepto deepseek-v4.1-flash, deepseek-v4.1-flash-1017, deepseek-v4-flash-0731 y deepseek-v4-pro-0813) y glm. El modelo sigue estrictamente el JSON Schema proporcionado, garantizando los mismos tipos de campos y jerarquía.
  • Salidas estructuradas regulares: Para todos los demás modelos, las restricciones de campos del esquema no se aplican; la API recurre automáticamente a un modo JSON simple (garantizando únicamente que la salida sea una cadena JSON válida). En este modo alternativo, la solicitud debe cumplir ambos requisitos siguientes: (1) el parámetro output_config se proporciona explícitamente; (2) el contenido de system o messages contiene la palabra clave "JSON" (sin distinción entre mayúsculas y minúsculas). Si falta la palabra clave "JSON", la API genera el error: 'messages' must contain the word 'json' in some form.
type string (Obligatorio)Valor fijo: json_schema.schema object (Obligatorio)Objeto JSON Schema que sigue la especificación estándar de JSON Schema. Debe incluir type (tipo de datos), properties (definiciones de campos), required (matriz de nombres de campos obligatorios) y additionalProperties (debe establecerse en false).
  • Llamada básica
  • Transmisión
  • Razonamiento extendido
  • Comprensión de imágenes
  • Comprensión de video
  • Llamada a funciones
  • Caché de prompts
  • Salidas estructuradas
Python
import anthropic
import os

client = anthropic.Anthropic(
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # Replace {WorkspaceId} with your actual workspace ID. URLs vary by region.
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/apps/anthropic",
)

message = client.messages.create(
    model="qwen3.8-max",
    max_tokens=1024,
    system="You are a helpful assistant",
    messages=[
        {
            "role": "user",
            "content": "Who are you?"
        }
    ],
    thinking={"type": "disabled"},
)

print(message.content[0].text)

Respuesta sin streaming

id stringIdentificador único del mensaje.type stringValor fijo: message.role stringValor fijo: assistant.model stringEl modelo utilizado para la generación.content arrayLa matriz de contenido.
Texto
type stringValor fijo: text.text stringLa respuesta de texto generada por el modelo.
Pensamiento (devuelto cuando el Pensamiento Extendido está habilitado)
type stringValor fijo: thinking.thinking stringEl razonamiento del modelo antes de la respuesta final.signature stringActualmente fijado como una cadena vacía.
Uso de herramientas (escenario de llamada a función)
type stringValor fijo: tool_use.id stringIdentificador único de llamada a herramienta, utilizado para coincidir con el tool_result.name stringEl nombre de la herramienta llamada.input objectLos parámetros de entrada de la llamada a la herramienta.
stop_reason stringMotivo por el que se detuvo la generación. Valores válidos: end_turn (finalización normal), max_tokens (límite de tokens alcanzado), tool_use (llamada a herramienta).stop_sequence stringSiempre null.usage objectEstadísticas de uso de tokens.
En llamadas en streaming, el campo usage del evento message_start contiene solo input_tokens y output_tokens. Los cuatro campos completos se devuelven en el evento message_delta.
input_tokens integerTokens de entrada.output_tokens integerTokens de salida.cache_creation_input_tokens integerTokens consumidos para la creación de caché.cache_read_input_tokens integerTokens consumidos por lecturas de caché.
Ejemplo de respuesta
{
  "id": "msg_e2898f19-fc0e-4cb3-bd9b-5b7dc4ea3bc9",
  "type": "message",
  "role": "assistant",
  "model": "qwen3.8-max",
  "content": [
    {
      "type": "thinking",
      "thinking": "Let me analyze this problem...",
      "signature": ""
    },
    {
      "type": "text",
      "text": "Hello! I am Qwen..."
    }
  ],
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 22,
    "output_tokens": 223,
    "cache_creation_input_tokens": 0,
    "cache_read_input_tokens": 0
  }
}

Respuesta en streaming

message_startPrimer evento de flujo, marca el inicio del mensaje.
type stringValor fijo: message_start.message objectEl objeto de mensaje inicial. content es un arreglo vacío, y usage contiene solo input_tokens y output_tokens.
content_block_startMarca el inicio de un bloque de contenido.
type stringValor fijo: content_block_start.index integerÍndice basado en 0 correspondiente a la posición en el arreglo content.content_block objectEl objeto inicial del bloque de contenido. El valor de type es text, thinking o tool_use. Para el tipo tool_use, el campo input es un objeto vacío en este evento, y los parámetros de entrada completos se ensamblan a partir de los deltas content_block_delta subsiguientes.
content_block_deltaActualización incremental del bloque de contenido. Se envían múltiples deltas por bloque.
type stringValor fijo: content_block_delta.index integerEl índice del bloque de contenido asociado.delta objectObjeto delta. Valores de type:
  • text_delta: Delta de texto, que contiene el campo text.
  • thinking_delta: Delta de pensamiento, que contiene el campo thinking.
  • signature_delta: Delta de firma, que contiene el campo signature (actualmente fijado como una cadena vacía).
  • input_json_delta: Delta de parámetro de entrada de llamada a herramienta, que contiene el campo partial_json.
content_block_stopMarca el final de un bloque de contenido.
type stringValor fijo: content_block_stop.index integerEl índice del bloque de contenido finalizado.
message_deltaEnviado después de que terminan todos los bloques de contenido. Contiene el motivo de detención y el uso final de tokens.
type stringValor fijo: message_delta.delta objectContiene stop_reason y stop_sequence. Para valores válidos, consulte la tabla de Respuesta sin streaming anterior.usage objectEstadísticas completas de uso de tokens, incluyendo input_tokens, output_tokens, cache_creation_input_tokens y cache_read_input_tokens.
message_stopEvento final, marca el fin del mensaje.
type stringValor fijo: message_stop.Además, las respuestas en streaming envían periódicamente eventos ping ({"type":"ping"}) para mantener activa la conexión. Los clientes pueden ignorarlos.
Ejemplo de respuesta en streaming
{"type":"message_start","message":{"id":"msg_xxx","type":"message","role":"assistant","model":"qwen3.8-max","content":[],"usage":{"input_tokens":15,"output_tokens":0}}}
{"type":"content_block_start","index":0,"content_block":{"type":"thinking","thinking":"","signature":""}}
{"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":"Here's a thinking process:\n\n1. **Analyze User Input:**\n   - **Topic:** Artificial Intelligence (AI)\n   - **Request:** Give a brief introduction to artificial intelligence."}}
{"type":"content_block_delta","index":0,"delta":{"type":"signature_delta","signature":""}}
{"type":"content_block_stop","index":0}
{"type":"content_block_start","index":1,"content_block":{"type":"text","text":""}}
{"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":"Artificial intelligence (AI) is an important branch of computer science..."}}
{"type":"content_block_stop","index":1}
{"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"input_tokens":15,"output_tokens":1078,"cache_creation_input_tokens":0,"cache_read_input_tokens":0}}
{"type":"message_stop"}

FAQ

Después de configurar Claude Desktop o Claude Code, la prueba de conexión falla conModel discovery — Gateway /v1/models returned HTTP 404, o la URL de solicitud contiene/v1/v1/models. ¿Cómo lo soluciono? La función de descubrimiento de modelos de clientes como Claude Desktop y Claude Code agrega automáticamente /v1/models a la URL base configurada. Verifique los siguientes dos puntos:
  • No termine la URL base con/v1/: debe terminar en /apps/anthropic (por ejemplo, para China (Beijing) use https://dashscope.aliyuncs.com/apps/anthropic; consulte la información de endpoints anterior para otras regiones). Si introduce erróneamente .../apps/anthropic/v1/, el cliente añade /v1/models y produce la ruta duplicada /v1/v1/models, que devuelve HTTP 404. Por lo tanto, cuando obtenga un error 404, verifique primero si la URL de solicitud real contiene una ruta /v1/v1/ duplicada; de ser así, elimine la parte final /v1/ de la URL base.
  • Agregar modelos manualmente para omitir la detección: el endpoint compatible con Anthropic de Model Studio proporciona únicamente la Messages API (/v1/messages) y no ofrece un endpoint de lista de modelos (/v1/models), por lo que la solicitud de detección de modelos también devuelve 404. Agregue modelos manualmente (por ejemplo, qwen3.7-plus) en la sección Models del cliente para omitir la detección automática.