Aprendizagem pessoal com IA
e orientação prática
Espelho de desenho CyberKnife

[Reimpressão] Capacidade de chamada de ferramenta do QwQ-32B e aplicativo RAG autêntico

contextos

Um artigo recente intitulado Search-R1: treinamento de LLMs para raciocinar e aproveitar os mecanismos de pesquisa com aprendizado por reforço Tese sobre o tema "O futuro das Nações Unidas" (arxiv.org/pdf/2503.09516) tem atraído muita atenção. O artigo propõe uma nova maneira de treinar modelos de linguagem grandes (LLMs) usando o aprendizado por reforço para raciocinar e explorar mecanismos de pesquisa. Vale a pena observar que algumas das ideias do artigo são semelhantes às desenvolvidas pela equipe da Qwen em QwQ-32B A exploração no modelo coincide.

O QwQ-32B da Alibaba, lançado recentemente (qwenlm.github.io/zh/blog/qwq-32b/), integra recursos relacionados ao agente no modelo de raciocínio. Esses recursos permitem que o modelo pense de forma crítica ao usar a ferramenta e adapte o processo de raciocínio com base no feedback do ambiente. Na pasta do modelo QwQ-32B no diretório added_tokens.json você pode ver os tokens especiais adicionados para chamadas e respostas de ferramentas:

{
"</think>": 151668,
"</tool_call>": 151658,
"</tool_response>": 151666,
"<think>": 151667,
"<tool_call>": 151657,
"<tool_response>": 151665
}

Neste documento, usaremos o Agentic RAG Como exemplo, são demonstrados os recursos do modelo QwQ-32B em termos de chamada de ferramentas.


 

RAG autêntico vs. RAG tradicional

Para entender melhor os benefícios do RAG Autêntico, primeiro precisamos distinguir entre o RAG Autêntico e o paradigma de prática RAG predominante atualmente:

  • RAG tradicionalA grande maioria dos projetos RAG atuais são essencialmente fluxos de trabalho, ou seja, sistemas que orquestram LLMs e ferramentas por meio de caminhos de código predefinidos. Esse fluxo de trabalho artificialmente predefinido e "escrito até a morte" consiste em muitas partes inter-relacionadas, mas frágeis, como roteamento, fragmentação, reordenação, interpretação de consultas, expansão de consultas, contextualização de fontes e engenharia de pesquisa.
    • desvantagensÉ difícil cobrir todos os casos extremos em um fluxo de trabalho orquestrado por humanos. Especialmente em cenários complexos que exigem várias rodadas de recuperação, o efeito é mais limitado.
  • RAG autênticoSimplifique o processo com uma abordagem de ponta a ponta. Basta equipar o modelo com uma ferramenta de API para recuperação em rede (no caso deste documento, usando o Tavily API, com uma certa quantidade de créditos gratuitos), o restante do trabalho é feito pelo próprio modelo, incluindo, entre outros:
    • Intenção de entender (julgar se a rede é necessária)
    • Reescrever ou dividir a pergunta
    • chamada de interface
    • Coreografia do processo (incluindo se e como realizar buscas em várias etapas)
    • citar algo como fonte de algo
    • ...

Em poucas palavras, o conceito central do RAG Autêntico é:Menos estrutura, mais inteligência, menos é mais.

exatamente como Antrópica Definição do modelo de agente: semelhante à Deep Search, os agentes devem executar a tarefa-alvo internamente e "direcionam dinamicamente seus próprios processos e o uso de ferramentas para controlar a maneira como a tarefa é realizada".

Processo geral

A figura a seguir ilustra o fluxo geral do Agentic RAG:

[Reimpressão] Capacidade de chamada de ferramentas do QwQ-32B e aplicativo RAG autêntico-1

  1. Adapte as perguntas dos usuários para solicitar modelos de palavras.
  2. Chama o modelo para gerar um novo token. Se o processo de geração não resultar em um <tool_call> ... </tool_call>e, em seguida, o resultado do retorno é emitido diretamente.
  3. No caso de <tool_call> ... </tool_call>indica que o modelo iniciou uma solicitação de chamada de ferramenta durante o processo de raciocínio. Analisando essa solicitação, executando web_searche agrupa os resultados da chamada de interface em <tool_response> ... </tool_response> emendados no contexto do macromodelo e solicitados novamente para a geração do macromodelo.
  4. Repita as etapas acima até que não haja mais <tool_call>(ou o limite de solicitação é atingido) ou a presença de <|im_end|>.

O processo é essencialmente o mesmo que o descrito no artigo Search-R1:

[Reimpressão] Capacidade de chamada de ferramentas do QwQ-32B e aplicativo RAG autêntico-2

Principais pontos técnicos

  • Modelos de palavras de taco::
user_question = input('请输入你的问题:')
max_search_times = 5
prompt = f"""You are Qwen QwQ, a curious AI built for retrival augmented generation.
You are at 2025 and current date is {date.today()}.
You have access to the web_search tool to retrival relevant information to help answer user questions.
You can use web_search tool up to {max_search_times} times to answer a user's question, but try to be efficient and use as few as possible.
Below are some guidelines:
- Use web_search for general internet queries, like finding current events or factual information.
- Always provide a final answer in a clear and concise manner, with citations for any information obtained from the internet.
- If you think you need to use a tool, format your response as a tool call with the `action` and `action_input` within <tool_call>...</tool_call>, like this:\n<tool_call>\n{{ "action": "web_search", "action_input": {{ "query": "current stock price of Tesla" }} }}\n</tool_call>.
- After using a tool, continue your reasoning based on the web_search result in <tool_response>...</tool_response>.
- Remember that if you need multi-turn web_search to find relevant information, make sure you conduct all search tasks before you provide a final answer.
---
User Question:{user_question}"""
  • Sinais de parada personalizados::

    Quando for detectado que o modelo acionou um processo de geração autorregressivo durante a <tool_call>(.*?)</tool_call>\s*$ A geração é interrompida após o formato (correspondência de expressão regular):

from transformers import (
AutoModelForCausalLM,
AutoTokenizer,
StoppingCriteria,
StoppingCriteriaList
)
import torch
import re
tool_call_regex = r"<tool_call>(.*?)</tool_call>\s*$"
end_regex = r"<\|im_end\|\>\s*$"
# 同时监测: <tool_call> 或 <|im_end|>
class RegexStoppingCriteria(StoppingCriteria):
def __init__(self, tokenizer, patterns):
self.patterns = patterns
self.tokenizer = tokenizer
def __call__(self, input_ids: torch.LongTensor, scores: torch.FloatTensor, **kwargs) -> bool:
decoded_text = self.tokenizer.decode(input_ids[0])
for pattern in self.patterns:
if re.search(pattern, decoded_text, re.DOTALL):
return True
return False
stopping_criteria = StoppingCriteriaList([
RegexStoppingCriteria(
tokenizer,
patterns=[tool_call_regex, end_regex]
)
])
#model.generate(..., stopping_criteria=stopping_criteria) # 加上停止符
  • API de pesquisa na Web::

    A API de pesquisa usada nessa prática é a Tavily API, que oferece uma certa quantidade de créditos gratuitos para facilitar a experimentação e a replicação. A Tavily API permite que os desenvolvedores integrem a funcionalidade de pesquisa na Web em seus aplicativos por meio de chamadas simples de API.

Código de Prática

Para obter o código de prática detalhado, consulte o link a seguir:

Capítulo de replicação do DeepSearch: uma primeira olhada na função ToolCall do QwQ-32B, com o Agentic RAG como exemplo.ipynb

Casos de teste

Problemas de testeDescrição: Por favor, forneça mais informações sobre o modelo QwQ-32B lançado recentemente em código aberto pela Ali.

Gerar resultados(consulte o bloco de notas para ver os resultados completos)

[Reimpressão] Capacidade de chamada de ferramentas do QwQ-32B e aplicativo RAG autêntico-3

[Reimpressão] Capacidade de chamada de ferramenta do QwQ-32B e aplicativo RAG autêntico-4

[Reimpressão] Capacidade de chamada de ferramenta do QwQ-32B e aplicativo RAG autêntico-5

Como pode ser visto nos resultados, o modelo de inferência realiza de forma autônoma a compreensão da intenção (determinando se uma pesquisa em rede é necessária) e a geração de palavras-chave de pesquisa (reescrita ou divisão de perguntas). O modelo também leva em conta possíveis cenários de pesquisa em várias rodadas. Após acionar um web search Em seguida, o modelo gera um relatório final com base nos resultados da pesquisa.

Nesse caso, o modelo concluiu apenas uma chamada à interface de pesquisa. Isso pode ser devido à simplicidade do problema do caso ou ao fato de que o modelo básico ainda não tem capacidade suficiente para acionar pesquisas complexas em várias rodadas. Isso também mostra que, para utilizar totalmente o potencial do modelo como um corpo inteligente, ainda é necessário consultar o Search-R1 para pós-treinamento e ajuste fino direcionado.

No entanto, com base nos recursos já demonstrados pelo modelo QwQ-32B, a combinação de dados de retreinamento sintéticos (ou classificados manualmente) bem projetados e o treinamento de reforço ou SFT em cenários segmentados, além de mascarar a saída retornada pela resposta da interface da ferramenta token Espera-se que essa rota de retreinamento se torne a principal corrente de desenvolvimento e implantação de inteligência no futuro, já que as perdas correspondentes podem ser pré-consideradas para uma variedade de ações e casos-limite, tornando a implantação mais simples e eliminando a necessidade de orquestração humana do fluxo de trabalho de design. O retreinamento permite a pré-consideração de várias ações e casos-limite, facilitando a implementação e eliminando a necessidade de fluxos de trabalho de design orquestrados por humanos. A seção 3.1 do documento Search-R1 descreve em detalhes o "Loss Masking for Retrieved Tokens" Tecnologia. Por meio do uso do PPO e do GRPO em que os tokens recuperados são mascarados por perdas, o Search-R1 otimiza o LLM para gerar tokens, aumentando a capacidade do modelo de interagir com mecanismos de pesquisa e realizar inferências.

Além disso, o Search-R1 oferece suporte à recuperação e à inferência em várias rodadas (Seção 3.2 "Geração de texto com chamada de mecanismo de pesquisa multi-turnos intercalados" na tese) por meio do <search> responder cantando </search> e coloca o conteúdo recuperado no <information> responder cantando </information> entre. A saída da resposta final, por outro lado, usa o <answer> responder cantando </answer>.

Não pode ser reproduzido sem permissão:Chefe do Círculo de Compartilhamento de IA " [Reimpressão] Capacidade de chamada de ferramenta do QwQ-32B e aplicativo RAG autêntico
pt_BRPortuguês do Brasil