[Réimpression] La capacité d'appel d'outils du QwQ-32B et l'application du RAG agentique

contextes

Un article récent intitulé Search-R1 : Formation des LLM au raisonnement et à l'exploitation des moteurs de recherche grâce à l'apprentissage par renforcement Thèse sur le thème "L'avenir des Nations Unies" (arxiv.org/pdf/2503.09516) a attiré beaucoup d'attention. L'article propose une nouvelle façon de former de grands modèles linguistiques (LLM) en utilisant l'apprentissage par renforcement pour le raisonnement et l'exploitation des moteurs de recherche. Il convient de noter que certaines des idées présentées dans l'article sont similaires à celles développées par l'équipe de Qwen dans le cadre du projet QwQ-32B L'exploration du modèle coïncide.

Le QwQ-32B (qwenlm.github.io/zh/blog/qwq-32b/) récemment publié par Alibaba intègre des capacités liées aux agents dans le modèle de raisonnement. Ces capacités permettent au modèle de penser de manière critique tout en utilisant l'outil et d'adapter le processus de raisonnement en fonction du retour d'information de l'environnement. Dans le dossier du modèle QwQ-32B dans le répertoire added_tokens.json vous pouvez voir les jetons spéciaux ajoutés pour les appels d'outils et les réponses d'outils :

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

Dans le présent document, nous utiliserons le terme "Agentic". RAG A titre d'exemple, les capacités du modèle QwQ-32B en termes d'invocation d'outils sont démontrées.

 

GCR agentique vs. GCR traditionnel

Afin de mieux comprendre les avantages de la GCR agentique, nous devons d'abord faire la distinction entre la GCR agentique et le paradigme actuel de la pratique de la GCR :

  • GCR traditionnelLa grande majorité des projets RAG aujourd'hui sont essentiellement des flux de travail, c'est-à-dire des systèmes qui orchestrent les LLM et les outils à travers des chemins de code prédéfinis. Ce flux de travail artificiellement prédéfini et "écrit à mort" se compose de nombreuses parties interdépendantes mais fragiles telles que le routage, le découpage, le réordonnancement, l'interprétation des requêtes, l'expansion des requêtes, la contextualisation des sources et l'ingénierie de la recherche.
    • inconvénientsLes résultats de l'étude sont les suivants : il est difficile de couvrir tous les cas de figure dans un flux de travail orchestré par l'être humain. L'effet est plus limité, en particulier dans les scénarios complexes qui nécessitent plusieurs cycles de recherche.
  • RAG agentiqueRationaliser le processus grâce à une approche de bout en bout. Il suffit d'équiper le modèle d'un outil API pour la recherche en réseau (dans le cas du présent document, l'utilisation de l'outil Tavily API, avec un certain nombre de crédits gratuits), le reste du travail est effectué par le modèle lui-même, y compris, mais sans s'y limiter :
    • Intention de comprendre (juger si la mise en réseau est nécessaire)
    • Réécrire ou scinder la question
    • appel d'interface
    • Chorégraphie du processus (y compris l'opportunité et la manière d'effectuer des recherches en plusieurs étapes)
    • citer qqch. comme source de qqch.
    • ...

En termes simples, le concept de base du RAG agentique est le suivant :Moins de structure, plus d'intelligence, Less is More.

précisément comme Anthropique Définition du modèle d'agent : à l'instar de la recherche en profondeur, les agents doivent exécuter la tâche cible en interne et ils "dirigent dynamiquement leurs propres processus et l'utilisation d'outils pour contrôler la manière dont la tâche est accomplie".

Processus global

La figure suivante illustre le flux global du système Agentic RAG :

[转载]QwQ-32B 的工具调用能力及 Agentic RAG 应用
  1. Adapter les questions des utilisateurs aux modèles de mots.
  2. Appelle le modèle pour générer un nouveau jeton. Si le processus de génération n'aboutit pas à un jeton <tool_call> ... </tool_call>et le résultat est directement édité.
  3. En cas de <tool_call> ... </tool_call>indique que le modèle a lancé une demande d'appel d'outil au cours du processus d'inférence. L'analyse de cette demande, l'exécution de web_searchet enveloppe les résultats de l'appel à l'interface dans le fichier <tool_response> ... </tool_response> et de les intégrer dans le contexte du macromodèle, puis de les redemander pour la génération du macromodèle.
  4. Répétez les étapes ci-dessus jusqu'à ce qu'il n'y ait plus de <tool_call>(ou la limite de la demande est atteinte) ou la présence de <|im_end|>.

Le processus est essentiellement le même que celui décrit dans le document Search-R1 :

[转载]QwQ-32B 的工具调用能力及 Agentic RAG 应用

Points techniques clés

  • Modèles de mots clés: :
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}"""
  • Panneaux d'arrêt personnalisés: :

    Lorsqu'il est détecté que le modèle a déclenché un processus de génération autorégressif au cours de la phase d'évaluation de la qualité de l'eau. <tool_call>(.*?)</tool_call>\s*$ La génération s'arrête après le format (correspondance d'expressions régulières) :

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 recherche sur le web: :

    L'API de recherche utilisée dans cette pratique est l'API Tavily, qui offre un certain nombre de crédits gratuits pour faciliter l'expérimentation et la reproduction. L'API Tavily permet aux développeurs d'intégrer la fonctionnalité de recherche sur le web dans leurs applications par de simples appels d'API.

Code de pratique

Pour un code de pratique détaillé, veuillez vous référer au lien suivant :

Chapitre sur la réplication de DeepSearch : un premier regard sur la fonction ToolCall de QwQ-32B, avec l'exemple d'Agentic RAG.ipynb

Cas de test

Questions relatives aux essais: Veuillez me donner plus d'informations sur le modèle QwQ-32B récemment publié en open source par Ali.

Générer des résultats(voir le carnet de notes pour les résultats complets)

[转载]QwQ-32B 的工具调用能力及 Agentic RAG 应用[转载]QwQ-32B 的工具调用能力及 Agentic RAG 应用[转载]QwQ-32B 的工具调用能力及 Agentic RAG 应用

Comme le montrent les résultats, le modèle d'inférence effectue de manière autonome la compréhension de l'intention (en déterminant si une recherche en réseau est nécessaire) et la génération de mots-clés de recherche (réécriture ou fractionnement des questions). Le modèle prend également en compte les scénarios potentiels de recherche à plusieurs tours. Après avoir déclenché une web search Ensuite, le modèle génère un rapport final basé sur les résultats de la recherche.

Dans ce cas, le modèle n'a effectué qu'un seul appel à l'interface de recherche. Cela peut être dû à la simplicité du problème ou au fait que le modèle de base n'est pas encore suffisamment capable de déclencher des recherches complexes à plusieurs tours. Cela montre également que pour utiliser pleinement le potentiel du modèle en tant qu'organe intelligent, il est encore nécessaire de se référer à Search-R1 pour un entraînement ultérieur et un ajustement ciblé.

Cependant, d'après les capacités déjà démontrées par le modèle QwQ-32B, la combinaison de données de recyclage synthétiques (ou triées manuellement) bien conçues, d'une formation de renforcement ou d'un SFT dans des scénarios segmentés, et le masquage de la sortie renvoyée par la réponse de l'interface de l'outil, pourraient permettre d'améliorer la qualité de la formation. jeton Cette voie de recyclage devrait devenir le courant dominant du développement et du déploiement futurs du renseignement, car les pertes correspondantes peuvent être prises en compte à l'avance pour une variété d'actions et de cas limites, ce qui simplifie le déploiement et élimine la nécessité d'une orchestration humaine du flux de travail de conception. La section 3.1 du document Search-R1 décrit en détail le "Loss Masking for Retrieved" (masquage des pertes pour les données récupérées) et les "Loss Masking for Retrieved" (masquage des pertes pour les données récupérées), ainsi que les "Loss Masking for Retrieved" (masquage des pertes pour les données récupérées). Jetons"Technologie. Grâce à l'utilisation de l'OPP et de l GRPO dans lequel les jetons récupérés sont masqués, Search-R1 optimise le LLM pour générer des jetons, améliorant ainsi la capacité du modèle à interagir avec les moteurs de recherche et à effectuer de l'inférence.

En outre, Search-R1 prend en charge la recherche et l'inférence à plusieurs tours (section 3.2 "Text Generation with Interleaved Multi-turn Search Engine Call" dans la thèse) par l'intermédiaire de la fonction <search> répondre en chantant </search> et place le contenu récupéré dans le fichier <information> répondre en chantant </information> entre les deux. La sortie de la réponse finale, quant à elle, utilise la fonction <answer> répondre en chantant </answer>.

© déclaration de droits d'auteur

Postes connexes

Pas de commentaires

Vous devez être connecté pour participer aux commentaires !
S'inscrire maintenant
aucun
Pas de commentaires...