中文 | Anglais
Qwen-Agent est un framework pour développer des applications LLM basé sur le suivi des instructions, l'utilisation des outils, la planification et les capacités de mémoire de Qwen. Il est également livré avec des exemples d'applications telles que Browser Assistant, Code Interpreter et Custom Assistant.
18 septembre 2024 : ajout de la démo Qwen2.5-Math pour présenter les capacités de raisonnement intégrées aux outils de Qwen2.5-Math. Remarque : L'exécuteur Python n'est pas en mode bac à sable et est destiné uniquement aux tests locaux, et non à une utilisation en production.
Installez la version stable depuis PyPI :
pip install -U "qwen-agent[gui,rag,code_interpreter,python_executor]"# Ou utilisez `pip install -U qwen-agent` pour les exigences minimales.# Les exigences facultatives, spécifiées entre doubles crochets, sont :# [gui ] pour la prise en charge de l'interface graphique basée sur Gradio ;# [rag] pour la prise en charge de RAG ;# [code_interpreter] pour la prise en charge de l'interprète de code ;# [python_executor] pour le raisonnement intégré aux outils avec Qwen2.5-Math.
Alternativement, vous pouvez installer la dernière version de développement à partir de la source :
git clone https://github.com/QwenLM/Qwen-Agent.gitcd Qwen-Agent pip install -e ./"[gui,rag,code_interpreter,python_executor]"# Ou `pip install -e ./` pour des exigences minimales.
Vous pouvez soit utiliser le service de modèle fourni par DashScope d'Alibaba Cloud, soit déployer et utiliser votre propre service de modèle à l'aide des modèles Qwen open source.
Si vous choisissez d'utiliser le service de modèle proposé par DashScope, assurez-vous de définir la variable d'environnement DASHSCOPE_API_KEY
sur votre clé API DashScope unique.
Alternativement, si vous préférez déployer et utiliser votre propre service de modèle, veuillez suivre les instructions fournies dans le README de Qwen2 pour déployer un service API compatible OpenAI. Plus précisément, consultez la section vLLM pour le déploiement de GPU à haut débit ou la section Ollama pour le déploiement de CPU local (+GPU).
Qwen-Agent propose des composants atomiques, tels que les LLM (qui héritent de class BaseChatModel
et sont livrés avec des appels de fonction) et Tools (qui héritent de class BaseTool
), ainsi que des composants de haut niveau comme Agents (dérivés de class Agent
).
L'exemple suivant illustre le processus de création d'un agent capable de lire des fichiers PDF et d'utiliser des outils, ainsi que d'incorporer un outil personnalisé :
import pprintimport urllib.parseimport json5from qwen_agent.agents import Assistantfrom qwen_agent.tools.base import BaseTool, register_tool# Étape 1 (Facultatif) : Ajoutez un outil personnalisé nommé `my_image_gen`.@register_tool('my_image_gen')class MyImageGen(BaseTool) :# La « description » indique à l'agent la fonctionnalité de cet outil. paramètres de l'outil has.parameters = [{'name': 'prompt','type': 'string','description': 'Description détaillée du contenu de l'image souhaitée, en anglais','required': True}]def call(self, params: str, **kwargs) -> str:# `params` sont les arguments générés par le LLM agent.prompt = json5.loads(params)['prompt']prompt = urllib.parse.quote( invite)retourner json5.dumps( {'image_url': f'https://image.pollinations.ai/prompt/{prompt}'},ensure_ascii=False)# Étape 2 : Configurez le LLM que vous utilisez.llm_cfg = {# Utilisez le service de modèle fourni par DashScope:'model': 'qwen-max','model_server': 'dashscope',# 'api_key': 'YOUR_DASHSCOPE_API_KEY',# Il utilisera la variable d'environnement `DASHSCOPE_API_KEY' si 'api_key' n'est pas défini ici.# Utiliser un service de modèle compatible avec l'API OpenAI, tel que vLLM ou Ollama :# 'model' : 'Qwen2-7B-Chat',# 'model_server' : 'http://localhost:8000/v1', # base_url, également connu as api_base# 'api_key' : 'EMPTY',# (Facultatif) Hyperparamètres LLM pour la génération : 'generate_cfg' : {'top_p' : 0.8} }# Étape 3 : Créez un agent. Ici, nous utilisons comme exemple l'agent `Assistant`, qui est capable d'utiliser des outils et de lire des fichiers.system_instruction = '''Vous êtes un assistant utile. Après avoir reçu la demande de l'utilisateur, vous devez : - d'abord dessiner une image et obtenir le url de l'image,- puis exécutez le code `request.get(image_url)` pour télécharger l'image,- et enfin sélectionnez une opération d'image à partir du document donné pour traiter l'image. Veuillez afficher l'image en utilisant `plt.show()`.' ''tools = ['my_image_gen', 'code_interpreter'] # `code_interpreter` est un outil intégré pour exécuter code.files = ['./examples/resource/doc.pdf'] # Donnez au bot un fichier PDF à read.bot = Assistant(llm=llm_cfg,system_message=system_instruction,function_list=tools,files=files)# Étape 4 : Exécutez l'agent en tant que chatbot.messages = [] # Ceci stocke l'historique des discussions. while True :# Par exemple , saisissez la requête "dessine un chien et faites-le pivoter de 90 degrés".query = input('user query: ')# Ajouter la requête de l'utilisateur au chat history.messages.append({'role': 'user', 'content ': query})response = []pour la réponse dans bot.run(messages=messages):# Streaming output.print('bot réponse:')pprint.pprint(response, indent=2)# Ajouter les réponses du bot au historique du chat.messages.extend(réponse)
En plus d'utiliser des implémentations d'agent intégrées telles que class Assistant
, vous pouvez également développer votre propre implémentation d'agent en héritant de class Agent
. Veuillez vous référer au répertoire d'exemples pour plus d'exemples d'utilisation.
Oui. Les classes LLM fournissent des appels de fonctions. De plus, certaines classes d'agent sont également construites sur la capacité d'appel de fonction, par exemple FnCallAgent et ReActChat.
Nous avons lancé une solution RAG rapide, ainsi qu'un agent coûteux mais compétitif, permettant de répondre à des questions sur des documents très longs. Ils ont réussi à surpasser les modèles natifs à contexte long sur deux tests de référence difficiles tout en étant plus efficaces, et à fonctionner parfaitement dans le test de pression à aiguille unique « aiguille dans la botte de foin » impliquant des contextes de 1 million de jetons. Voir le blog pour les détails techniques.
BrowserQwen est un assistant de navigateur basé sur Qwen-Agent. Veuillez vous référer à sa documentation pour plus de détails.
L'interpréteur de code n'est pas en bac à sable et il exécute le code dans votre propre environnement. Veuillez ne pas demander à Qwen d'effectuer des tâches dangereuses et n'utilisez pas directement l'interpréteur de code à des fins de production.