Skip to main content

API de Modelo de Decisión

Llame a POST /compatible-mode/v1/systemone para utilizar el modelo de decisión Bailian (decision-model-preview), que devuelve clasificación, puntuación y decisiones sí/no con distribuciones de probabilidad completas y confianza en una sola pasada hacia adelante, sin generar texto. Adecuado para decisiones estructuradas de alta frecuencia como el enrutamiento de tickets, la moderación de contenido, el enrutamiento de agentes y la verificación de resultados.

Requisitos previos

Ha creado una Clave API y la ha configurado como la variable de entorno DASHSCOPE_API_KEY. Para obtener más información, consulte Configurar una clave API en variables de entorno.

Solicitud

Protocol: TypeSafe System One (POST /compatible-mode/v1/systemone) Una sola solicitud transporta el state empresarial y varias preguntas tipadas (choice / noul / score). El modelo devuelve el resultado de la decisión y la distribución de probabilidad para cada pregunta en una sola pasada hacia adelante, con choice y score devolviendo adicionalmente la confianza, y no genera texto, por lo que la latencia y el costo son independientes de la longitud de salida. Endpoint Reemplace {WorkspaceId} con su ID de espacio de trabajo. Consulte Regiones y endpoints.

Región

Endpoint

Singapur

https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/systemone

China (Beijing)

https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1/systemone

Parámetros de solicitud

Content-Type · String · Encabezado · ObligatorioTipo de solicitud: application/json.Authorization · String · Encabezado · ObligatorioClave API, en el formato: Bearer $DASHSCOPE_API_KEY.model · String · Cuerpo · ObligatorioNombre del modelo: decision-model-preview.state · String / Object / Array · Cuerpo · ObligatorioEl estado empresarial sobre el cual tomar decisiones: texto del ticket, una conversación o un objeto estructurado (los objetos se serializan antes de enviarse al modelo).questions · Object · Cuerpo · ObligatorioUn mapa de preguntas. La clave es un id de pregunta definido por el llamante; el valor es un objeto de pregunta con los siguientes campos.
type · String · ObligatorioTipo de pregunta:
  • choice: opción única
  • noul: sí/no
  • score: escala ordinal
instructions · String · OpcionalDescripción de la pregunta o criterios de juicio.criteria · Object / Array · Depende del tipo
  • choice: un mapa de nombre de opción → descripción de opción (1–255 elementos; se recomienda proporcionar todas las opciones y un valor de respaldo other).
  • noul: descripciones opcionales {"true":…, "false":…}.
  • score: un arreglo de descripciones de nivel de bajo a alto (2–255 niveles; se recomiendan 3–7 niveles claramente distinguibles).
Límites y recomendaciones
  • Máximo 16 preguntas (la latencia crece casi linealmente con el número de preguntas).
  • Opciones de choice: ≤ 255.
  • Niveles de score: 2–255 (se recomiendan 3–7).
  • Contexto: máximo 65536 tokens; un state excesivamente largo se rechaza.

Ejemplos de solicitud

Los SDK de DashScope ya son compatibles con el modelo de decisión (compatibles con el protocolo TypeSafe System One):
  • Python: SDK de DashScope 2.0.1 o posterior (el modelo de decisión es una capacidad nueva de la versión 2.0.1; las versiones anteriores no tienen la interfaz client.decision y generan un AttributeError). Instalación: pip install -U "dashscope>=2.0.1". Consulte Instalar el SDK. El SDK construye automáticamente el endpoint /compatible-mode/v1/systemone a partir del espacio de trabajo y la región.
  • Java: SDK de DashScope 2.23.3 o posterior (el modelo de decisión es una capacidad nueva de la versión 2.23.3; las versiones anteriores no tienen el paquete com.alibaba.dashscope.decision). Coordenadas de Maven: com.alibaba:dashscope-sdk-java:2.23.3 (Gradle: implementation group: 'com.alibaba', name: 'dashscope-sdk-java', version: '2.23.3'). La clave API se lee de forma predeterminada de la variable de entorno DASHSCOPE_API_KEY.
  • En caso de error, el SDK de Python genera una excepción DashScopeError y el SDK de Java genera una ApiException.
También puede utilizar el SDK TypeSafe genérico (typesafe-sdk) con base_url apuntando a la puerta de enlace Bailian. El SDK agrega automáticamente /v1/systemone y analiza la respuesta. Instalación: pip install typesafe-sdk.
  • Enrutamiento de tickets
  • Decisión sí/no
Una sola solicitud maneja tres decisiones a la vez: asignación de equipo (choice), escalación (noul) y gravedad (score). El siguiente ejemplo utiliza la región de Singapur.
  • DashScope Python
  • DashScope Java
  • TypeSafe Python
  • curl
import os

import dashscope

# La siguiente es la configuración para la región de Singapur. Reemplace "{WorkspaceId}" por el ID real de su espacio de trabajo. La configuración es diferente para cada región.
# El endpoint del modelo de decisión siempre se encuentra en la ruta compatible-mode de la puerta de enlace del espacio de trabajo; el SDK lo construye a partir del espacio de trabajo y la región.
client = dashscope.Client(
    # Si no ha configurado una variable de entorno, reemplace la siguiente línea por su clave API de Model Studio: api_key="sk-xxx"
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    workspace="{WorkspaceId}",
    region="ap-southeast-1",
)

result = client.decision.create(
    model="decision-model-preview",
    state={"ticket_id": "T-1001", "content": "More than 24 hours after payment, the order has not been credited."},
    questions={
        "department": {"type": "choice", "instructions": "Which team should handle this?",
                       "criteria": {"billing": "Payment, refund, and billing issues", "technical": "Product failure and integration issues"}},
        "escalate": {"type": "noul", "instructions": "Should on-call staff be notified immediately?"},
        "severity": {"type": "score", "instructions": "How severe is this issue?",
                     "criteria": ["Minor issue, no impact on functionality", "Some functionality affected, but a workaround exists",
                                  "Core functionality unavailable, no workaround", "Severe business or security impact"]},
    },
)

print(result.answers["department"].choice)   # opción seleccionada
print(result.answers["escalate"].noul)       # P(yes)
print(result.answers["severity"].score)      # índice de nivel ponderado por probabilidad
print(result.usage.input_tokens, result.latency_ms)

Parámetros de respuesta

model · StringNombre del modelo devuelto.request_id · StringID de solicitud, para solución de problemas.answers · ObjectUn mapa de respuestas. La clave corresponde al id de pregunta en la solicitud; el valor es un objeto de respuesta con los siguientes campos.
type · StringCoincide con el tipo de pregunta (choice / noul / score).choice · StringPara choice: el nombre de la opción seleccionada.noul · FloatPara noul: P(sí), donde 0 = no y 1 = sí.score · FloatPara score: la expectativa ponderada por probabilidad del índice de nivel, que puede situarse entre dos niveles (p. ej., 1.43).probabilities · ObjectLa probabilidad de cada opción/nivel (suma 1).confidence · FloatLa confianza de la respuesta (devuelta para choice / score).legend · ObjectPara score: un mapa de índice de nivel → descripción de nivel.
usage · ObjectInformación de medición:
  • input_tokens (Integer): número de tokens de entrada.
latency_ms · FloatLatencia del lado del servidor (milisegundos).

Ejemplo de respuesta

A continuación se muestra la respuesta para el ejemplo de enrutamiento de tickets (abreviada). Las probabilidades y la confianza dependen del resultado real.
{
  "model": "decision-model-preview",
  "request_id": "7b986c65-b223-9341-b5f0-b988e27ecaac",
  "answers": {
    "department": {
      "type": "choice",
      "choice": "billing",
      "confidence": 0.88,
      "probabilities": {"billing": 0.94, "technical": 0.06}
    },
    "escalate": {
      "type": "noul",
      "noul": 0.99
    },
    "severity": {
      "type": "score",
      "score": 2.25,
      "confidence": 0.91,
      "legend": {
        "0": "Minor issue, no impact on functionality",
        "1": "Some functionality affected, but a workaround exists",
        "2": "Core functionality unavailable, no workaround",
        "3": "Severe business or security impact"
      },
      "probabilities": {"0": 0.0, "1": 0.01, "2": 0.73, "3": 0.26}
    }
  },
  "usage": {"input_tokens": 125},
  "latency_ms": 52.9
}

Códigos de error

Si la llamada falla, se devuelve un mensaje de error. Para más códigos de error y soluciones, consulte Mensajes de error.