Home
Login

Framework de desarrollo de agentes inteligentes basado en el modelo Qwen, que admite llamadas a funciones, intérprete de código, RAG y extensión de navegador.

Apache-2.0Python 9.7kQwenLMQwen-Agent Last Updated: 2025-06-18

Introducción Detallada al Proyecto Qwen-Agent

Resumen del Proyecto

Qwen-Agent es un marco de desarrollo de agentes inteligentes basado en el modelo de lenguaje grande Qwen, especializado en el desarrollo de aplicaciones LLM con capacidades de seguimiento de instrucciones, uso de herramientas, planificación y memoria. Este proyecto es desarrollado y mantenido por el equipo de Alibaba Qwen, y actualmente sirve como soporte backend para el servicio de chat Qwen (Qwen Chat).

Características Principales

1. Soporte para Agentes Inteligentes Multifuncionales

  • Asistente de Navegador (Browser Assistant): Capacidad de navegación y operación web
  • Intérprete de Código (Code Interpreter): Ejecución y análisis de código Python
  • Asistente Personalizado (Custom Assistant): Personalización de agentes inteligentes
  • Aumento de Recuperación RAG: Preguntas y respuestas sobre documentos y recuperación de conocimiento
  • Extensión de Chrome: Asistente inteligente en forma de complemento de navegador

2. Integración de Tecnología Avanzada

  • Llamada a Funciones (Function Calling): Soporte para la integración de herramientas y API
  • Soporte del Protocolo MCP: Compatibilidad con el protocolo de contexto del modelo
  • Llamada a Herramientas Paralelas: Uso de herramientas en múltiples pasos y rondas
  • Capacidad de Razonamiento: Integración de modelos de razonamiento como QwQ-32B

Últimas Actualizaciones

  • 18 de marzo de 2025: Soporte para el campo reasoning_content, ajuste de la plantilla de llamada a funciones predeterminada
  • 7 de marzo de 2025: Se agregó la demostración de llamada a herramientas QwQ-32B, soporte para llamadas paralelas y de múltiples pasos
  • 3 de diciembre de 2024: Actualización de la GUI a Gradio 5, requiere Python 3.10+
  • 18 de septiembre de 2024: Se agregó la demostración Qwen2.5-Math, que muestra la capacidad de razonamiento de la integración de herramientas

Instalación

Instalación de la Versión Estable

pip install -U "qwen-agent[gui,rag,code_interpreter,mcp]"
# O instalación mínima
pip install -U qwen-agent

Instalación de la Versión de Desarrollo

git clone https://github.com/QwenLM/Qwen-Agent.git
cd Qwen-Agent
pip install -e ./"[gui,rag,code_interpreter,mcp]"

Explicación de Dependencias Opcionales

  • [gui]: Soporte de interfaz gráfica Gradio
  • [rag]: Funcionalidad de aumento de recuperación RAG
  • [code_interpreter]: Funcionalidad de intérprete de código
  • [mcp]: Soporte del protocolo MCP

Configuración del Servicio de Modelos

Opción 1: Usar el Servicio DashScope

llm_cfg = {
    'model': 'qwen-max-latest',
    'model_server': 'dashscope',
    # 'api_key': 'YOUR_DASHSCOPE_API_KEY',
    'generate_cfg': {
        'top_p': 0.8
    }
}

Opción 2: Servicio de Modelos Autodesplegado

llm_cfg = {
    'model': 'Qwen2.5-7B-Instruct',
    'model_server': 'http://localhost:8000/v1',
    'api_key': 'EMPTY',
}

Arquitectura de Componentes Centrales

Componentes Básicos

  • BaseChatModel: Clase base LLM, soporta la llamada a funciones
  • BaseTool: Clase base de herramientas, extensible para funciones personalizadas
  • Agent: Clase base de agente inteligente, soporta la personalización por herencia

Componentes Avanzados

  • Assistant: Agente inteligente asistente universal
  • FnCallAgent: Agente inteligente de llamada a funciones
  • ReActChat: Agente inteligente de diálogo de razonamiento y acción

Ejemplos de Aplicación Práctica

Crear un Agente Inteligente de Herramientas Personalizadas

import pprint
import urllib.parse
import json5
from qwen_agent.agents import Assistant
from qwen_agent.tools.base import BaseTool, register_tool
from qwen_agent.utils.output_beautify import typewriter_print

# Paso 1: Agregar una herramienta personalizada
@register_tool('my_image_gen')
class MyImageGen(BaseTool):
    description = 'Servicio de pintura AI (generación de imágenes), ingrese la descripción del texto y devuelva la URL de la imagen dibujada en función de la información del texto.'
    parameters = [{
        'name': 'prompt',
        'type': 'string',
        'description': 'Descripción detallada del contenido de la imagen deseada, en inglés',
        'required': True
    }]
    
    def call(self, params: str, **kwargs) -> str:
        prompt = json5.loads(params)['prompt']
        prompt = urllib.parse.quote(prompt)
        return json5.dumps(
            {'image_url': f'https://image.pollinations.ai/prompt/{prompt}'},
            ensure_ascii=False)

# Paso 2: Configurar LLM
llm_cfg = {
    'model': 'qwen-max-latest',
    'model_server': 'dashscope',
    'generate_cfg': {
        'top_p': 0.8
    }
}

# Paso 3: Crear el agente inteligente
system_instruction = '''Después de recibir la solicitud del usuario, debe:
- primero dibuje una imagen y obtenga la URL de la imagen,
- luego ejecute el código `request.get(image_url)` para descargar la imagen,
- y finalmente seleccione una operación de imagen del documento dado para procesar la imagen.
Muestre la imagen usando `plt.show()`.'''

tools = ['my_image_gen', 'code_interpreter']
files = ['./examples/resource/doc.pdf']
bot = Assistant(llm=llm_cfg,
                system_message=system_instruction,
                function_list=tools,
                files=files)

# Paso 4: Ejecutar el chat del agente inteligente
messages = []
while True:
    query = input('\nuser query: ')
    messages.append({'role': 'user', 'content': query})
    response = []
    response_plain_text = ''
    print('bot response:')
    for response in bot.run(messages=messages):
        response_plain_text = typewriter_print(response, response_plain_text)
    messages.extend(response)

Iniciar la Interfaz de Usuario Web

from qwen_agent.gui import WebUI
WebUI(bot).run()

Integración del Protocolo MCP

Ejemplo de Configuración del Servidor MCP

{
  "mcpServers": {
    "memory": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-memory"]
    },
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/files"]
    },
    "sqlite": {
      "command": "uvx",
      "args": [
        "mcp-server-sqlite",
        "--db-path",
        "test.db"
      ]
    }
  }
}

Requisitos del Entorno de Dependencia

  • Node.js (última versión)
  • uv 0.4.18 o superior
  • Git
  • SQLite

Capacidad de Preguntas y Respuestas sobre Documentos RAG

El proyecto proporciona una solución RAG rápida, así como un agente inteligente competitivo para documentos súper largos, que supera a los modelos de contexto de crecimiento nativo en dos pruebas de referencia desafiantes y funciona perfectamente en una prueba de estrés de "búsqueda de aguja en un pajar" de un solo disparo que involucra un contexto de 1 millón de tokens.

Asistente de Navegador BrowserQwen

BrowserQwen es un asistente de navegador construido sobre Qwen-Agent, que proporciona capacidades de navegación web, operación y extracción de información.

Características y Ventajas Técnicas

  1. Diseño Modular: Componentes de nivel atómico, fáciles de expandir y personalizar
  2. Soporte Multimodelo: Compatible con varias versiones de la serie Qwen
  3. Rico Ecosistema de Herramientas: Múltiples herramientas prácticas incorporadas
  4. Implementación Flexible: Soporta servicios en la nube e implementación local
  5. Mantenimiento Activo: Actualizaciones continuas y mejoras de funciones

Enlaces a Recursos Relacionados

Resumen

Qwen-Agent es un marco de desarrollo de agentes inteligentes potente y fácil de usar, que proporciona a los desarrolladores una cadena de herramientas completa para construir aplicaciones LLM complejas. Ya sea un simple chatbot o un asistente inteligente multifuncional complejo, se puede implementar y desplegar rápidamente a través de este marco.

Star History Chart