Home
Login

Ein intelligentes Agenten-Entwicklungsframework basierend auf dem Qwen-Modell, das Funktionsaufrufe, Code-Interpreter, RAG und Browser-Erweiterungen unterstützt.

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

Qwen-Agent Projekt – Detaillierte Vorstellung

Projektübersicht

Qwen-Agent ist ein auf dem Qwen-Sprachmodell basierendes Framework zur Entwicklung von intelligenten Agenten, das speziell für die Entwicklung von LLM-Anwendungen mit Fähigkeiten zur Befolgung von Anweisungen, Werkzeugnutzung, Planung und Gedächtnis entwickelt wurde. Das Projekt wird vom Alibaba Qwen-Team entwickelt und gewartet und dient derzeit als Backend-Unterstützung für den Qwen Chat-Service.

Kernfunktionen

1. Unterstützung für multifunktionale Agenten

  • Browser-Assistent (Browser Assistant): Web-Browsing- und Bedienungsfähigkeiten
  • Code-Interpreter (Code Interpreter): Ausführung und Analyse von Python-Code
  • Benutzerdefinierter Assistent (Custom Assistant): Personalisierte Anpassung von intelligenten Agenten
  • RAG-Retrieval-Augmentation: Dokumenten-Fragen und Wissensabruf
  • Chrome-Erweiterung: Intelligenter Assistent in Form eines Browser-Plugins

2. Integration fortschrittlicher Technologien

  • Funktionsaufruf (Function Calling): Unterstützung für Werkzeug- und API-Integration
  • MCP-Protokollunterstützung: Kompatibilität mit dem Modellkontextprotokoll
  • Parallele Werkzeugaufrufe: Mehrschrittige, mehrrundige Werkzeugnutzung
  • Inferenzfähigkeit: Integration von Inferenzmodellen wie QwQ-32B

Neueste Aktualisierungen

  • 18. März 2025: Unterstützung des Feldes reasoning_content, Anpassung der Standardvorlage für Funktionsaufrufe
  • 7. März 2025: Hinzufügung einer QwQ-32B-Werkzeugaufruf-Demo, Unterstützung für parallele und mehrschrittige Aufrufe
  • 3. Dezember 2024: Upgrade der GUI auf Gradio 5, erfordert Python 3.10+
  • 18. September 2024: Hinzufügung einer Qwen2.5-Math-Demo, die die Inferenzfähigkeit der Werkzeugintegration demonstriert

Installationsmethoden

Installation der stabilen Version

pip install -U "qwen-agent[gui,rag,code_interpreter,mcp]"
# Oder minimale Installation
pip install -U qwen-agent

Installation der Entwicklungsversion

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

Optionale Abhängigkeitserklärung

  • [gui]: Gradio-Unterstützung für die grafische Benutzeroberfläche
  • [rag]: RAG-Retrieval-Augmentation-Funktion
  • [code_interpreter]: Code-Interpreter-Funktion
  • [mcp]: MCP-Protokollunterstützung

Modellservice-Konfiguration

Methode 1: Verwendung des DashScope-Dienstes

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

Methode 2: Selbst gehosteter Modellservice

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

Kernkomponentenarchitektur

Basiskomponenten

  • BaseChatModel: LLM-Basisklasse, unterstützt Funktionsaufrufe
  • BaseTool: Werkzeugbasisklasse, erweiterbar für benutzerdefinierte Funktionen
  • Agent: Intelligente Agenten-Basisklasse, unterstützt Vererbung und Anpassung

Erweiterte Komponenten

  • Assistant: Universeller Assistenten-Agent
  • FnCallAgent: Funktionsaufruf-Agent
  • ReActChat: Inferenz-Aktions-Dialog-Agent

Beispiele für tatsächliche Anwendungen

Erstellung eines benutzerdefinierten Werkzeug-Agenten

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

# Schritt 1: Hinzufügen eines benutzerdefinierten Werkzeugs
@register_tool('my_image_gen')
class MyImageGen(BaseTool):
    description = 'KI-Malerei (Bildgenerierung), Eingabe einer Textbeschreibung und Rückgabe der auf Textinformationen basierenden Bild-URL.'
    parameters = [{
        'name': 'prompt',
        'type': 'string',
        'description': 'Detaillierte Beschreibung des gewünschten Bildinhalts, auf Englisch',
        '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)

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

# Schritt 3: Erstellung des Agenten
system_instruction = '''Nach Erhalt der Anfrage des Benutzers sollten Sie:
- zuerst ein Bild zeichnen und die Bild-URL erhalten,
- dann Code `request.get(image_url)` ausführen, um das Bild herunterzuladen,
- und schließlich eine Bildoperation aus dem gegebenen Dokument auswählen, um das Bild zu verarbeiten.
Bitte zeigen Sie das Bild mit `plt.show()` an.'''

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)

# Schritt 4: Ausführen des Agenten-Chats
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)

Starten der Web-UI-Oberfläche

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

MCP-Protokollintegration

Beispiel für die MCP-Serverkonfiguration

{
  "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"
      ]
    }
  }
}

Anforderungen an die Abhängigkeitsumgebung

  • Node.js (neueste Version)
  • uv 0.4.18 oder höher
  • Git
  • SQLite

RAG-Dokumenten-Fragen-Funktion

Das Projekt bietet eine schnelle RAG-Lösung sowie einen wettbewerbsfähigen Agenten für ultralange Dokumente, der in zwei anspruchsvollen Benchmarks besser abschneidet als native Long-Context-Modelle und in einem Single-Shot-"Nadel im Heuhaufen"-Stresstest mit 1 Million Token Kontext perfekt abschneidet.

BrowserQwen Browser-Assistent

BrowserQwen ist ein auf Qwen-Agent basierender Browser-Assistent, der Web-Browsing-, Bedienungs- und Informationsextraktionsfunktionen bietet.

Technische Merkmale und Vorteile

  1. Modulares Design: Atomare Komponenten, einfach zu erweitern und anzupassen
  2. Unterstützung mehrerer Modelle: Kompatibel mit verschiedenen Versionen der Qwen-Serie
  3. Reichhaltiges Werkzeug-Ökosystem: Integrierte verschiedene praktische Werkzeuge
  4. Flexible Bereitstellung: Unterstützung für Cloud-Dienste und lokale Bereitstellung
  5. Aktive Wartung: Kontinuierliche Aktualisierungen und Funktionserweiterungen

Links zu relevanten Ressourcen

Zusammenfassung

Qwen-Agent ist ein leistungsstarkes und einfach zu bedienendes Framework zur Entwicklung von intelligenten Agenten, das Entwicklern eine vollständige Toolchain zum Erstellen komplexer LLM-Anwendungen bietet. Ob einfacher Chatbot oder komplexer multifunktionaler intelligenter Assistent, er kann mit diesem Framework schnell implementiert und bereitgestellt werden.

Star History Chart