Skip to main content

Modo parcial

Para escenarios como la finalización de código y la continuación de texto, puede generar nuevo contenido a partir de un fragmento de texto existente (prefijo). El Modo Parcial garantiza que la salida del modelo se conecte perfectamente con su prefijo para mejorar la precisión y el control.

Funcionamiento

Para usar el Modo Parcial, configure el arreglo messages. En el último mensaje del arreglo, establezca el role como assistant y proporcione el prefijo en el campo content. También debe establecer el parámetro "partial": true en ese mensaje. El formato de messages es el siguiente:
[
    {
        "role": "user",
        "content": "Complete this Fibonacci function. Do not add anything else."
    },
    {
        "role": "assistant",
        "content": "def calculate_fibonacci(n):\n    if n <= 1:\n        return n\n    else:\n",
        "partial": true
    }
]
A continuación, el modelo comienza a generar texto a partir del prefijo especificado.

Modelos admitidos

  • Modelos de generación de texto
    • Serie Max de Qwen4 (solo Token Plan): qwen4-max-preview
    • Qwen-Max (modo sin razonamiento): serie Qwen3.7-Max, serie Qwen3.6-Max, serie Qwen3-Max, serie Qwen-Max
    • Qwen-Plus (modo sin razonamiento): serie Qwen3.7-Plus, serie Qwen3.6-Plus, serie Qwen3.5-Plus, serie Qwen-Plus
    • Qwen-Flash (modo sin razonamiento): serie Qwen3.7-Flash, serie Qwen3.6-Flash, serie Qwen3.5-Flash, serie Qwen-Flash
    • Qwen-Coder: serie Qwen3-Coder, serie Qwen2.5-Coder, serie Qwen-Coder
    • Qwen-Turbo (modo sin razonamiento): serie Qwen-Turbo
    • Serie de código abierto Qwen3.6 (modo sin razonamiento)
    • Serie de código abierto Qwen3.5 (modo sin razonamiento)
    • Serie de código abierto Qwen3 (modo sin razonamiento)
    • Serie de código abierto Qwen2.5
    • Qwen-Math: serie Qwen-Math, serie Qwen2.5-Math
    • DeepSeek (despliegue en SiliconFlow): siliconflow/deepseek-v3.1-terminus (modo sin razonamiento), siliconflow/deepseek-v3-0324
    • DeepSeek (despliegue en Vanchin): vanchin/deepseek-v3.2-think
  • Modelos multimodales
    • Qwen-VL: serie Qwen3-VL-Plus, serie Qwen3-VL-Flash, serie Qwen-VL-Max, serie Qwen-VL-Plus
    • Serie de código abierto Qwen3-VL (modo sin razonamiento)
    • Kimi (desplegado en Moonshot AI): kimi/kimi-k3, kimi/kimi-k2.6, kimi/kimi-k2.5

Introducción

Requisitos previos

Antes de comenzar, obtenga una clave API y configure la clave API como variable de entorno. Si llama al servicio mediante el SDK de OpenAI o el SDK de DashScope, debe instalar el SDK. Si es miembro de un sub-espacio de trabajo, asegúrese de que el superadministrador haya concedido acceso al modelo a su espacio de trabajo.
El SDK de Java de DashScope no es compatible.

Código de ejemplo

La finalización de código es el caso de uso principal del Modo Parcial. El siguiente ejemplo muestra cómo completar una función de Python.
  • Compatible con OpenAI
  • DashScope
  • Python
  • Node.js
  • curl
import os
from openai import OpenAI

# 1. Initialize the client
client = OpenAI(
    # If not set in environment, replace the next line with: api_key="sk-xxx"
    # API keys differ by region. Get your API key: https://help.aliyun.com/en/model-studio/get-api-key
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # Beijing region. For Singapore models use: https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1
    base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
)

# 2. Define the code prefix to complete
prefix = """def calculate_fibonacci(n):
    if n <= 1:
        return n
    else:
"""

# 3. Make a Partial Mode request
# Note: The last message in the messages array must have role "assistant" and include "partial": True
completion = client.chat.completions.create(
    model="qwen3.8-max",
    messages=[
        {"role": "user", "content": "Complete this Fibonacci function. Do not add anything else."},
        {"role": "assistant", "content": prefix, "partial": True},
    ],
)

# 4. Manually join the prefix and the model's generated content
generated_code = completion.choices[0].message.content
complete_code = prefix + generated_code

print(complete_code)

Respuesta

def calculate_fibonacci(n):
    if n <= 1:
        return n
    else:
        return calculate_fibonacci(n-1) + calculate_fibonacci(n-2)

Casos de uso

Pasar imágenes o videos

Los modelos Qwen-VL admiten el Modo Parcial con datos de imagen o video, lo cual es útil para escenarios como descripciones de productos, publicaciones en redes sociales, artículos de noticias y redacción creativa.
  • Compatible con OpenAI
  • DashScope
  • Python
  • Node.js
  • curl
import os
from openai import OpenAI

client = OpenAI(
    # If not set in environment, replace the next line with: api_key="sk-xxx",
    # API keys differ by region. Get your API key: https://help.aliyun.com/en/model-studio/get-api-key
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # Beijing region. For Singapore models use: https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1
    base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
)

completion = client.chat.completions.create(
    model="qwen3-vl-plus",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://img.alicdn.com/imgextra/i3/O1CN01zFX2Bs1Q0f9pESgPC_!!6000000001914-2-tps-450-450.png"
                    },
                },
                {"type": "text", "text": "I want to post this on social media. Help me write a caption."},
            ],
        },
        {
            "role": "assistant",
            "content": "Today I discovered a hidden-gem café",
            "partial": True,
        },
    ],
)
print(completion.choices[0].message.content)

Respuesta

— the tiramisu here is pure bliss! Every bite delivers perfect harmony between coffee and cream. Pure joy! #FoodShare #Tiramisu #CoffeeTime

Hope you like this caption! Let me know if you need any changes.

Continue desde una salida incompleta

Puede utilizar el Modo Parcial para continuar desde una salida incompleta del LLM y garantizar resultados semánticamente completos. La salida incompleta puede ocurrir por las siguientes razones:
  • El valor del parámetro max_tokens es demasiado pequeño, lo que provoca que el modelo trunque su salida.
  • Una respuesta sin streaming agota el tiempo de espera. En este caso, el modelo devuelve el contenido que ha generado hasta ese momento.
    Los tiempos de espera ya no causan errores. En su lugar, el modelo devuelve el contenido generado hasta ese momento. Consulte Cómo manejar los tiempos de espera del modelo.
  • Compatible con OpenAI
  • DashScope
  • Python
  • Node.js
import os
from openai import OpenAI

# Initialize the client
client = OpenAI(
    # If not set in environment, replace the next line with: api_key="sk-xxx",
    # API keys differ by region. Get your API key: https://help.aliyun.com/en/model-studio/get-api-key
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # Beijing region. For Singapore models use: https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1
    base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
)

def chat_completion(messages,max_tokens=None):
    response = client.chat.completions.create(
        model="qwen-plus",
        messages=messages,
        max_tokens=max_tokens
    )
    print(f"### Reason generation stopped: {response.choices[0].finish_reason}")

    return response.choices[0].message.content

# Example usage
messages = [{"role": "user", "content": "Write a short sci-fi story"}]

# First call with max_tokens set to 40
first_content = chat_completion(messages, max_tokens=40)
print(first_content)
# Add the first response as an assistant message and set partial=True
messages.append({"role": "assistant", "content": first_content, "partial": True})

# Second call
second_content = chat_completion(messages)
print("### Complete content:")
print(first_content+second_content)

Respuesta

length: Se alcanzó el límite de max_tokens. stop: El modelo finalizó naturalmente o encontró una palabra de parada del parámetro stop.
### Reason generation stopped: length
**"The End of Memory"**

In the distant future, Earth is no longer fit for human life. The atmosphere is polluted, oceans are dry, and cities lie in ruins. Humans migrated to a habitable planet named "Eden," with blue skies, fresh air, and endless resources.

However, Eden is not a true paradise. It holds no human history, no past, and no memory.

...
**"If we forget who we are, are we still human?"**

— End —

Facturación

La facturación cubre los tokens de entrada y salida. El prefijo cuenta como parte de los tokens de entrada.

Códigos de error

Si la llamada al modelo falla y devuelve un mensaje de error, consulte Códigos de error para su resolución.