中文 | Inglés
Qwen-Agent es un marco para desarrollar aplicaciones LLM basadas en el seguimiento de instrucciones, el uso de herramientas, la planificación y las capacidades de memoria de Qwen. También viene con aplicaciones de ejemplo como Browser Assistant, Code Interpreter y Custom Assistant.
18 de septiembre de 2024: Se agregó la demostración de Qwen2.5-Math para mostrar las capacidades de razonamiento integrado en herramientas de Qwen2.5-Math. Nota: El ejecutor de Python no está protegido y está destinado únicamente a pruebas locales, no a uso de producción.
Instale la versión estable de PyPI:
pip install -U "qwen-agent[gui,rag,code_interpreter,python_executor]"# O use `pip install -U qwen-agent` para los requisitos mínimos.# Los requisitos opcionales, especificados entre paréntesis dobles, son:# [gui ] para compatibilidad con GUI basada en Gradio;# [rag] para compatibilidad con RAG;# [code_interpreter] para compatibilidad con intérprete de código;# [python_executor] para razonamiento integrado en herramientas con Qwen2.5-Math.
Alternativamente, puedes instalar la última versión de desarrollo desde la fuente:
clon de git https://github.com/QwenLM/Qwen-Agent.gitcd Qwen-Agent pip install -e ./"[gui,rag,code_interpreter,python_executor]"# O `pip install -e ./` para requisitos mínimos.
Puede utilizar el servicio de modelo proporcionado por DashScope de Alibaba Cloud o implementar y utilizar su propio servicio de modelo utilizando los modelos Qwen de código abierto.
Si elige utilizar el servicio modelo ofrecido por DashScope, asegúrese de configurar la variable de entorno DASHSCOPE_API_KEY
en su clave API única de DashScope.
Alternativamente, si prefiere implementar y utilizar su propio servicio modelo, siga las instrucciones proporcionadas en el archivo README de Qwen2 para implementar un servicio API compatible con OpenAI. Específicamente, consulte la sección vLLM para la implementación de GPU de alto rendimiento o la sección de Ollama para la implementación de CPU local (+GPU).
Qwen-Agent ofrece componentes atómicos, como LLM (que heredan de class BaseChatModel
y vienen con llamadas a funciones) y Herramientas (que heredan de class BaseTool
), junto con componentes de alto nivel como Agentes (derivados de class Agent
).
El siguiente ejemplo ilustra el proceso de creación de un agente capaz de leer archivos PDF y utilizar herramientas, además de incorporar una herramienta personalizada:
import pprintimport urllib.parseimport json5from qwen_agent.agents import Assistantfrom qwen_agent.tools.base import BaseTool, Register_tool# Paso 1 (opcional): agregue una herramienta personalizada llamada `my_image_gen`.@register_tool('my_image_gen')class MyImageGen(BaseTool):# La `descripción` le dice al agente la funcionalidad de esta herramienta.description = 'Servicio de pintura AI (generación de imágenes), ingresa una descripción de texto y devuelve la URL de la imagen dibujada en base a información de texto.'# Los `parámetros` le dicen al agente qué entrada parámetros que tiene la herramienta.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:# `params` son los argumentos generados por el LLM agent.prompt = json5.loads(params)['prompt']prompt = urllib.parse.quote( mensaje) devolver json5.dumps ( {'image_url': f'https://image.pollinations.ai/prompt/{prompt}'},ensure_ascii=False)# Paso 2: Configure el LLM que está utilizando.llm_cfg = {# Utilice el servicio modelo proporcionado por DashScope:'model': 'qwen-max','model_server': 'dashscope',# 'api_key': 'YOUR_DASHSCOPE_API_KEY',# Utilizará la variable de entorno `DASHSCOPE_API_KEY' si 'api_key' no está configurada aquí.# Usar un servicio modelo compatible con la API OpenAI, como vLLM u Ollama:# 'model': 'Qwen2-7B-Chat',# 'model_server': 'http://localhost:8000/v1', # base_url, también conocido as api_base# 'api_key': 'EMPTY',# (Opcional) Hiperparámetros LLM para generación:'generate_cfg': {'top_p': 0.8} }# Paso 3: Crear un agente. Aquí usamos el agente `Asistente` como ejemplo, que es capaz de usar herramientas y leer archivos.system_instruction = '''Eres un asistente útil. Después de recibir la solicitud del usuario, debes:- primero dibujar una imagen y obtener 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 proporcionado para procesar la imagen. Muestre la imagen usando `plt.show()`. ''tools = ['my_image_gen', 'code_interpreter'] # `code_interpreter` es una herramienta incorporada para ejecutar code.files = ['./examples/resource/doc.pdf'] # Dale al bot un archivo PDF para read.bot = Assistant(llm=llm_cfg,system_message=system_instruction,function_list=tools,files=files)# Paso 4: Ejecute el agente como chatbot.messages = [] # Esto almacena el historial de chat. Mientras que es Verdadero:# Por ejemplo , ingrese la consulta "dibuja un perro y gírelo 90 grados". query = input('user query: ')# Agregue la consulta del usuario al historial de chat.messages.append({'role': 'user', 'content ': consulta})respuesta = []para respuesta en bot.run(messages=messages):# Streaming output.print('bot Response:')pprint.pprint(response, indent=2)# Agregue las respuestas del bot al historial de chat.mensajes.extender(respuesta)
Además de utilizar implementaciones de agentes integradas, como class Assistant
, también puede desarrollar su propia implementación de agentes heredando de class Agent
. Consulte el directorio de ejemplos para obtener más ejemplos de uso.
Sí. Las clases de LLM proporcionan llamadas a funciones. Además, algunas clases de Agente también se basan en la capacidad de llamada a funciones, por ejemplo, FnCallAgent y ReActChat.
Hemos lanzado una solución RAG rápida, así como un agente costoso pero competitivo, para responder preguntas sobre documentos muy largos. Han logrado superar a los modelos nativos de contexto largo en dos puntos de referencia desafiantes, al mismo tiempo que son más eficientes y funcionan perfectamente en la prueba de presión de una sola aguja "aguja en el pajar" que involucra contextos de 1 millón de tokens. Consulte el blog para obtener detalles técnicos.
BrowserQwen es un asistente de navegador creado sobre Qwen-Agent. Consulte su documentación para obtener más detalles.
El intérprete de código no está protegido y ejecuta código en su propio entorno. No le pida a Qwen que realice tareas peligrosas y no utilice directamente el intérprete de código con fines de producción.