Tous les produits
Search
Centre de documentation

Alibaba Cloud Model Studio:Contexte long (Qwen-Long)

Dernière mise à jour :Oct 11, 2026

Qwen-Long traite des documents pouvant atteindre 10 millions de tokens grâce à un mécanisme de téléchargement et de référence de fichiers, dépassant ainsi les limites de contexte des modèles standards.

RemarqueCe document s'applique uniquement à la région Chine continentale (Pékin). Pour utiliser le modèle, vous devez disposer d'une clé API de la région Chine continentale (Pékin).

Mode d'utilisation

Utilisez Qwen-Long en deux étapes : téléchargez les fichiers, puis appelez l'API.

  1. Téléchargement et analyse des fichiers :
    • Téléchargez un fichier via l'API. Pour plus de détails sur les formats pris en charge et les limites de taille, consultez la section Formats pris en charge.
    • Après un téléchargement réussi, le système retourne un file-id unique pour votre compte et lance l'analyse. Le téléchargement, le stockage et l'analyse des fichiers sont gratuits.
  2. Appel d'API et facturation :
    • Lors de l'appel du modèle, référencez un ou plusieurs file-id dans le message system.
    • Le modèle effectue l'inférence en se basant sur le contenu textuel associé au file-id.
    • Pour chaque appel d'API, le nombre de tokens du contenu de fichier référencé est comptabilisé comme tokens d'entrée pour cette requête.

Cette approche évite de transférer des fichiers volumineux à chaque requête. Notez toutefois que les tokens des fichiers sont facturés par appel d'API.

Prise en main

Prérequis

  • Obtenez une clé API et configurez-la en tant que variable d'environnement.
  • Pour appeler le modèle via un SDK, installez le SDK OpenAI.

Télécharger un document

Cet exemple télécharge le fichier Model_Studio_Phone_Product_Introduction.docx vers le stockage sécurisé de Model Studio via l'interface compatible OpenAI et obtient un file-id. Consultez la documentation de l'API pour connaître les paramètres de téléchargement.

import os
from pathlib import Path
from openai import OpenAI

client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),  # If not configured, replace with your API key.
    # The following URL is for the China (Beijing) region. Replace {WorkspaceId} with your Workspace ID. URLs vary by region.
    base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
)

file_object = client.files.create(file=Path("Model_Studio_Phone_Product_Introduction.docx"), purpose="file-extract")
print(file_object.id)
import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.files.*;

import java.nio.file.Path;
import java.nio.file.Paths;

public class Main {
    public static void main(String[] args) {
        // Create a client and use the API key from the environment variable.
        OpenAIClient client = OpenAIOkHttpClient.builder()
                // If you have not configured the environment variable, replace the following line with: .apiKey("sk-xxx")
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                // The following URL is for the China (Beijing) region. Replace {WorkspaceId} with your Workspace ID. URLs vary by region.
                .baseUrl("https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1")
                .build();
        // Set the file path. Modify the path and filename as needed.
        Path filePath = Paths.get("src/main/java/org/example/Model_Studio_Phone_Product_Introduction.docx");
        // Create file upload parameters.
        FileCreateParams fileParams = FileCreateParams.builder()
                .file(filePath)
                .purpose(FilePurpose.of("file-extract"))
                .build();

        // Upload the file and print the file-id.
        FileObject fileObject = client.files().create(fileParams);
        System.out.println(fileObject.id());
    }
}
# The following URL is for the China (Beijing) region. Replace {WorkspaceId} with your Workspace ID. URLs vary by region.
curl --location --request POST 'https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1/files' \
  --header "Authorization: Bearer $DASHSCOPE_API_KEY" \
  --form 'file=@"Alibaba Cloud Model Studio Phone Series Product Introduction.docx"' \
  --form 'purpose="file-extract"'

Exécutez le code pour obtenir le file-id du fichier téléchargé.

Transmettre des informations et discuter via un ID de fichier

Transmettez le file-id dans les messages système : le premier message définit le rôle, le second contient le file-id, puis ajoutez les questions de l'utilisateur.

Les documents volumineux nécessitent un temps d'analyse plus long. Attendez la fin de l'analyse avant d'effectuer l'appel.

import os
from openai import OpenAI, BadRequestError

client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),  # If not configured, replace with your API key.
    # Endpoint for the China (Beijing) region. Replace {WorkspaceId} with your Workspace ID. URLs vary by region.
    base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
)
try:
    # Initialize messages list.
    completion = client.chat.completions.create(
        model="qwen-long",
        messages=[
            # sys1: Role definition.
            {'role': 'system', 'content': 'You are a helpful assistant.'},
            # sys2: Document content (plain text or file-id).
            # Replace '{FILE_ID}' with the file-id used in your conversation.
            {'role': 'system', 'content': f'fileid://{FILE_ID}'},
            # When the request includes a second system message, the user message content is limited to 9,000 tokens.
            {'role': 'user', 'content': 'What is this article about?'}
        ],
        # All examples use streaming output to show the model's response process. For non-streaming examples, see https://www.alibabacloud.com/help/en/model-studio/text-generation
        stream=True,
        stream_options={"include_usage": True}
    )

    full_content = ""
    for chunk in completion:
        if chunk.choices and chunk.choices[0].delta.content:
            # Concatenate the output content.
            full_content += chunk.choices[0].delta.content
            print(chunk.model_dump())

        # Get token usage.
        if chunk.usage:
            print(f"Total tokens: {chunk.usage.total_tokens}")

    print(full_content)

except BadRequestError as e:
    print(f"Error: {e}")
    print("See documentation: https://www.alibabacloud.com/help/en/model-studio/error-code")
import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.core.http.StreamResponse;
import com.openai.models.chat.completions.*;

public class Main {
    public static void main(String[] args) {
        // Create a client and use the API key from the environment variable.
        OpenAIClient client = OpenAIOkHttpClient.builder()
                // If you have not configured the environment variable, replace the following line with: .apiKey("sk-xxx")
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                // Endpoint for the China (Beijing) region. Replace {WorkspaceId} with your Workspace ID. URLs vary by region.
                .baseUrl("https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1")
                .build();

        // Create a chat request.
        ChatCompletionCreateParams chatParams = ChatCompletionCreateParams.builder()
                //sys1: Role definition.
                .addSystemMessage("You are a helpful assistant.")
                //sys2: Document content (plain text or file-id).
                //Replace '{FILE_ID}' with the file-id used in your conversation.
                .addSystemMessage("fileid://{FILE_ID}")
                //When the request includes a second system message, the user message content is limited to 9,000 tokens.
                .addUserMessage("What is this article about?")
                .model("qwen-long")
                .build();

        StringBuilder fullResponse = new StringBuilder();

        // All examples use streaming output to show the model's response process. For non-streaming examples, see https://www.alibabacloud.com/help/en/model-studio/text-generation
        try (StreamResponse<ChatCompletionChunk> streamResponse = client.chat().completions().createStreaming(chatParams)) {
            streamResponse.stream().forEach(chunk -> {
                // Print and concatenate the content of each chunk.
                System.out.println(chunk);
                String content = chunk.choices().get(0).delta().content().orElse("");
                if (!content.isEmpty()) {
                    fullResponse.append(content);
                }
            });
            System.out.println(fullResponse);
        } catch (Exception e) {
            System.err.println("Error: " + e.getMessage());
            System.err.println("See documentation: https://www.alibabacloud.com/help/en/model-studio/error-code");
        }
    }
}
# Endpoint for the China (Beijing) region. Replace {WorkspaceId} with your Workspace ID. URLs vary by region.
curl --location 'https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json" \
--data '{
    "model": "qwen-long",
    "messages": [
        {"role": "system","content": "You are a helpful assistant."},
        {"role": "system","content": "fileid://file-fe-xxx"},
        {"role": "user","content": "What is this article about?"}
    ],
    "stream": true,
    "stream_options": {
        "include_usage": true
    }
}'

Transmettre plusieurs documents

Transmettez plusieurs file-id dans un seul message système ou ajoutez des messages système distincts pour chaque document.

Pass multiple documents

import os
from openai import OpenAI, BadRequestError

client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),  # If not configured, replace with your API key.
    # Endpoint for the China (Beijing) region. Replace {WorkspaceId} with your Workspace ID. URLs vary by region.
    base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
)
try:
    # Initialize messages list.
    completion = client.chat.completions.create(
        model="qwen-long",
        messages=[
            {'role': 'system', 'content': 'You are a helpful assistant.'},
            # Replace '{FILE_ID1}' and '{FILE_ID2}' with the file-ids used in your conversation.
            {'role': 'system', 'content': f"fileid://{FILE_ID1},fileid://{FILE_ID2}"},
            {'role': 'user', 'content': 'What are these articles about?'}
        ],
        # All examples use streaming output to show the model's response process. For non-streaming examples, see https://www.alibabacloud.com/help/en/model-studio/text-generation
        stream=True,
        stream_options={"include_usage": True}
    )

    full_content = ""
    for chunk in completion:
        if chunk.choices and chunk.choices[0].delta.content:
            # Concatenate the output content.
            full_content += chunk.choices[0].delta.content
            print(chunk.model_dump())

    print(full_content)

except BadRequestError as e:
    print(f"Error: {e}")
    print("See documentation: https://www.alibabacloud.com/help/en/model-studio/error-code")
import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.core.http.StreamResponse;
import com.openai.models.chat.completions.*;

public class Main {
    public static void main(String[] args) {
        // Create a client and use the API key from the environment variable.
        OpenAIClient client = OpenAIOkHttpClient.builder()
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                // Endpoint for the China (Beijing) region. Replace {WorkspaceId} with your Workspace ID. URLs vary by region.
                .baseUrl("https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1")
                .build();

        // Create a chat request.
        ChatCompletionCreateParams chatParams = ChatCompletionCreateParams.builder()
                .addSystemMessage("You are a helpful assistant.")
                //Replace '{FILE_ID1}' and '{FILE_ID2}' with the file-ids used in your conversation.
                .addSystemMessage("fileid://{FILE_ID1},fileid://{FILE_ID2}")
                .addUserMessage("What are these two articles about?")
                .model("qwen-long")
                .build();

        StringBuilder fullResponse = new StringBuilder();

        // All examples use streaming output to show the model's response process. For non-streaming examples, see https://www.alibabacloud.com/help/en/model-studio/text-generation
        try (StreamResponse<ChatCompletionChunk> streamResponse = client.chat().completions().createStreaming(chatParams)) {
            streamResponse.stream().forEach(chunk -> {
                // The content of each chunk.
                System.out.println(chunk);
                String content = chunk.choices().get(0).delta().content().orElse("");
                if (!content.isEmpty()) {
                    fullResponse.append(content);
                }
            });
            System.out.println("\nFull response content:");
            System.out.println(fullResponse);
        } catch (Exception e) {
            System.err.println("Error: " + e.getMessage());
            System.err.println("See documentation: https://www.alibabacloud.com/help/en/model-studio/error-code");
        }
    }
}
# Endpoint for the China (Beijing) region. Replace {WorkspaceId} with your Workspace ID. URLs vary by region.
curl --location 'https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json" \
--data '{
    "model": "qwen-long",
    "messages": [
        {"role": "system","content": "You are a helpful assistant."},
        {"role": "system","content": "fileid://file-fe-xxx1"},
        {"role": "system","content": "fileid://file-fe-xxx2"},
        {"role": "user","content": "What are these two articles about?"}
    ],
    "stream": true,
    "stream_options": {
        "include_usage": true
    }
}'

Append documents

import os
from openai import OpenAI, BadRequestError

client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),  # If not configured, replace with your API key.
    # Endpoint for the China (Beijing) region. Replace {WorkspaceId} with your Workspace ID. URLs vary by region.
    base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
)
# Initialize the messages list.
messages = [
    {'role': 'system', 'content': 'You are a helpful assistant.'},
    # Replace '{FILE_ID1}' with the file-id used in your conversation.
    {'role': 'system', 'content': f'fileid://{FILE_ID1}'},
    {'role': 'user', 'content': 'What is this article about?'}
]

try:
    # First-round response
    completion_1 = client.chat.completions.create(
        model="qwen-long",
        messages=messages,
        stream=False
    )
    # Print first-round response.
    # To stream: set stream=True, concatenate segments, and pass to assistant_message content.
    print(f"First-round response: {completion_1.choices[0].message.model_dump()}")
except BadRequestError as e:
    print(f"Error: {e}")
    print("See documentation: https://www.alibabacloud.com/help/en/model-studio/error-code")

# Construct the assistant_message.
assistant_message = {
    "role": "assistant",
    "content": completion_1.choices[0].message.content}

# Add assistant_message to messages.
messages.append(assistant_message)

# Add the file-id of the appended document to messages.
# Replace '{FILE_ID2}' with the file-id used in your conversation.
system_message = {'role': 'system', 'content': f'fileid://{FILE_ID2}'}
messages.append(system_message)

# Add the user's question.
messages.append({'role': 'user', 'content': 'What are the similarities and differences between the methods discussed in these two articles?'})

# Response after appending the document.
completion_2 = client.chat.completions.create(
    model="qwen-long",
    messages=messages,
    # All code examples use streaming output to clearly and intuitively show the model output process. For non-streaming output examples, see https://www.alibabacloud.com/help/en/model-studio/text-generation
    stream=True,
    stream_options={
        "include_usage": True
    }
)

# Stream and print the response after appending the document.
print("Response after appending the document:")
for chunk in completion_2:
    print(chunk.model_dump())
import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.chat.completions.*;
import com.openai.core.http.StreamResponse;

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        OpenAIClient client = OpenAIOkHttpClient.builder()
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                // Endpoint for the China (Beijing) region. Replace {WorkspaceId} with your Workspace ID. URLs vary by region.
                .baseUrl("https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1")
                .build();
        // Initialize messages list.
        List<ChatCompletionMessageParam> messages = new ArrayList<>();

        // Add information for role setting.
        ChatCompletionSystemMessageParam roleSet = ChatCompletionSystemMessageParam.builder()
                .content("You are a helpful assistant.")
                .build();
        messages.add(ChatCompletionMessageParam.ofSystem(roleSet));

        // Replace '{FILE_ID1}' with the file-id used in your conversation.
        ChatCompletionSystemMessageParam systemMsg1 = ChatCompletionSystemMessageParam.builder()
                .content("fileid://{FILE_ID1}")
                .build();
        messages.add(ChatCompletionMessageParam.ofSystem(systemMsg1));

        // User question message (USER role).
        ChatCompletionUserMessageParam userMsg1 = ChatCompletionUserMessageParam.builder()
                .content("Please summarize the article content.")
                .build();
        messages.add(ChatCompletionMessageParam.ofUser(userMsg1));

        // Construct the first-round request and handle exceptions.
        ChatCompletion completion1;
        try {
            completion1 = client.chat().completions().create(
                    ChatCompletionCreateParams.builder()
                            .model("qwen-long")
                            .messages(messages)
                            .build()
            );
        } catch (Exception e) {
            System.err.println("Request error. See error code page:");
            System.err.println("https://www.alibabacloud.com/help/en/model-studio/error-code");
            System.err.println("Error details: " + e.getMessage());
            e.printStackTrace();
            return;
        }

        // First-round response.
        String firstResponse = completion1 != null ? completion1.choices().get(0).message().content().orElse("") : "";
        System.out.println("First-round response: " + firstResponse);

        // Construct AssistantMessage.
        ChatCompletionAssistantMessageParam assistantMsg = ChatCompletionAssistantMessageParam.builder()
                .content(firstResponse)
                .build();
        messages.add(ChatCompletionMessageParam.ofAssistant(assistantMsg));

        // Replace '{FILE_ID2}' with the file-id used in your conversation.
        ChatCompletionSystemMessageParam systemMsg2 = ChatCompletionSystemMessageParam.builder()
                .content("fileid://{FILE_ID2}")
                .build();
        messages.add(ChatCompletionMessageParam.ofSystem(systemMsg2));

        // Second-round user question (USER role).
        ChatCompletionUserMessageParam userMsg2 = ChatCompletionUserMessageParam.builder()
                .content("Please compare the structural differences between the two articles.")
                .build();
        messages.add(ChatCompletionMessageParam.ofUser(userMsg2));

        // All examples use streaming output to show the model's response process. For non-streaming examples, see https://www.alibabacloud.com/help/en/model-studio/text-generation
        StringBuilder fullResponse = new StringBuilder();
        try (StreamResponse<ChatCompletionChunk> streamResponse = client.chat().completions().createStreaming(
                ChatCompletionCreateParams.builder()
                        .model("qwen-long")
                        .messages(messages)
                        .build())) {

            streamResponse.stream().forEach(chunk -> {
                String content = chunk.choices().get(0).delta().content().orElse("");
                if (!content.isEmpty()) {
                    fullResponse.append(content);
                }
            });
            System.out.println("\nFinal response:");
            System.out.println(fullResponse.toString().trim());
        } catch (Exception e) {
            System.err.println("Error: " + e.getMessage());
            System.err.println("See documentation: https://www.alibabacloud.com/help/en/model-studio/error-code");
        }
    }
}
# Endpoint for the China (Beijing) region. Replace {WorkspaceId} with your Workspace ID. URLs vary by region.
curl --location 'https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json" \
--data '{
    "model": "qwen-long",
    "messages": [
        {"role": "system","content": "You are a helpful assistant."},
        {"role": "system","content": "fileid://file-fe-xxx1"},
        {"role": "user","content": "What is this article about?"},
        {"role": "system","content": "fileid://file-fe-xxx2"},
        {"role": "user","content": "What are the similarities and differences between the methods discussed in these two articles?"}
    ],
    "stream": true,
    "stream_options": {
        "include_usage": true
    }
}'

Transmettre des informations sous forme de texte brut

Au lieu d'utiliser des file-id, transmettez directement le contenu du document sous forme de chaîne de caractères. Ajoutez la définition du rôle dans le premier message afin d'éviter toute confusion avec le contenu du document.

Si le contenu du document dépasse 1 million de tokens, utilisez plutôt un ID de fichier en raison des limites de taille de l'API.

Simple example

Saisissez le contenu du document directement dans le message système.

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),  # Replace your API key here if you haven't set the environment variable
    # Endpoint for the China (Beijing) region. Replace {WorkspaceId} with your Workspace ID. URLs vary by region.
    base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
)
# Initialize the messages list
completion = client.chat.completions.create(
    model="qwen-long",
    messages=[
        {'role': 'system', 'content': 'You are a helpful assistant.'},
        {'role': 'system', 'content': 'Alibaba Cloud Model Studio smartphone product introduction: Alibaba Cloud Model Studio X1 —————— Enjoy an ultimate visual experience: features a 6.7-inch 1440 x 3200 pixel ultra-clear screen...'},
        {'role': 'user', 'content': 'What does the article talk about?'}
    ],
    # All code examples use streaming output to clearly and intuitively show the model's output process. For non-streaming examples, see https://www.alibabacloud.com/help/en/model-studio/text-generation
    stream=True,
    stream_options={"include_usage": True}
)

full_content = ""
for chunk in completion:
    if chunk.choices and chunk.choices[0].delta.content:
        # Append output content
        full_content += chunk.choices[0].delta.content
        print(chunk.model_dump())

print(full_content)
import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.core.http.StreamResponse;

import com.openai.models.chat.completions.*;

public class Main {
    public static void main(String[] args) {
        // Create a client using the API key from the environment variable
        OpenAIClient client = OpenAIOkHttpClient.builder()
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                // Endpoint for the China (Beijing) region. Replace {WorkspaceId} with your Workspace ID. URLs vary by region.
                .baseUrl("https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1")
                .build();

        // Create a chat request
        ChatCompletionCreateParams chatParams = ChatCompletionCreateParams.builder()
                .addSystemMessage("You are a helpful assistant.")
                .addSystemMessage("Alibaba Cloud Model Studio smartphone product introduction: Alibaba Cloud Model Studio X1 —————— Enjoy an ultimate visual experience: features a 6.7-inch 1440 x 3200 pixel ultra-clear screen...")
                .addUserMessage("What does this article talk about?")
                .model("qwen-long")
                .build();

        StringBuilder fullResponse = new StringBuilder();

        // All examples use streaming output to show the model's response process. For non-streaming examples, see https://www.alibabacloud.com/help/en/model-studio/text-generation
        try (StreamResponse<ChatCompletionChunk> streamResponse = client.chat().completions().createStreaming(chatParams)) {
            streamResponse.stream().forEach(chunk -> {
                // Print and append each chunk's content
                System.out.println(chunk);
                String content = chunk.choices().get(0).delta().content().orElse("");
                if (!content.isEmpty()) {
                    fullResponse.append(content);
                }
            });
            System.out.println(fullResponse);
        } catch (Exception e) {
            System.err.println("Error: " + e.getMessage());
            System.err.println("For more information, see https://www.alibabacloud.com/help/en/model-studio/error-code");
        }
    }
}
# Endpoint for the China (Beijing) region. Replace {WorkspaceId} with your Workspace ID. URLs vary by region.
curl --location 'https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json" \
--data '{
    "model": "qwen-long",
    "messages": [
        {"role": "system","content": "You are a helpful assistant."},
        {"role": "system","content": "Alibaba Cloud Model Studio X1 —— Enjoy an ultimate visual experience: features a 6.7-inch 1440 x 3200 pixel ultra-clear screen with a 120Hz refresh rate, ..."},
        {"role": "user","content": "What does this article talk about?"}
    ],
    "stream": true,
    "stream_options": {
        "include_usage": true
    }
}'

Pass multiple documents

Pour transmettre plusieurs documents lors d'un même tour de conversation, placez le contenu de chaque document dans un message système distinct.

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),  # Replace your API key here if you haven't set the environment variable
    # Endpoint for the China (Beijing) region. Replace {WorkspaceId} with your Workspace ID. URLs vary by region.
    base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
)
# Initialize the messages list
completion = client.chat.completions.create(
    model="qwen-long",
    messages=[
        {'role': 'system', 'content': 'You are a helpful assistant.'},
        {'role': 'system', 'content': 'Alibaba Cloud Model Studio X1————Enjoy an ultimate visual experience: features a 6.7-inch 1440 x 3200 pixel ultra-clear screen with a 120Hz refresh rate...'},
        {'role': 'system', 'content': 'Stardust S9 Pro —— A revolutionary visual feast: breakthrough 6.9-inch 1440 x 3088 pixel under-display camera design...'},
        {'role': 'user', 'content': 'What are the similarities and differences between the products discussed in these two articles?'}
    ],
    # All code examples use streaming output to clearly and intuitively show the model's output process. For non-streaming examples, see https://www.alibabacloud.com/help/en/model-studio/text-generation
    stream=True,
    stream_options={"include_usage": True}
)
full_content = ""
for chunk in completion:
    if chunk.choices and chunk.choices[0].delta.content:
        # Append output content
        full_content += chunk.choices[0].delta.content
        print(chunk.model_dump())

print(full_content)
import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.core.http.StreamResponse;

import com.openai.models.chat.completions.*;

public class Main {
    public static void main(String[] args) {
        // Create a client using the API key from the environment variable
        OpenAIClient client = OpenAIOkHttpClient.builder()
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                // Endpoint for the China (Beijing) region. Replace {WorkspaceId} with your Workspace ID. URLs vary by region.
                .baseUrl("https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1")
                .build();

        // Create a chat request
        ChatCompletionCreateParams chatParams = ChatCompletionCreateParams.builder()
                .addSystemMessage("You are a helpful assistant.")
                .addSystemMessage("Alibaba Cloud Model Studio smartphone product introduction: Alibaba Cloud Model Studio X1 —————— Enjoy an ultimate visual experience: features a 6.7-inch 1440 x 3200 pixel ultra-clear screen...")
                .addSystemMessage("Stardust S9 Pro —— A revolutionary visual feast: breakthrough 6.9-inch 1440 x 3088 pixel under-display camera design...")
                .addUserMessage("What are the similarities and differences between the products discussed in these two articles?")
                .model("qwen-long")
                .build();

        StringBuilder fullResponse = new StringBuilder();

        // All examples use streaming output to show the model's response process. For non-streaming examples, see https://www.alibabacloud.com/help/en/model-studio/text-generation
        try (StreamResponse<ChatCompletionChunk> streamResponse = client.chat().completions().createStreaming(chatParams)) {
            streamResponse.stream().forEach(chunk -> {
                // Print and append each chunk's content
                System.out.println(chunk);
                String content = chunk.choices().get(0).delta().content().orElse("");
                if (!content.isEmpty()) {
                    fullResponse.append(content);
                }
            });
            System.out.println(fullResponse);
        } catch (Exception e) {
            System.err.println("Error: " + e.getMessage());
            System.err.println("For more information, see https://www.alibabacloud.com/help/en/model-studio/error-code");
        }
    }
}
# Endpoint for the China (Beijing) region. Replace {WorkspaceId} with your Workspace ID. URLs vary by region.
curl --location 'https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json" \
--data '{
    "model": "qwen-long",
    "messages": [
        {"role": "system","content": "You are a helpful assistant."},
        {"role": "system","content": "Alibaba Cloud Model Studio X1 —— Enjoy an ultimate visual experience: features a 6.7-inch 1440 x 3200 pixel ultra-clear screen with a 120Hz refresh rate..."},
        {"role": "system","content": "Stardust S9 Pro —— A revolutionary visual feast: breakthrough 6.9-inch 1440 x 3088 pixel under-display camera design..."},
        {"role": "user","content": "What are the similarities and differences between the products discussed in these two articles?"}
    ],
    "stream": true,
    "stream_options": {
        "include_usage": true
    }
}'

Append documents

Lors de votre interaction avec le modèle, vous pourriez avoir besoin d'ajouter de nouvelles informations documentaires. Pour ce faire, ajoutez le contenu du nouveau document en tant que message système au tableau des messages.

import os
from openai import OpenAI, BadRequestError

client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),  # Replace your API key here if you haven't set the environment variable
    # Endpoint for the China (Beijing) region. Replace {WorkspaceId} with your Workspace ID. URLs vary by region.
    base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
)
# Initialize the messages list
messages = [
    {'role': 'system', 'content': 'You are a helpful assistant.'},
    {'role': 'system', 'content': 'Alibaba Cloud Model Studio X1 —— Enjoy an ultimate visual experience: features a 6.7-inch 1440 x 3200 pixel ultra-clear screen with a 120Hz refresh rate...'},
    {'role': 'user', 'content': 'What does this article talk about?'}
]

try:
    # First-round response
    completion_1 = client.chat.completions.create(
        model="qwen-long",
        messages=messages,
        stream=False
    )
    # Print the first-round response
    # For streaming output in the first round, set stream=True and concatenate each segment's content. Pass the concatenated string as the content when constructing assistant_message
    print(f"First-round response: {completion_1.choices[0].message.model_dump()}")
except BadRequestError as e:
    print(f"Error: {e}")
    print("For more information, see https://www.alibabacloud.com/help/en/model-studio/error-code")

# Construct assistant_message
assistant_message = {
    "role": "assistant",
    "content": completion_1.choices[0].message.content}

# Append assistant_message to messages
messages.append(assistant_message)
# Append new document content to messages
system_message = {
    'role': 'system',
    'content': 'Stardust S9 Pro —— A revolutionary visual feast: breakthrough 6.9-inch 1440 x 3088 pixel under-display camera design, delivering an immersive visual experience...'}
messages.append(system_message)

# Add user question
messages.append({
    'role': 'user',
    'content': 'What are the similarities and differences between the products discussed in these two articles?'
})

# Response after appending the document
completion_2 = client.chat.completions.create(
    model="qwen-long",
    messages=messages,
    # All code examples use streaming output to clearly and intuitively show the model's output process. For non-streaming examples, see https://www.alibabacloud.com/help/en/model-studio/text-generation
    stream=True,
    stream_options={"include_usage": True}
)

# Stream and print the response after appending the document
print("Response after appending the document:")
for chunk in completion_2:
    print(chunk.model_dump())
import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.chat.completions.*;
import com.openai.core.http.StreamResponse;

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        OpenAIClient client = OpenAIOkHttpClient.builder()
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                // Endpoint for the China (Beijing) region. Replace {WorkspaceId} with your Workspace ID. URLs vary by region.
                .baseUrl("https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1")
                .build();
        // Initialize the messages list
        List<ChatCompletionMessageParam> messages = new ArrayList<>();

        // Add role-setting information
        ChatCompletionSystemMessageParam roleSet = ChatCompletionSystemMessageParam.builder()
                .content("You are a helpful assistant.")
                .build();
        messages.add(ChatCompletionMessageParam.ofSystem(roleSet));

        // First-round content
        ChatCompletionSystemMessageParam systemMsg1 = ChatCompletionSystemMessageParam.builder()
                .content("Alibaba Cloud Model Studio X1 —— Enjoy an ultimate visual experience: features a 6.7-inch 1440 x 3200 pixel ultra-clear screen with a 120Hz refresh rate, 256GB storage, 12GB RAM, and a 5000mAh long-lasting battery...")
                .build();
        messages.add(ChatCompletionMessageParam.ofSystem(systemMsg1));

        // User question (USER role)
        ChatCompletionUserMessageParam userMsg1 = ChatCompletionUserMessageParam.builder()
                .content("Please summarize the article content")
                .build();
        messages.add(ChatCompletionMessageParam.ofUser(userMsg1));

        // Build the first-round request and handle exceptions
        ChatCompletion completion1;
        try {
            completion1 = client.chat().completions().create(
                    ChatCompletionCreateParams.builder()
                            .model("qwen-long")
                            .messages(messages)
                            .build()
            );
        } catch (Exception e) {
            System.err.println("Error: " + e.getMessage());
            System.err.println("For more information, see https://www.alibabacloud.com/help/en/model-studio/error-code");
            e.printStackTrace();
            return;
        }

        // First-round response
        String firstResponse = completion1 != null ? completion1.choices().get(0).message().content().orElse("") : "";
        System.out.println("First-round response: " + firstResponse);

        // Construct AssistantMessage
        ChatCompletionAssistantMessageParam assistantMsg = ChatCompletionAssistantMessageParam.builder()
                .content(firstResponse)
                .build();
        messages.add(ChatCompletionMessageParam.ofAssistant(assistantMsg));

        // Second-round content
        ChatCompletionSystemMessageParam systemMsg2 = ChatCompletionSystemMessageParam.builder()
                .content("Stardust S9 Pro —— A revolutionary visual feast: breakthrough 6.9-inch 1440 x 3088 pixel under-display camera design, delivering an immersive visual experience...")
                .build();
        messages.add(ChatCompletionMessageParam.ofSystem(systemMsg2));

        // Second-round user question (USER role)
        ChatCompletionUserMessageParam userMsg2 = ChatCompletionUserMessageParam.builder()
                .content("Please compare the structural differences between the two descriptions")
                .build();
        messages.add(ChatCompletionMessageParam.ofUser(userMsg2));

        // All examples use streaming output to show the model's response process. For non-streaming examples, see https://www.alibabacloud.com/help/en/model-studio/text-generation
        StringBuilder fullResponse = new StringBuilder();
        try (StreamResponse<ChatCompletionChunk> streamResponse = client.chat().completions().createStreaming(
                ChatCompletionCreateParams.builder()
                        .model("qwen-long")
                        .messages(messages)
                        .build())) {

            streamResponse.stream().forEach(chunk -> {
                String content = chunk.choices().get(0).delta().content().orElse("");
                if (!content.isEmpty()) {
                    fullResponse.append(content);
                }
            });
            System.out.println("\nFinal response:");
            System.out.println(fullResponse.toString().trim());
        } catch (Exception e) {
            System.err.println("Error: " + e.getMessage());
            System.err.println("For more information, see https://www.alibabacloud.com/help/en/model-studio/error-code");
        }
    }
}
# Endpoint for the China (Beijing) region. Replace {WorkspaceId} with your Workspace ID. URLs vary by region.
curl --location 'https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json" \
--data '{
    "model": "qwen-long",
    "messages": [
            {"role": "system","content": "You are a helpful assistant."},
            {"role": "system","content": "Alibaba Cloud Model Studio X1 —— Enjoy an ultimate visual experience: features a 6.7-inch 1440 x 3200 pixel ultra-clear screen with a 120Hz refresh rate..."},
            {"role": "user","content": "What does this article talk about?"},
            {"role": "system","content": "Stardust S9 Pro —— A revolutionary visual feast: breakthrough 6.9-inch 1440 x 3088 pixel under-display camera design, delivering an immersive visual experience..."},
            {"role": "user","content": "What are the similarities and differences between the products discussed in these two articles"}
        ],
    "stream": true,
    "stream_options": {
        "include_usage": true
    }
}'

Tarification du modèle

Chine continentale

Si vous sélectionnez la zone de déploiement Chine continentale, les ressources de calcul d'inférence du modèle sont limitées à la Chine continentale. Les données statiques sont stockées dans la région que vous avez sélectionnée. Région prise en charge : Chine (Pékin).

ModèleVersionFenêtre de contexteEntrée max.Sortie max.Coût d'entréeCoût de sortieQuota gratuit

Remarque

(tokens)(pour 1 M de tokens)
qwen-long

Appels par lot à moitié prix

Stable

10 000 000

10 000 000

32 768

0,5 CNY

2 CNY

1 million de tokens chacun

Valable 90 jours après l'activation de Model Studio

Nom du modèleVersionLongueur du contexteEntrée max.Sortie max.Coût d'entréeCoût de sortie
(Tokens)(pour 1 million de tokens)
qwen-long

API Batch à 50 % des tarifs en temps réel

Stable

10 000 000

10 000 000

32 768

0,072 $

0,287 $

FAQ

  1. Le modèle Qwen-Long prend-il en charge la soumission de tâches par lot ?

    Oui. Qwen-Long prend en charge l'API Batch d'OpenAI à 50 % du tarif des appels en temps réel. Soumettez les tâches par lot sous forme de fichiers ; ces tâches s'exécutent de manière asynchrone et retournent les résultats une fois terminées ou en cas de délai d'attente dépassé.

  2. Où sont enregistrés les fichiers après leur téléchargement via l'API de fichiers compatible OpenAI ?

    Les fichiers sont téléchargés gratuitement dans votre bucket Model Studio. Consultez la section API File d'OpenAI pour interroger et gérer les fichiers.

  3. Comment garantir que le modèle génère une chaîne JSON dans un format standard ?

    qwen-long et tous ses instantanés prennent en charge la sortie structurée. Spécifiez un schéma JSON pour obtenir un JSON valide conforme à votre structure.

Référence de l'API

Reportez-vous aux détails de l'API Qwen pour connaître les paramètres d'entrée et de sortie du modèle Qwen-Long.

Codes d'erreur

Si l'appel du modèle échoue et renvoie un message d'erreur, consultez la section Codes d'erreur pour résoudre le problème.

Limites

  • Dépendances du SDK :
    • Les opérations sur les fichiers (téléchargement, suppression, requête) nécessitent un SDK compatible OpenAI.
    • Appelez les modèles à l'aide d'un SDK compatible OpenAI ou du SDK Dashscope.
  • Téléchargement de fichiers :
    • Formats pris en charge : TXT, DOCX, PDF, XLSX, EPUB, MOBI, MD, CSV, JSON, BMP, PNG, JPG/JPEG et GIF.
    • Taille des fichiers : la taille maximale des fichiers image est de 20 Mo. Pour les autres formats de fichiers, elle est de 150 Mo.
    • Quota du compte : maximum 10 000 fichiers ou 100 Go par compte. Les téléchargements échouent lorsque l'une de ces limites est atteinte. Supprimez des fichiers pour libérer du quota. Consultez la section Compatible OpenAI - Fichier.
    • Durée de conservation : actuellement, aucune limite d'expiration n'est imposée aux fichiers stockés.
  • Entrées de l'API :
    • Le premier message system définit le rôle. Le second contient le contenu du document ou fileid://xxx. Le message user contient la requête.
    • Lorsque vous référencez des fichiers à l'aide d'un file-id, une seule requête peut référencer jusqu'à 100 fichiers.
    • En présence d'un second message system, la limite du message user est de 9 000 tokens. Aucune limite ne s'applique s'il n'y a qu'un seul message système.
    • La longueur totale du contexte est limitée à 10 millions de tokens.
  • Sorties de l'API :
    • La longueur de sortie maximale est de 32 768 tokens.
  • Partage de fichiers :
    • Les file-id sont spécifiques à un compte et ne peuvent pas être utilisés entre comptes ni avec des clés API d'utilisateurs RAM.
  • Limitation du débit : pour plus d'informations sur les conditions de limitation du débit des modèles, consultez la section Limitation du débit.