Skip to main content

Crear una respuesta

Utilice la API de Responses compatible con OpenAI para llamar al modelo Qwen. Este tema describe los parámetros de entrada y salida, y proporciona un ejemplo de llamada.

Ventajas sobre la API de Chat Completions de OpenAI:
  • Herramientas integradas: Obtenga mejores resultados en tareas complejas con herramientas integradas como búsqueda web, extracción web, intérprete de código, texto a imagen, imagen a imagen y búsqueda en base de conocimientos. Para obtener más información, consulte llamada a herramientas.
  • Entrada más flexible: Admite tanto la entrada directa de cadenas como matrices de mensajes en formato de chat.
  • Gestión simplificada del contexto: Evite construir manualmente una matriz de historial de mensajes pasando el previous_response_id de la última respuesta.
  • Almacenamiento en caché de contexto conveniente: Agregue x-dashscope-session-cache: enable (valor predeterminado: disable) al encabezado de la solicitud para habilitar el almacenamiento en caché automático del contexto de conversación en el servidor. Esto reduce la latencia de inferencia y los costos para conversaciones de múltiples turnos sin necesidad de cambios en el código. Para más detalles, consulte caché de sesión.

Compatibilidad y limitaciones

Esta API es compatible con OpenAI para reducir el costo de migración de los desarrolladores, pero difiere en sus parámetros, funcionalidad y comportamiento. Principio fundamental: Solo se procesan los parámetros explícitamente listados en este documento. Cualquier parámetro de OpenAI no mencionado se ignora. Las siguientes diferencias clave le ayudarán a adaptarse rápidamente:
  • Parámetros No Admitidos: Esta API no admite algunos parámetros de la API de OpenAI, como el parámetro de ejecución asíncrona background. La API actualmente solo admite llamadas síncronas.
  • Control del Esfuerzo de Razonamiento: Utilice el parámetro reasoning.effort para controlar el esfuerzo de razonamiento del modelo. Para detalles de uso, consulte la descripción de este parámetro.
  • Límite de contexto: Para reservar espacio para las llamadas a herramientas integradas y la generación de razonamiento, el contexto de entrada máximo de la API de Responses es aproximadamente el 80% de la ventana de contexto del modelo (dejando un búfer de alrededor del 20%). Cualquier exceso se trunca automáticamente sin generar un error ni interrumpir la solicitud.
  • Singapore
  • China (Beijing)
  • EE. UU. (Virginia)
  • Germany (Frankfurt)
  • Hong Kong (China)
  • Japan (Tokyo)
El base_url para la configuración de llamada del SDK es https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1.Endpoint de solicitud HTTP: POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/responses
Reemplace {WorkspaceId} con su ID de espacio de trabajo real.
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.
La ruta URL heredada /api/v2/apps/protocols/compatible-mode/v1/responses para la API de Responses compatible con OpenAI ya no recibe mantenimiento y su funcionalidad ya no está garantizada. Migre a la nueva ruta /compatible-mode/v1/responses lo antes posible.

Cuerpo de la solicitud

model string (obligatorio)El ID del modelo a utilizar.
qwen4-max-preview (solo Token Plan), qwen3.8-max, qwen3.8-max-0902, qwen3.8-flash, qwen3.8-2.4t-a95b, qwen3.8-27b, qwen3.8-omni-flash, qwen3.7-max, qwen3.7-max-2026-05-20, qwen3.7-max-2026-06-08, qwen3.7-max-2026-05-17, qwen3.7-max-preview, 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, 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, qwen3.6-35b-a3b, qwen3.5-397b-a17b, qwen3.5-122b-a10b, qwen3.5-27b, qwen3.5-35b-a3b, deepseek-v4.1-flash, deepseek-v4.1-flash-1017, deepseek-v4-pro, deepseek-v4-pro-0813, deepseek-v4-flash-0731, glm-5.3, glm-5.2, kimi-k3.1-pro, kimi-k3
Los modelos de generación de texto que no están en la lista anterior pero que están disponibles a través de Alibaba Cloud Model Studio solo admiten funciones básicas de compatibilidad. Las capacidades de agente (herramientas integradas, etc.) son limitadas.
input string or array (obligatorio)La entrada para el modelo. Se admiten los siguientes formatos:
  • string: Texto sin formato, como "Hello".
  • array: Un arreglo de mensajes, ordenados por turno de conversación.
EasyInputMessage objectUn objeto con un role para el autor del mensaje y content para la carga útil del mensaje.
rol string (obligatorio)El rol del autor del mensaje. Valores válidos: user, assistant, system, developer.contenido string or array (obligatorio)El contenido del mensaje. Se admiten los siguientes formatos:
  • string: Entrada de texto sin formato.
  • array: Un arreglo de contenido con uno o más elementos, que pueden combinar distintos tipos. Para los roles system y developer, el tipo de elemento es input_text; para el rol assistant, el tipo de elemento es output_text.
Uno de los siguientes:input_text { type, text }Entrada de texto.
type string (obligatorio)Fijado como input_text.text string (obligatorio)El contenido de texto de entrada para el modelo.
input_image { type, image_url }Entrada de imagen, solo rol user.
type string (obligatorio)Fijado como input_image.image_url string (obligatorio)La URL pública o los datos codificados en Base64 de la imagen. Para Base64, proporcione un Data URI completo, por ejemplo: data:image/png;base64,iVBORw0KGgoAAAANSUhEUg....
input_file { type, file_url }Entrada de archivo, solo rol user. Actualmente es compatible con qwen4-max-preview, qwen3.8-flash, qwen3.8-max y qwen3.5-ocr.
type string (obligatorio)Fijado como input_file.file_url string (obligatorio)La URL pública del archivo PDF. El tamaño máximo del archivo es de 100 MB.El límite de páginas PDF depende de task en ocr_options: hasta 50 páginas cuando task está configurado como document_parsing; hasta 10 páginas cuando task no está configurado o está configurado como otra tarea.
input_audio { type, format, audio_url, 2 more }Entrada de audio, solo compatible con qwen3.8-omni-flash en mensajes user.
type string (obligatorio)Fijado como input_audio.format string (obligatorio)El formato de audio, por ejemplo wav o mp3.audio_url stringLa URL pública del audio. Utilice audio_url o data. No proporcione ambos.data stringUn URI de datos completo que contiene un prefijo de tipo MIME y audio codificado en Base64, como data:audio/wav;base64,UklGR.... Utilice data o audio_url. No proporcione ambos.use_multichannel boolean (opcional)Indica si se procesa el audio como audio espacial. El valor predeterminado es false. Configúrelo en true para procesar audio de dos canales o cuatro canales como audio espacial. Cuando es false, el audio se procesa como audio de un solo canal.
input_video { type, video_url, fps }Entrada de video, solo compatible con qwen3.8-omni-flash en mensajes user.
type string (obligatorio)Fijado como input_video.video_url string (obligatorio)La URL pública del video.fps number (opcional)Especifica cuántos fotogramas muestrear por segundo. Por ejemplo, 2 muestrea 2 fotogramas por segundo. No lo pase como una cadena.
output_text { type, text }Respuesta del asistente, solo rol assistant.
type string (obligatorio)Fijado como output_text.text string (obligatorio)El contenido de texto de la respuesta del asistente.
Las entradas de audio y video utilizan el mismo formato de respuesta y eventos de transmisión que las entradas de texto. La transmisión de texto utiliza response.output_text.delta y response.output_text.done. Para ejemplos de entrada de audio/video y salida de texto, consulte Qwen3.8-Omni-Flash.
type string (opcional)Fijado como message.
ResponseOutputMessage object (opcional)El mensaje de salida del modelo. Para continuar una conversación, puede pasar el objeto message del arreglo output de una respuesta anterior nuevamente al input. A diferencia de EasyInputMessage, este objeto incluye la estructura de salida completa, con id, status y content estructurado.
type string (obligatorio)Fijado como message.id string (obligatorio)El identificador único del mensaje de salida, proveniente de la respuesta anterior.rol string (obligatorio)Fijado como assistant.status string (obligatorio)El estado del mensaje. Valores válidos: in_progress, completed, incomplete.contenido array (obligatorio)Un arreglo de contenido, donde los elementos son objetos output_text.
type string (obligatorio)Fijado como output_text.texto string (obligatorio)El texto de respuesta.annotations array (opcional)Información de anotación.
Llamada de función object (opcional)Una instrucción estructurada generada cuando el modelo decide llamar a una herramienta externa.
type string (obligatorio)Fijado como function_call.id string (opcional)El identificador único para la llamada de función, proveniente de la respuesta anterior.name string (obligatorio)El nombre de la función de la herramienta.arguments string (obligatorio)Los argumentos de llamada de herramienta, en formato de cadena JSON.call_id string (obligatorio)El identificador para la llamada de herramienta. Debe coincidir con el call_id que devuelve el modelo.status string (opcional)El estado. Valores válidos: in_progress, completed, incomplete.
Salida de llamada de función object (opcional)La salida de una llamada de herramienta. En la lista de mensajes, este objeto debe seguir inmediatamente a su mensaje function_call correspondiente para evitar un fallo en la solicitud.
type string (obligatorio)Fijado como function_call_output.id string (opcional)El identificador único para la salida de la llamada de función.call_id string (obligatorio)El identificador de llamada de herramienta debe coincidir con el call_id devuelto por el modelo.output string (obligatorio)El resultado de la ejecución de la función de herramienta.status string (opcional)El estado. Valores válidos: in_progress, completed, incomplete.
Razonamiento object (opcional)El proceso de razonamiento del modelo. Puede pasar el elemento reasoning del output de una respuesta anterior de vuelta al input para continuar este proceso en un turno subsiguiente.
type string (obligatorio)Fijado como reasoning.id string (obligatorio)El identificador único para el contenido de razonamiento, proveniente de la respuesta anterior.summary array (obligatorio)El contenido del resumen de razonamiento.
type string (obligatorio)Fijado como summary_text.texto string (obligatorio)El texto de resumen.
status string (opcional)El estado. Valores válidos: in_progress, completed, incomplete.
Llamada de búsqueda web object (opcional)Un objeto de llamada de búsqueda web. Puede pasar el elemento web_search_call de la salida de la respuesta anterior a la entrada, proporcionando contexto de resultados de búsqueda en conversaciones de múltiples turnos.
type string (obligatorio)Siempre web_search_call.id string (obligatorio)El identificador único de la llamada de búsqueda, proveniente de la respuesta anterior.status string (obligatorio)El estado de la búsqueda. Valores válidos: in_progress, searching, completed, failed.action object (obligatorio)Los detalles de la acción de búsqueda. Solo se admite el tipo search.
type string (obligatorio)El tipo de búsqueda. Siempre search.queries array (opcional)Una lista de consultas de búsqueda. Cada elemento es una cadena.sources array (opcional)Una lista de fuentes de resultados de búsqueda.
type string (obligatorio)El tipo de fuente. Siempre url.url string (requerido)La URL de origen.
instructionsstring (opcional)Se inserta al principio del contexto como una instrucción del sistema. Cuando se utiliza previous_response_id, las instructions especificadas en el turno anterior no se pasan al contexto del turno actual.previous_response_id string (opcional)El ID único de la respuesta anterior. El id de una respuesta es válido durante 7 días. Puede utilizar este parámetro para crear conversaciones de múltiples turnos. El lado del servidor recupera y combina automáticamente la entrada y la salida de ese turno como contexto. Si proporciona tanto el arreglo de mensajes input como previous_response_id, los nuevos mensajes en input se añaden al contexto histórico. Este parámetro no se puede utilizar con conversation.conversation string (opcional)La conversación a la que pertenece la respuesta actual (consulte la API de Conversations). El historial de la conversación se incluye automáticamente como contexto. La entrada y la salida de esta solicitud se agregan a la conversación al finalizar. No se puede utilizar con previous_response_id.stream boolean (opcional) El valor predeterminado es falseHabilita la salida en streaming. Si se establece en true, el modelo transmite la respuesta en tiempo real.store boolean (opcional) El valor predeterminado es trueEspecifica si se debe almacenar la respuesta del modelo generada para esta sesión.
  • false: La respuesta no se almacena y no se puede hacer referencia a ella en llamadas posteriores mediante previous_response_id.
  • true: La respuesta se almacena. Se puede hacer referencia a la respuesta actual del modelo mediante previous_response_id y llamadas API subsiguientes.
tools array (opcional)Una matriz de herramientas que el modelo puede llamar al generar una respuesta. Admite tanto herramientas integradas como herramientas function personalizadas, que pueden usarse conjuntamente.kimi-k3.1-pro (implementado en Alibaba Cloud Model Studio) admite las herramientas integradas web_search, web_extractor y code_interpreter en Pekín, Singapur, EE. UU. (Virginia), Alemania (Fráncfort), Japón (Tokio) y China (Hong Kong).deepseek-v4.1-flash-1017 admite las tres herramientas integradas web_search, web_extractor y code_interpreter.Para qwen3.8-omni-flash, la única herramienta integrada admitida es web_search. También se admiten herramientas personalizadas de tipo function.
Búsqueda webBusca información actualizada en Internet. Documentación relacionada: Búsqueda web
type string (obligatorio)Fijado como web_search.Ejemplo: [{"type": "web_search"}]
Extractor webAccede y extrae contenido de páginas web. Debe utilizarse con la herramienta web_search. Documentación relacionada: Web Extraction
type string (obligatorio)Fijado como web_extractor.Ejemplo: [{"type": "web_search"}, {"type": "web_extractor"}]
Intérprete de códigoEjecuta código en un entorno aislado para realizar tareas como análisis de datos. Documentación relacionada: Code Interpreter
type string (obligatorio)Fijado como code_interpreter.Ejemplo: [{"type": "code_interpreter"}]
Imagen de búsqueda webBusca imágenes basándose en una descripción de texto. Documentación relacionada: Búsqueda de texto a imagen
type string (obligatorio)Fijado como web_search_image.Ejemplo: [{"type": "web_search_image"}]
Búsqueda de imágenesBusca imágenes similares o relacionadas basándose en una imagen de entrada. La entrada debe incluir la URL de la imagen. Documentación relacionada: Image-to-Image Search
type string (obligatorio)Fijado como image_search.Ejemplo: [{"type": "image_search"}]
Búsqueda de archivosRealiza la recuperación de conocimientos buscando en una base de conocimientos especificada. Documentación relacionada: Recuperación de conocimientos
type string (obligatorio)Fijado como file_search.vector_store_ids array(obligatorio)El ID de la base de conocimientos para buscar. Actualmente, solo se puede proporcionar un ID de base de conocimientos.Ejemplo: [{"type": "file_search", "vector_store_ids": ["your_knowledge_base_id"]}]
Invocación de MCPLlama a un servicio externo a través del Protocolo de Contexto del Modelo (MCP). Documentación relacionada: MCP
type string (obligatorio)Fijado como mcp.server_protocol string (obligatorio)El protocolo de comunicación con el servicio MCP, como "sse".server_label string (obligatorio)Una etiqueta utilizada para identificar el servicio MCP.server_description string (opcional)Una descripción del servicio. Ayuda al modelo a comprender su función y cuándo utilizarlo.server_url string (obligatorio)La URL del endpoint del servicio MCP.headers object (opcional)Encabezados de solicitud, utilizados para transportar información como la autenticación (por ejemplo, Authorization).Ejemplo:
mcp_tool = {
    "type": "mcp",
    "server_protocol": "sse",
    "server_label": "amap-maps",
    "server_description": "The AMap MCP Server provides a full suite of geographic information services, covering 15 core APIs. These include custom map generation, navigation, ride-hailing, geocoding, reverse geocoding, IP-based location, weather queries, and planning for cycling, walking, driving, and public transit routes, along with distance measurement and various search functions.",
    "server_url": "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/mcps/amap-maps/sse",
    "headers": {
        "Authorization": "Bearer <your-mcp-server-token>"
    }
}
Herramienta personalizadafunctionPermite al modelo llamar a una función definida por el desarrollador. Cuando el modelo determina que es necesario llamar a una herramienta, la respuesta devuelve un elemento de salida de tipo function_call. Documentación relacionada: Function calling
type string (obligatorio)Debe establecerse en function.namestring(obligatorio)El nombre de la herramienta. Solo puede contener letras, dígitos, guiones bajos (_) y guiones (-), con una longitud máxima de 64 tokens.descriptionstring(obligatorio)Una descripción de la herramienta, que ayuda al modelo a decidir cuándo y cómo llamarla.parameters object (opcional)La definición de parámetros para la herramienta, que debe ser un objeto JSON Schema válido. Si parameters está vacío, la herramienta no toma argumentos (por ejemplo, una herramienta de consulta de hora).
Para mejorar la precisión de las llamadas a herramientas, recomendamos definir parameters.
Ejemplo:
[{
  "type": "function",
  "name": "get_weather",
  "description": "Get weather information for a specified city",
  "parameters": {
    "type": "object",
    "properties": {
      "city": {
        "type": "string",
        "description": "The name of the city"
      }
    },
    "required": ["city"]
  }
}]
tool_choice string or object (opcional) El valor predeterminado es autoControla cómo el modelo selecciona y llama a las herramientas. Este parámetro admite dos formatos: modo de cadena y modo de objeto.Modo cadena
  • auto: El modelo decide si llamar a una herramienta.
  • none: Impide que el modelo llame a cualquier herramienta.
  • required: Fuerza al modelo a llamar a una herramienta. Esto solo está disponible cuando la lista tools contiene exactamente una herramienta.
Modo objetoRestringe el modelo a un conjunto específico de herramientas para su selección y llamada.
mode string (obligatorio)
  • auto: El modelo decide automáticamente si llamar a una herramienta de la lista proporcionada.
  • required: Fuerza al modelo a llamar a una herramienta de la lista proporcionada. Esto solo está disponible cuando la lista tools contiene exactamente una herramienta.
tools array(obligatorio)Una lista de definiciones de herramientas que el modelo tiene permitido llamar.
[
  { "type": "function", "name": "get_weather" }
]
typestring (obligatorio)El tipo de configuración de herramienta. Fijado en allowed_tools.
parallel_tool_calls boolean (opcional) El valor predeterminado es trueEspecifica si se habilita la llamada a herramientas en paralelo. Para obtener más información, consulte Llamada a herramientas en paralelo.
kimi-k3 no admite controlar mediante este parámetro si las llamadas a herramientas son paralelas. Establecerlo en false no garantiza llamadas secuenciales, y el modelo puede seguir devolviendo varios elementos function_call en una misma respuesta. Procese las llamadas a herramientas tal como se devuelvan.
Valores válidos:
  • true: Habilitar
  • false: Deshabilitar
temperaturefloat(opcional)La temperatura de muestreo, que controla la diversidad del texto generado.Valores más altos hacen que la salida sea más aleatoria y diversa, mientras que valores más bajos la hacen más enfocada y determinista.Rango de valores: [0, 2)Tanto temperature como top_p controlan la diversidad del texto generado. Recomendamos utilizar solo uno de estos parámetros a la vez. Para más información, consulte Overview.top_pfloat(opcional)El umbral de probabilidad para el muestreo top-p, que controla la diversidad del texto generado.Valores más altos hacen que la salida sea más aleatoria y diversa, mientras que valores más bajos la hacen más enfocada y determinista.Rango de valores: (0, 1.0]Tanto temperature como top_p controlan la diversidad del texto generado. Recomendamos utilizar solo uno de estos parámetros a la vez. Para más información, consulte Overview.enable_thinking boolean (opcional)Habilita o deshabilita el modo de razonamiento. Cuando está habilitado, el modelo realiza un paso de razonamiento antes de responder. El proceso de razonamiento se devuelve como un elemento de salida de tipo reasoning. Al habilitar el modo de razonamiento, recomendamos habilitar también las herramientas integradas para lograr los mejores resultados en tareas complejas.Valores válidos:
  • true: Habilita el modo de razonamiento.
  • false: Deshabilita el modo de razonamiento.
Para los valores predeterminados de diferentes modelos, consulte Modelos compatibles.
Este parámetro no es un parámetro estándar de OpenAI. En el SDK de Python, páselo utilizando extra_body={"enable_thinking": True}. En el SDK de Node.js y curl, utilice enable_thinking: true como parámetro de nivel superior. Recomendamos utilizar reasoning.effort en su lugar, ya que enable_thinking quedará obsoleto.
reasoning object (opcional)Controla el esfuerzo de razonamiento del modelo. El modelo realiza un paso de razonamiento antes de responder, y el proceso de razonamiento se devuelve a través de un elemento de salida de tipo reasoning.Para kimi-k3.1-pro (implementado en Alibaba Cloud Model Studio), reasoning.effort tiene el valor predeterminado max. Los valores admitidos son max (razonamiento profundo), high (razonamiento mejorado), medium (razonamiento moderado) y low (razonamiento ligero). Se recomienda mantener la configuración predeterminada de pensamiento, ya que deshabilitar el pensamiento afecta significativamente la calidad de la salida.
Los niveles y el valor predeterminado de kimi-k3.1-pro se rigen por la explicación anterior. La siguiente descripción se aplica a otros modelos.effort string (opcional): El nivel de esfuerzo de razonamiento.Admite 7 niveles incrementales: none, minimal, low, medium, high, xhigh y max. Reducir este valor acelerará la velocidad de respuesta y reducirá el consumo de Tokens de inferencia.
ModeloNiveles admitidosAsignación para otros niveles
qwen4-max-preview, qwen3.8-max, qwen3.8-max-0902, qwen3.8-flash, qwen3.8-2.4t-a95b, qwen3.8-27bnone, low, medium, xhigh (predeterminado)minimal se asigna a low; high y max se asignan a xhigh
deepseek-v4-flash-0731, deepseek-v4-pro-0813none, low, high (predeterminado), maxminimal se asigna a low; medium se asigna a high; xhigh se asigna a max
deepseek-v4.1-flashnone, low, high (predeterminado), maxminimal se asigna a low; medium y xhigh se asignan a high; pasar ultra devuelve un error
glm-5.3low, high, max (predeterminado)minimal se asigna a low; medium se asigna a high; xhigh se asigna a max
glm-5.2, deepseek-v4-pronone, high (predeterminado), maxminimal, low, y medium se asignan a high; xhigh se asigna a max
Para glm-5.3, recomendamos usar max.
reasoning.effort tiene prioridad sobre enable_thinking. Recomendamos usar reasoning.effort, ya que enable_thinking quedará obsoleto.
ocr_options object (opcional)Parámetros de tareas integradas de OCR. Solo aplicable al modelo qwen3.5-ocr. Utilice este parámetro para llamar a tareas integradas de OCR (como extracción de información y localización de texto). Los resultados de las tareas integradas se devuelven en el campo ocr_result de la respuesta.Al analizar archivos PDF, el valor de task determina el recuento de páginas admitido: hasta 50 páginas cuando task está configurado como document_parsing; hasta 10 páginas cuando task no está configurado o está configurado como otra tarea.
Este parámetro no es un parámetro estándar de OpenAI. En el SDK de Python, páselo utilizando extra_body={"ocr_options": {...}}. En el SDK de Node.js y curl, utilice ocr_options como un parámetro de nivel superior.
max_output_tokens integer (opcional)Limita el número de tokens en la salida generada.
  • Series Qwen4 y Qwen3.8: el número máximo total de tokens tanto en el contenido de respuesta del modelo como en el contenido de cadena de pensamiento combinados.
  • Qwen3.7, Qwen3.6, Qwen3.5, Qwen3-Max, DeepSeek, GLM y Kimi: el número máximo de tokens en el contenido de respuesta del modelo.
El valor mínimo para los modelos listados anteriormente es 16. Cuando el recuento de tokens generados alcanza el límite configurado, la generación se detiene anticipadamente y el estado es incomplete.text object (opcional)Configuración de la salida de texto del modelo. La salida puede ser texto sin formato o datos JSON estructurados.
format object (opcional)El formato que el modelo debe generar. Valor predeterminado: {"type": "text"}.Uno de los siguientes:ResponseFormatText { type }Formato predeterminado. Genera una respuesta de texto.
type string (obligatorio)Fijado como text.
ResponseFormatTextJSONSchemaConfig { type, json_schema }Genera una cadena JSON que cumple estrictamente con el esquema JSON especificado, lo que le brinda un control preciso sobre la estructura de salida y los tipos de campos. Compatible con la serie qwen3.8, la serie deepseek-v4, la serie glm-5 y otros modelos; la serie deepseek-v4.1 será compatible próximamente. Con este tipo, no es necesario que el prompt contenga la palabra clave JSON.
type string (obligatorio)Fijado como json_schema.json_schema object (obligatorio)La configuración del esquema JSON.
name string (obligatorio)El nombre del esquema.schema object (obligatorio)El objeto de esquema JSON que describe la estructura de salida. Utilice properties para definir la estructura de campos, required para listar los campos obligatorios y additionalProperties para controlar si se pueden devolver campos que no están definidos en el esquema (se recomienda establecerlo en false para devolver solo los campos definidos). Tipos de datos admitidos: string, number, integer, boolean, object, array y enum. Para obtener más información, consulte Guía de configuración.strict boolean (opcional)Especifica si se debe seguir estrictamente la estructura definida por schema. Recomendamos establecer este parámetro en true.
ResponseFormatJSONObject { type }Genera una cadena con formato JSON estándar. Compatible con la serie qwen3.8, la serie deepseek-v4, la serie deepseek-v4.1, la serie glm-5 y kimi-k3.1-pro (implementado en Alibaba Cloud Model Studio). Con este tipo, debe indicar explícitamente al modelo que genere JSON en el prompt, por ejemplo, "Por favor, genere en formato JSON". De lo contrario, se producirá un error.
type string (obligatorio)Fijado como json_object.
  • Llamada básica
  • Salida por secuencias
  • Conversación de múltiples turnos
  • Herramientas integradas
  • Llamada a funciones
  • Comprensión de documentos
  • Caché de sesión
Python
import os
from openai import OpenAI

client = OpenAI(
    # If the environment variable is not set, replace with: api_key="sk-xxx"
    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/compatible-mode/v1",
)

response = client.responses.create(
    model="qwen3.8-max",
    input="What can you do?"
)

# Get the model's response
print(response.output_text)

Objeto de respuesta (salida sin transmisión)

id stringUn identificador único para esta respuesta, un UUID. Este ID es válido por 7 días y puede utilizarse en el parámetro previous_response_id para crear una conversación de múltiples turnos.created_at integerLa marca de tiempo Unix (en segundos) para esta solicitud.object stringEl tipo de objeto, que siempre es response.status stringEl estado de la generación de respuesta. Valores válidos:
  • completed: Generación completada.
  • failed: Error en la generación.
  • in_progress: Generación en curso.
  • cancelled: Generación cancelada.
  • queued: Solicitud en cola.
  • incomplete: Generación incompleta.
model stringEl ID del modelo utilizado para generar la respuesta.output arrayUna matriz de elementos de salida generados por el modelo. El tipo y el orden de los elementos en la matriz dependen de la respuesta del modelo.
type stringEl tipo de elemento de salida. Valores válidos:
  • message: Un elemento de mensaje que contiene el contenido de la respuesta final del modelo.
  • reasoning: El tipo de razonamiento. Este parámetro se devuelve cuando reasoning.effort se establece en un valor distinto de none o cuando el modo de razonamiento está habilitado. Los tokens de razonamiento se cuentan en output_tokens_details.reasoning_tokens y se facturan como tokens de razonamiento.
  • function_call: El tipo de llamada de función. Se devuelve cuando se utiliza una herramienta function personalizada. Maneje la llamada de función y devuelva el resultado.
  • web_search_call: El tipo de llamada de búsqueda. Se devuelve cuando se utiliza la herramienta web_search.
  • code_interpreter_call: Un tipo de ejecución de código que se devuelve cuando se utiliza la herramienta code_interpreter.
  • web_extractor_call: El tipo de extracción web. Se devuelve cuando se utiliza la herramienta web_extractor. Debe usarse junto con la herramienta web_search.
  • web_search_image_call: El tipo de llamada para una búsqueda de texto a imagen. Esto se devuelve cuando usted utiliza la herramienta web_search_image. Contiene una lista de las imágenes encontradas.
  • image_search_call: El tipo de llamada para una búsqueda de imagen a imagen. Esto se devuelve cuando se utiliza la herramienta image_search. Contiene una lista de imágenes similares.
  • mcp_call: El tipo de llamada MCP. Se devuelve cuando se utiliza la herramienta mcp. Contiene el resultado de la llamada al servicio MCP.
  • file_search_call: El tipo de llamada para una búsqueda en base de conocimientos, que se devuelve cuando usted utiliza la herramienta file_search. Contiene la consulta de recuperación y los resultados para la base de conocimientos.
id stringEl identificador único del elemento de salida. Todos los tipos de elementos de salida contienen este campo.role stringEl rol del mensaje es siempre assistant. Este parámetro está presente solo cuando type es message.status stringEl estado del elemento de salida. Valores válidos: completed y in_progress. Este parámetro está presente cuando el parámetro type no está configurado como reasoning.name stringEl nombre de la herramienta o función. Este parámetro está presente cuando type es function_call, web_search_image_call, image_search_call o mcp_call.Para web_search_image_call y image_search_call, los valores están fijados en "web_search_image" y "image_search", respectivamente.Para mcp_call, el valor es el nombre de la función específica llamada en el servicio MCP, como amap-maps-maps_geo.arguments stringLos parámetros para la llamada a la herramienta, en formato de cadena JSON. Este parámetro está presente cuando type es function_call, web_search_image_call, image_search_call o mcp_call. Analice la cadena utilizando JSON.parse() antes de usarla. El contenido de los argumentos para los diferentes tipos de herramientas es el siguiente:
  • web_search_image_call: {"queries": ["Search Keyword 1", "Search Keyword 2"]}, donde queries es una lista de palabras clave de búsqueda generadas automáticamente por el modelo basándose en la entrada del usuario.
  • image_search_call: {"img_idx": 0, "bbox": [0, 0, 1000, 1000]}, donde img_idx es el índice de la imagen de entrada (comenzando desde 0), y bbox son las coordenadas del cuadro delimitador [x1, y1, x2, y2] para el área de búsqueda. Los valores de las coordenadas oscilan entre 0 y 1000.
  • function_call: Un objeto de parámetros generado a partir del esquema de parámetros de la función definida por el usuario.
  • mcp_call: El objeto de parámetros para la función llamada en el servicio MCP.
call_id stringEl ID único para la llamada de función. Este parámetro se incluye solo cuando type es function_call. Este ID debe incluirse en el resultado de la llamada de función para vincular la solicitud con la respuesta.content arrayLa matriz de contenido del mensaje. Este parámetro está presente solo si type está establecido en message.
type stringEl tipo de contenido. El valor está fijado en output_text.text stringEl contenido de texto generado por el modelo.annotations arrayEl arreglo de anotaciones de texto. Por lo general, es un arreglo vacío.
summary arrayUna matriz de resúmenes de razonamiento. Este campo está presente solo cuando type es reasoning. Cada elemento contiene el campo type (valor: summary_text) y el campo text (el texto del resumen).acción objectLa información sobre la acción de búsqueda. Este parámetro está presente solo cuando type es web_search_call.
query stringLas palabras clave de la consulta de búsqueda.type stringEl tipo de búsqueda. El valor siempre es search.sources arrayUna lista de fuentes de búsqueda. Cada elemento contiene los campos type y url.
code stringEl código generado y ejecutado por el modelo. Existe solo cuando type es code_interpreter_call.outputs arrayLa matriz de salida de ejecución de código. Esto está presente solo cuando type es code_interpreter_call. Cada elemento tiene un campo type (el valor es logs) y un campo logs (los registros de ejecución de código).container_id stringEl identificador del contenedor para el intérprete de código. Este parámetro está presente solo cuando type es code_interpreter_call. Este identificador asocia múltiples ejecuciones de código dentro de la misma sesión.goal stringUna descripción de la información a extraer de la página web. Este parámetro está disponible solo cuando type es web_extractor_call.output stringLa salida de la llamada de herramienta. La salida es una cadena.
  • Si type es web_extractor_call, esto es un resumen del contenido extraído de la página web.
  • Si type es web_search_image_call o image_search_call, esto es una cadena JSON que contiene una matriz de resultados de búsqueda de imágenes. Cada elemento incluye los campos title, url y index.
  • Si type es mcp_call, este es el resultado en cadena JSON devuelto por el servicio MCP.
urls arrayLa lista de URL de las páginas web extraídas. Este parámetro está disponible solo cuando type es web_extractor_call.server_label stringLa etiqueta para el servicio MCP. Aparece solo cuando type es mcp_call. Muestra qué servicio MCP utilizó la llamada.queries arrayUna lista de consultas para la recuperación de la base de conocimientos. Este parámetro existe solo cuando type es file_search_call. La matriz contiene cadenas. Cada cadena es una consulta de búsqueda generada por el modelo.results arrayUna matriz de resultados de búsqueda de la base de conocimientos. Este parámetro está presente solo cuando type es file_search_call.
file_id stringEl ID de archivo del documento coincidente.filename stringEl nombre de archivo del documento coincidente.score floatLa puntuación de relevancia de la coincidencia. El valor oscila entre 0 y 1. Un valor mayor indica una mayor relevancia.text stringEl fragmento de contenido del documento coincidente.
usage objectInformación sobre el consumo de tokens para esta solicitud.
input_tokens integerEl número de tokens en la entrada. Notas adicionalesoutput_tokens integerEl número de tokens en la salida del modelo.total_tokens integerEl número total de tokens consumidos es la suma de input_tokens y output_tokens.input_tokens_details objectUna clasificación detallada de los tokens de entrada.
cached_tokens integerEl número de tokens que acertaron en la caché. Para obtener más información, consulte caché de contexto.
output_tokens_details objectUn desglose detallado de los tokens de salida.
reasoning_tokens integerEl número de tokens de razonamiento.
x_details arrayUna matriz de detalles de facturación para la solicitud. Proporciona un desglose más granular de los tokens multimodales que el campo usage de nivel superior.
input_tokens integerEl número de tokens en la entrada. Notas adicionalesoutput_tokens integerEl número de tokens en la salida del modelo.total_tokens integerEl número total de tokens consumidos es la suma de input_tokens y output_tokens.x_billing_type stringEl valor está fijado en response_api.image_tokens integerEl número de tokens para la entrada de imagen. Este campo se devuelve cuando la entrada incluye una imagen y es equivalente a input_tokens_details.image_tokens.input_tokens_details objectUn desglose de los tokens de entrada. Los campos dependen del modelo y las modalidades de entrada. Para entrada de audio, qwen3.8-omni-flash puede devolver audio_tokens.
text_tokens integerEl número de tokens para la entrada de texto.image_tokens integerEl número de tokens para la entrada de imagen.audio_tokens integerEl número de tokens de entrada de audio en usage.x_details[].input_tokens_details.audio_tokens. Opcional; se devuelve cuando es aplicable al modelo y a la entrada.
output_tokens_details objectUn desglose detallado de los tokens de salida. Este campo tiene un campo text_tokens adicional en comparación con el output_tokens_details de nivel superior. El campo text_tokens se devuelve para entradas multimodales.
reasoning_tokens integerEl número de tokens para el proceso de razonamiento.text_tokens integerEl número de tokens para la salida de texto. Este campo se devuelve para entradas multimodales.
plugins objectEstadísticas para llamadas de herramientas integradas. Este campo se devuelve cuando se utiliza una herramienta integrada como web_search. Su contenido es el mismo que el del campo x_tools de nivel superior.
web_search objectEstadísticas de las llamadas de búsqueda web.
count integerEl número de veces que se llamó a la búsqueda web en esta respuesta.
prompt_tokens_details objectDetalles de caché para tokens de entrada. Este campo se devuelve cuando la caché de sesión está habilitada. Puede devolver un objeto vacío si la entrada incluye una imagen pero resulta en un fallo de caché.
cached_tokens integerEl número de tokens que coincidieron con la caché.cache_creation_input_tokens integerEl número de tokens utilizados para crear una nueva caché en esta solicitud.cache_creation objectDetalles sobre la creación de caché.
ephemeral_5m_input_tokens integerEl número de tokens utilizados para crear una nueva caché efímera de 5 minutos.
cache_type stringEl tipo de caché. El valor está fijado en ephemeral.
x_tools objectEstadísticas sobre el uso de herramientas. Esto contiene el número de veces que se llama a cada herramienta integrada.Ejemplo: {"web_search": {"count": 1}}
error objectSe devuelve un objeto de error cuando el modelo no logra generar una respuesta. De lo contrario, el valor es null.tools arrayRepite el contenido completo del parámetro tools de la solicitud, con la misma estructura que el parámetro tools en el cuerpo de la solicitud.tool_choice stringRepite el valor del parámetro tool_choice en la solicitud. Los valores válidos son auto, none y required.
{
    "created_at": 1771165900.0,
    "id": "f75c28fb-4064-48ed-90da-4d2cc4362xxx",
    "model": "qwen3.8-max",
    "object": "response",
    "output": [
        {
            "content": [
                {
                    "annotations": [],
                    "text": "Hello! I am Qwen3.5, a large language model developed by Alibaba Cloud with knowledge up to 2026, designed to assist you with complex reasoning, creative tasks, and multilingual conversations.",
                    "type": "output_text"
                }
            ],
            "id": "msg_89ad23e6-f128-4d4c-b7a1-a786e7880xxx",
            "role": "assistant",
            "status": "completed",
            "type": "message"
        }
    ],
    "parallel_tool_calls": false,
    "status": "completed",
    "tool_choice": "auto",
    "tools": [],
    "usage": {
        "input_tokens": 57,
        "input_tokens_details": {
            "cached_tokens": 0
        },
        "output_tokens": 44,
        "output_tokens_details": {
            "reasoning_tokens": 0
        },
        "total_tokens": 101,
        "x_details": [
            {
                "input_tokens": 57,
                "output_tokens": 44,
                "total_tokens": 101,
                "x_billing_type": "response_api"
            }
        ]
    }
}

Objeto de fragmento de respuesta (salida en streaming)

La salida por flujo devuelve una serie de objetos JSON. Cada objeto incluye un campo type para especificar el tipo de evento y un campo sequence_number para indicar el orden del evento. El evento response.completed marca el fin del flujo.type stringEl identificador del tipo de evento. Los valores posibles incluyen:
  • response.created: La respuesta se crea, con un estado de queued.
  • response.in_progress: La respuesta comienza a procesarse y el estado cambia a in_progress.
  • response.output_item.added: Se agrega un nuevo elemento de salida (por ejemplo, un mensaje o un web_extractor_call) a la matriz de salida. Cuando item.type es web_extractor_call, esto indica el inicio de una llamada de herramienta de extracción web.
  • response.content_part.added: Se agrega una nueva parte de contenido a la matriz content de un elemento de salida.
  • response.output_text.delta: Se genera un segmento de texto incremental. Este evento se activa múltiples veces y el campo delta contiene el nuevo segmento de texto.
  • response.output_text.done: La generación de texto para una parte de contenido está completa. El campo text contiene el texto completo.
  • response.content_part.done: Una parte de contenido está completa. El objeto part contiene la parte de contenido completa.
  • response.output_item.done: Un elemento de salida está completo. El objeto item contiene el elemento de salida completo. Cuando item.type es web_extractor_call, esto indica la finalización de una llamada de herramienta de extracción web.
  • response.reasoning_text.delta: (En modo de razonamiento) Proporciona una actualización incremental al resumen de razonamiento. El campo delta contiene el nuevo segmento.
  • response.reasoning_text.done: (En modo de razonamiento) El resumen de razonamiento está completo. El campo text contiene el resumen completo.
  • response.custom_tool_call_input.delta: Proporciona una actualización incremental a la entrada de llamada de herramienta personalizada. El campo delta contiene el segmento recién generado.
  • response.custom_tool_call_input.done: La entrada de llamada de herramienta personalizada está completa. El campo de entrada contiene la entrada completa.
  • response.web_search_call.in_progress / searching / completed: Un evento que indica un cambio en el estado de la búsqueda cuando se utiliza la herramienta web_search.
  • response.code_interpreter_call.in_progress / interpreting / completed: Un evento para un cambio en el estado de ejecución del código (al utilizar la herramienta code_interpreter).
  • Nota: La herramienta web_extractor no tiene un identificador de tipo de evento dedicado. Sus llamadas a herramientas se transmiten a través de los eventos generales response.output_item.added y response.output_item.done, y se identifican mediante el campo item.type con un valor de web_extractor_call.
  • response.mcp_call_arguments.delta / response.mcp_call_arguments.done: Estos eventos proporcionan el delta y el estado de finalización para los argumentos de llamada MCP.
  • response.mcp_call.in_progress: La llamada al servicio MCP está en curso.
  • response.mcp_call.completed: La llamada al servicio MCP ha finalizado.
  • response.file_search_call.in_progress / searching / completed: Eventos de cambio de estado para una búsqueda en base de conocimientos (cuando se utiliza la herramienta file_search).
  • Nota: Al utilizar las herramientas web_search_image y image_search, no existen eventos de estado intermedio dedicados. Las llamadas a herramientas se comunican mediante los eventos response.output_item.added (inicio de llamada) y response.output_item.done (llamada completada).
  • response.completed: La generación de la respuesta ha finalizado. El objeto response contiene la respuesta completa, incluido el uso. Este evento marca el fin del flujo.
  • response.incomplete: La respuesta finalizó antes de tiempo debido a límites como max_output_tokens.
sequence_number integerEl número de secuencia del evento, comenzando en 0 e incrementándose con cada evento. Utilice este número para procesar los eventos en el orden correcto.response objectEl objeto de respuesta. Aparece en los eventos response.created, response.in_progress y response.completed. En el evento response.completed, contiene los datos completos de la respuesta (incluyendo output y usage), y su estructura es idéntica a la del objeto Response sin transmisión por secuencias.item objectUn objeto de elemento de salida. Aparece en los eventos response.output_item.added y response.output_item.done. En el evento added, es un esqueleto inicial donde content es una matriz vacía. En el evento done, es un objeto completo.
id stringUn identificador único para el elemento de salida (por ejemplo, msg_xxx).type stringEl tipo del elemento de salida. Valores posibles: message, reasoning, web_search_call, web_search_image_call (búsqueda de texto a imagen), image_search_call (búsqueda de imagen a imagen), mcp_call (llamada MCP), file_search_call (búsqueda en base de conocimientos).role stringEl rol del mensaje, que siempre es assistant. Presente solo cuando type es message.status stringEstado de generación. En un evento added, el estado es in_progress, y en un evento done, es completed.content arrayUna matriz de contenido de mensaje. En el evento added, la matriz está vacía []. En el evento done, contiene objetos de parte de contenido completos cuya estructura es la misma que la del objeto part.
part objectEl objeto de parte de contenido. Aparece en los eventos response.content_part.added y response.content_part.done.
type stringEl tipo de la parte de contenido, que siempre es output_text.text stringContenido de texto. Es una cadena vacía en el evento added y el texto completo en el evento done.annotations arrayUn arreglo de anotaciones de texto. Generalmente un arreglo vacío.logprobs object | nullProbabilidades logarítmicas de tokens. Este campo actualmente siempre devuelve null.
delta stringEl segmento de texto incremental. Este campo aparece en el evento response.output_text.delta y contiene el segmento de texto recién agregado. Concatene todos los valores delta para reconstruir el texto completo.text stringEl contenido de texto completo. Este campo aparece en el evento response.output_text.done. Puede utilizarlo para validar el texto reconstruido a partir de los fragmentos delta.item_id stringEl identificador único para el elemento de salida. Utilice este ID para correlacionar eventos que pertenecen al mismo elemento.output_index integerEl índice del elemento de salida en el arreglo output.content_index integerEl índice de la parte de contenido en el arreglo content.
// response.created: The response is created and queued.
{"response":{"id":"428c90e9-9cd6-90a6-9726-c02b08ebexxx","created_at":1769082930,"object":"response","status":"queued",...},"sequence_number":0,"type":"response.created"}

// response.in_progress: Processing begins.
{"response":{"id":"428c90e9-9cd6-90a6-9726-c02b08ebexxx","status":"in_progress",...},"sequence_number":1,"type":"response.in_progress"}

// response.output_item.added: A new output item is added.
{"item":{"id":"msg_bcb45d66-fc34-46a2-bb56-714a51e8exxx","content":[],"role":"assistant","status":"in_progress","type":"message"},"output_index":0,"sequence_number":2,"type":"response.output_item.added"}

// response.content_part.added: A new content part is added.
{"content_index":0,"item_id":"msg_bcb45d66-fc34-46a2-bb56-714a51e8exxx","output_index":0,"part":{"annotations":[],"text":"","type":"output_text","logprobs":null},"sequence_number":3,"type":"response.content_part.added"}

// response.output_text.delta: Incremental text (can be triggered multiple times).
{"content_index":0,"delta":"Artificial Intelligence","item_id":"msg_bcb45d66-fc34-46a2-bb56-714a51e8exxx","logprobs":[],"output_index":0,"sequence_number":4,"type":"response.output_text.delta"}
{"content_index":0,"delta":" (AI) refers to the technology","item_id":"msg_bcb45d66-fc34-46a2-bb56-714a51e8exxx","logprobs":[],"output_index":0,"sequence_number":6,"type":"response.output_text.delta"}

// response.output_text.done: Text generation for a content part is complete.
{"content_index":0,"item_id":"msg_bcb45d66-fc34-46a2-bb56-714a51e8exxx","logprobs":[],"output_index":0,"sequence_number":53,"text":"Artificial Intelligence (AI) refers to the technology and science that enables computer systems to simulate human intelligent behaviors...","type":"response.output_text.done"}

// response.content_part.done: The content part is complete.
{"content_index":0,"item_id":"msg_bcb45d66-fc34-46a2-bb56-714a51e8exxx","output_index":0,"part":{"annotations":[],"text":"...full text...","type":"output_text","logprobs":null},"sequence_number":54,"type":"response.content_part.done"}

// response.output_item.done: The output item is complete.
{"item":{"id":"msg_bcb45d66-fc34-46a2-bb56-714a51e8exxx","content":[{"annotations":[],"text":"...full text...","type":"output_text","logprobs":null}],"role":"assistant","status":"completed","type":"message"},"output_index":0,"sequence_number":55,"type":"response.output_item.done"}

// response.completed: The response is complete (includes full response and usage).
{"response":{"id":"428c90e9-9cd6-90a6-9726-c02b08ebexxx","created_at":1769082930,"model":"qwen3.7-max","object":"response","output":[...],"status":"completed","usage":{"input_tokens":37,"output_tokens":243,"total_tokens":280,...}},"sequence_number":56,"type":"response.completed"}

FAQ

P: ¿Cómo paso el contexto para una conversación de múltiples turnos? R: Al realizar una nueva solicitud de conversación, pase el id de la respuesta exitosa anterior del modelo como el parámetro previous_response_id. P: ¿Por qué algunos campos en el ejemplo de respuesta no se describen en este tema? R: El SDK oficial de OpenAI puede generar campos adicionales definidos por el protocolo de OpenAI. Nuestro servicio no admite estos campos, por lo que normalmente son null. Concéntrese únicamente en los campos descritos en este tema.