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.
-
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-idunique pour votre compte et lance l'analyse. Le téléchargement, le stockage et l'analyse des fichiers sont gratuits.
-
Appel d'API et facturation :
- Lors de l'appel du modèle, référencez un ou plusieurs
file-iddans le messagesystem. - 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.
- Lors de l'appel du modèle, référencez un ou plusieurs
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èle | Version | Fenêtre de contexte | Entrée max. | Sortie max. | Coût d'entrée | Coût de sortie | Quota gratuit |
|---|---|---|---|---|---|---|---|
| (tokens) | (pour 1 M de tokens) | ||||||
qwen-long
| 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èle | Version | Longueur du contexte | Entrée max. | Sortie max. | Coût d'entrée | Coût de sortie |
|---|---|---|---|---|---|---|
| (Tokens) | (pour 1 million de tokens) | |||||
qwen-long
| Stable | 10 000 000 | 10 000 000 | 32 768 | 0,072 $ | 0,287 $ |
FAQ
-
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é.
-
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.
-
Comment garantir que le modèle génère une chaîne JSON dans un format standard ?
qwen-longet 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
systemdéfinit le rôle. Le second contient le contenu du document oufileid://xxx. Le messageusercontient 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 messageuserest 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.
- Le premier message
-
Sorties de l'API :
- La longueur de sortie maximale est de 32 768 tokens.
-
Partage de fichiers :
- Les
file-idsont spécifiques à un compte et ne peuvent pas être utilisés entre comptes ni avec des clés API d'utilisateurs RAM.
- Les
-
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.