Perguntas frequentes sobre geração de texto
Perguntas comuns sobre streaming, gerenciamento de contexto, cache de contexto, saída estruturada, modo de pensar, chamada de função e lote.
<a id="streaming" />
Fluxo
** APIS:** [Compatível com OpenAI] (/api-reference/chat/openai-chat), [DashScope] (/api-reference/chat/dashscope)
Por que a transmissão para no meio da resposta?
Verifique seu representante ou infraestrutura.
- ** Nginx buffering** - Nginx buffers SSE por padrão. Adicionar
proxy_buffering offPara a configuração do seu servidor. - Se o tempo for menor que o tempo de resposta, a conexão fecha cedo. Aumente.
- Alguns firewalls fecham conexões que parecem ociosas durante longas pausas entre fichas.
- **
data: [DONE]Garanta que seu cliente leia o fluxo até que a conexão feche ou o sentinela seja recebido.
Como eu acumulo pedaços de streaming em uma resposta completa?
** OpenAI compatível:** Set stream=True. Cada pedaço tem choices[0].delta.content. Concatene todos os não null content Valores. Obter o uso do token do último pedaço também definindo stream_options={"include_usage": True}.
** DashScope:** Set incremental_output=True. Cada pedaço contém apenas os novos símbolos (não a resposta completa até agora). Concatene-os em ordem. O uso de token está disponível em cada pedaço.
Para modelos que pensam antes de responderem (QwQ, Qwen3 com enable_thinking=True), os pedaços chegam em duas fases: primeiro reasoning_content, então content. Acumule cada um separadamente.
Quais modelos precisam ser transmitidos?
QwQ e QVQ estão apenas transmitindo. Chamando-os sem stream=True falha ou retorna uma resposta vazia. A maioria dos outros Qwen3 modelos funcionam em ambos os modos. Quando usar a função chamando com Qwen-Omni Modelos (qwen3.5-omni-plus, qwen3.5-omni-flash, qwen3-omni-flash), streaming é necessária apenas para a função chamada - outros usa suporte ambos os modos.
<a id="context-multi-turn" />
Contexto e multi-volta
** APIS:** [Conversas multi-vira] (/diretores-guias/corredores-e-escala/multi-turnos) [Cacheamento de contexto] (/diretores-guias/corredores-e-escala/contexto-cache)
Como funciona a conversa multi-volta?
A API é apátrida, não guarda história de conversa. Você mantém o messages Prepare-se. Depois de cada rodada, adicione a resposta do assistente e a próxima mensagem do usuário, então envie o conjunto completo com o próximo pedido.
A API de Respostas (/v2/apps/...) oferece um atalho: passe previous_response_id para link gira automaticamente sem gerenciar o array manualmente. As identificações de resposta expiram após 7 dias.
Como posso controlar a duração da conversa e evitar o excesso de fichas?
Estratégias comuns:
- Troncamento** - deixe cair as mensagens mais antigas quando o total de fichas se aproxima do limite de contexto.
- Sumarização** - resumir mais velho se transforma em um único sistema ou mensagem de usuário.
- Recuperação - loja se transforma em uma loja vetorial e recuperar apenas os relevantes por pedido.
Monitor usage.prompt_tokens em cada resposta ao crescimento da trilha. Os limites de contexto variam de acordo com o modelo. Veja [Seleção do modelo] (/developer-guides/getting-started/model-selection).
O que é cache de contexto e quando devo usá-lo?
O cache de contexto armazena um prefixo de seu prompt., chamadas repetidas reutilizam-no com um preço de token reduzido. Existem três modos:
| Modo | Como permitir | Preço de criação de cache | Cache atingiu o preço. | Mínimas fichas |
|---|---|---|---|---|
| Implícito. | Automático, sem necessidade de configuração. | Preço padrão de entrada | 20% do preço de entrada. | 256 |
| Explicidade | Adicionarcache_control: {type: ephemeral} Marcador |
125% do preço de entrada. | 10% do preço de entrada. | 1024 |
| Sessão | Respostas API +x-dashscope-session-cache: enable cabeçalho |
125% do preço de entrada. | 10% do preço de entrada. | 1024 |
Caching implícito se aplica automaticamente quando o modelo detecta um prefixo repetido. Os modos Explicito e Sessão cobram uma taxa de criação de cache quando o prefixo é escrito, e depois cobram as próximas batidas pelo preço do cache.
Caching explícito é útil quando você controla um grande e estável sistema prompt ou documento que é preparado para cada pedido. Caching de sessão é para fluxos de trabalho de API Responses.
As batidas de cache aparecem em usage.prompt_tokens_details.cached_tokens. Cache é por conta, por modelo, não compartilhado entre contas ou modelos.
A API mantém a memória de conversa automaticamente?
Não. A API é apátrida, não há memória incorporada. Você mantém o messages Prepare-se. Para memória persistente em sessões, guarde o histórico de conversas externamente e inclua histórico relevante em cada pedido.
- Faz o... QwenCloud Console salvar história de conversação Playground?
O QwenCloud O console exibe um máximo de 100 registros históricos de conversação, sem limite de tempo. Se você apagar manualmente alguns registros, o sistema automaticamente exibe os mais antigos. Conversas de sessões de julgamento enquanto ** não se registraram** ou aqueles que resultam em ** erros de inferência** não são salvos.
<a id="structured-output" />
Saída estruturada
** API:** [ saída estruturada] (/developer-guides/text-generation/structured-output)
Como faço para obter a saída do JSON de forma confiável?
Preparar. response_format={"type": "json_object"} e incluir a palavra "JSON" em seu prompt (por exemplo, "Retorne sua resposta como um objeto JSON com chaves ..."). O modelo é então restringido a produzir JSON válido.
Não se preparem. max_tokens - uma resposta truncada produz JSON inválido.
Por que o modelo produz texto extra antes ou depois do JSON?
Isso acontece quando o prompt não claramente instrui o modelo para produzir apenas JSON, ou quando response_format Não está pronto. Adicionar response_format={"type": "json_object"} E frase o prompt para que a saída esperada seja apenas JSON.
Se você precisa de saída estruturada de um modelo de pensamento (que não suporta response_format), recolher o texto de resposta completa, em seguida, ligar json.loads() - Pode deixar. Se isso levantar um JSONDecodeError, envie o texto bruto para um modelo rápido (por exemplo qwen3.5-flash) com response_format={"type": "json_object"} pedindo para consertar o JSON.
<a id="thinking-mode" />
Modo de pensar
** API:** [Modo de pensamento] (/developer-guides/text-generation/thinking)
O que é modo de pensar?
O modo de pensar faz o modelo raciocinar passo a passo antes de produzir sua resposta final. O raciocínio aparece em reasoning_contentA resposta aparece em content. Isso melhora a precisão em tarefas complexas, como matemática, codificação e raciocínio multi-passo, ao custo de mais fichas e maior latência.
Existem dois tipos de modelos pensantes:
- Modelos hibridos, você comuta o pensamento ligado ou desligado. Qwen3.5 A série tem pensado por padrão; Qwen3, Qwen3-VL, e Qwen3-Omni-Flash Descarregue-o por padrão. Qwen3.5-Omni Não suporta o modo de pensar. Comuta com
enable_thinking=True/FalseEmextra_body(OpenAI compatível) ou como um parâmetro direto (DashScope). - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
-thinkingAs variantes sempre pensam, a bandeira não está disponível.
Use /think Ou /no_think no início de uma mensagem do usuário para alternar por turno sem alterar os parâmetros de solicitação. Isso funciona apenas para modelos híbridos. Modelos só de pensamento. -thinking Não pode desativar o pensamento.
O modo de pensar requer transmissão?
Alguns modelos exigem stream=true Quando enable_thinking=true. Se uma chamada não-streaming retornar parameter.enable_thinking only support stream call, ou habilitar streaming ou definir enable_thinking=false.
Modelos só de pensamento (QwQ, QVQ) são apenas streaming, independentemente de configurações de pensamento. Veja [Que modelos requerem streaming?] (#streaming)
Para a API DashScope, também definida incremental_output=true Quando enable_thinking=true - caso contrário, a API retorna um erro.
Como pensar afeta faturar?
-Pensando em fichas.reasoning_content) são faturados pelo preço de saída. Preparar. thinking_budget Para uma contagem de fichas inteiras positiva para o raciocínio de cap; valores mais baixos reduzem o custo, mas podem reduzir a qualidade em problemas difíceis.
Processamento de lote aplica 50% de desconto em fichas de pensamento e resposta. Veja [Pricing] (/developer-guides/getting-started/pricing).
Posso me esconder do usuário final?
Sim. O reasoning_content O campo está separado de content. Você pode registrar ou descartar reasoning_content no servidor e envie apenas content Para usuários finais.
Quando a função chama com o pensamento ativado, você deve incluir reasoning_content nas mensagens subsequentes enviadas de volta para o modelo, omitindo-o degrada a precisão. Esta é uma preocupação interna que não afeta o que o usuário vê.
<a id="function-calling" />
Função chamando
*API: ** [Function chamando] (/developer-guides/tool-calling/function-calling)
Como eu chamo as funções locais sequencialmente por meio de chamadas de funções?
O laço padrão:
- Envie mensagens de usuário + definições de ferramentas.
- O modelo retorna um
tool_callsResposta: nenhuma resposta final ainda. - Execute a função nomeada com os argumentos fornecidos.
- Anexe o resultado da ferramenta como um
role: "tool"Mensagem. - Ligue para o modelo de novo. Repita até não.
tool_callsna resposta. - A resposta final (não
tool_calls) é a resposta.
Use parallel_tool_calls=True Só quando as tarefas são independentes. Para tarefas dependentes (input da ferramenta A depende da saída da ferramenta B), execute chamadas de ferramenta em série: após cada resultado da ferramenta, envie-a de volta para o modelo e espere pelo próximo tool_calls Resposta antes de executar a próxima ferramenta.
Qual é a diferença entre a função chamando e ferramentas integradas?
Chamada de funçãotools parâmetro) permite definir funções personalizadas que funcionam em sua aplicação. O modelo devolve uma instrução estruturada, seu código executa a função e retorna o resultado.
** Ferramentas construídas** (busca web, intérprete de código, busca de imagem) são fornecidas pela plataforma. Passe-os como definições de ferramentas usando seus valores específicos de tipo - nenhum código de execução personalizado necessário. Veja [Busca na Web] (/developer-guides/tool-calling/web-search), [Interpretador de código] (/developer-guides/tool-calling/code-interpreter).
Descrições de ferramentas contam como fichas de entrada e são faturadas como parte do prompt.
Posso ligar para duas funções locais sequencialmente através de uma chamada de função?
Sim, este é o laço padrão. Depois de receber um tool_calls Responder, executar a função, enviar o resultado de volta como um role: "tool" Mensagem, e ligue para o modelo novamente. O modelo retorna o próximo tool_calls Resposta. Repita até não. tool_calls Fique. Veja a função chamando loop acima.
<a id="batch" />
Lote
** API:** [Batch API] (/developer-guides/text-generation/batch)
Quando devo usar o lote contra pedidos em tempo real?
Use lotes para grandes cargas de trabalho off-line, processamento de documentos, anotação de dados, oleodutos de avaliação, onde algumas horas de latência são aceitáveis. Os pedidos de lote são cobrados a 50% do preço em tempo real.
Use pedidos em tempo real para casos interativos de uso onde usuários esperam pela resposta.
Quais são os limites de tamanho do lote?
| Limite | Valor |
|---|---|
| Pedidos por arquivo | 50,000 |
| Tamanho do arquivo | 500 MB |
| Por linha, tamanho. | 6 MB |
| Modelos por arquivo | 1 (todos os pedidos devem usar o mesmo modelo) |
| Janela de conclusão | 24 h - 336 h (14 dias) |
Modelos apoiados: qwen-max, qwen-plus, qwen-flash, qwen3.5-flash.
Como eu recupero os resultados do lote?
- Procurem o status do lote a cada 1-2 minutos usando
client.batches.retrieve(batch_id)(Python OpenAI SDK) ou o equivalente DashScope endpoint. - Ciclo de vida da situação:
validating→in_progress→finalizing→completed. - Quando
completed, baixar comclient.files.content(output_file_id). - Baixe o arquivo de erro (
error_file_id) separadamente para qualquer pedido falhado.
Os resultados estão em JSONL. Cada linha de volta ao seu pedido original via custom_id.
O desconto em lote não é empilhado com cache de contexto ou outros descontos. Só pedidos bem sucedidos são cobrados.
<a id="models" />
Modelos
Quantas línguas o Qwen Suporte de modelos?
Qwen3.5 e Qwen3-VL Modelos de série suportam 33 idiomas, incluindo chinês, inglês, japonês, coreano, árabe, espanhol, francês, português, alemão, italiano, russo, vietnamita, tailandês e indonésio. Veja [Seleção de modelo] (/developer-guides/getting-started/model-selection) para detalhes específicos do modelo.
Como são armazenados os parâmetros de modelos de linguagem?
Modelos de código aberto podem ser baixados do ModelScope. Estrutura do modelo é definida em arquivos de configuração JSON, com pesos aprendidos armazenados como arquivos de dados vetoriais. Use bibliotecas Python como transformers para carregá-los e analisá-los.
Os modelos podem se integrar com bases de dados estruturadas como MySQL ou Colmeia?
Não através da API padrão. Para fluxos integrados de dados, use a função chamando para deixar o modelo gerar SQL, executá-lo em sua aplicação e retornar os resultados ao modelo.
Qual série de modelos faz qwen-plus-latest Pertencer a?
qwen-plus-latest Sempre aponta para a última versão de qwen-plus e pertence ao Qwen3 série, não o Qwen3.5 Ou Qwen3.7 Série. Observe que Qwen3.5, Qwen3.7E designações semelhantes são séries de modelos independentes que são paralelas a Qwen3, não sub-versões dele.
O que é alucinação modelo, e como eu reduzo?
Alucinação é quando um modelo gera conteúdo que é absurdo, factualmente incorreto, ou logicamente inconsistente, enquanto ainda soa plausível e fluente. Difere de erros factuais causados por dados de treinamento ultrapassados, opiniões subjetivas, ou conteúdo que você explicitamente pediu ao modelo para inventar (como uma história).
Para reduzir a alucinação:
- Use um modelo mais capaz. Modelos maiores e mais avançados geralmente alucinam menos. Por exemplo, modelos de nível Max superam modelos de nível Plus, que superam modelos de nível Turbo.
- Refina seu prompt — adicione instruções como "resposta somente usando os documentos fornecidos; diga 'Eu não sei' se a informação não está disponível" ou "cite dados específicos para apoiar sua conclusão." Quebrar uma tarefa em várias etapas ou atribuir ao modelo um papel restrito também pode ajudar.
- Use a geração aumentada de recuperação (RAG) — respostas de base em material de referência recuperado e limitar respostas a esse escopo. Certifique-se de que seu sistema de recuperação seja de alta qualidade, cite fontes claramente, e lide com casos sem correspondência graciosamente.
- Use a chamada de função ou MCP para cálculos - quando uma tarefa envolve dados estruturados ou matemática, chame uma ferramenta para calcular o resultado e ter o modelo sumarizá-lo, em vez de deixar o modelo calcular diretamente.
- ** Parâmetros de amostragem de tune** - baixando
temperature,top_k, etop_ptorna a produção mais determinística, a algum custo para a criatividade. Baixandomax_tokenstambém pode ajudar a evitar que o modelo fabrique conteúdo depois de ter fornecido as informações fundamentais. - ** Adiciona verificação pós-processamento** - verifique a resposta para alucinação em um passo separado, por exemplo, com outra chamada modelo. Isso aumenta o custo e a latência.
<a id="api-sdk" />
API e SDK
Como eu vejo informações de código de erro?
Veja [Mensagens de erro] (/api-reference/preparation/error-messages) para a lista completa de códigos de erro, descrições e soluções recomendadas.
Como eu instalo o SDK?
QwenCloud suporta os SDKs DashScope (Python, Java) e OpenAI SDKs (Python, Node.js, Java, Go). Veja [Instalar SDK] (/api-reference/preparation/install-sdk).
<a id="rate-limits" />
Limites de taxa e desempenho
A velocidade da geração de texto é a mesma para todos os usuários?
Não. A velocidade de geração varia de acordo com a carga atual e a concordância. Velocidade não é configurável pelo usuário.
Quanto tempo devo esperar depois de atingir o limite de taxa?
O tempo de espera depende do seu limite de taxa (RPM/RPS). Por exemplo, um limite de 120 RPM (2 pedidos/segundo) significa que submeter 2 pedidos em 0,2 segundos irá acelerar o terceiro. Espere aproximadamente o restante daquele segundo antes de tentar novamente. Use retrocesso exponencial para robustez.