Entfesseln Sie autonome Agenten mit den besten Open-Source-Modellen von Qwen-Agent

Entdecken Sie die Kraft der Open-Source-Modelle von Qwen-Agent und erfahren Sie, wie Sie autonome Agenten durch Funktionsaufrufe und benutzerdefinierte Agentenerstellung freisetzen können. Entdecken Sie die Auswirkungen der Quantisierung auf die Modellleistung für Anwendungen in der realen Welt.

24. Februar 2025

party-gif

Erschließen Sie die Kraft autonomer Agenten mit Qwen-Agent, dem hochmodernen Open-Source-Framework, das die besten verfügbaren Open-Weight-Modelle nutzt. Entdecken Sie, wie Sie Funktionsaufrufe und agentenbasierte Workflows nahtlos integrieren können, um intelligente Anwendungen zu entwickeln, die mit der realen Welt interagieren und sich an die Bedürfnisse der Nutzer anpassen können.

Bauen Sie autonome Agenten mit dem besten offenen Gewichtsmodell

Die Quen 2-Modelle von Alibaba sind die neuesten und besten Open-Source-Sprachmodelle, die beeindruckende Fähigkeiten in einer Vielzahl von Aufgaben bieten. Diese Modelle reichen von 500 Millionen bis 72 Milliarden Parametern, wobei die größeren Modelle bis zu 128.000 Token unterstützen - eine erhebliche Verbesserung gegenüber der 8.000-Token-Grenze von GPT-3.

Ein Schlüsselmerkmal von Quen 2 ist seine starke Leistung bei Programmierung und Mathematik sowie seine Fähigkeit, langes Kontextverständnis zu handhaben - entscheidend für Anwendungen in der realen Welt. Darüber hinaus bieten die Modelle Unterstützung für eine Vielzahl von Sprachen, einschließlich eines Schwerpunkts auf den Sprachen des Nahen Ostens und Südostasiens, was eine willkommene Abkehr von der westlich ausgerichteten Fokussierung vieler anderer Modelle ist.

Um die Leistungsfähigkeit von Quen 2 zu nutzen, können wir das Quen Agent-Framework verwenden, das Zugriff auf einen integrierten Browser-Assistenten, einen Code-Interpreter und die Möglichkeit, benutzerdefinierte Assistenten zu erstellen, bietet. Dies ermöglicht es uns, autonome Agenten zu erstellen, die ihre Aktionen basierend auf der jeweiligen Aufgabe planen, ausführen und anpassen können.

In diesem Abschnitt werden wir untersuchen, wie wir Quen Agent verwenden, um einen benutzerdefinierten Bildgenerierungs-Agenten zu erstellen. Der Agent wird in der Lage sein, Bilder basierend auf Benutzereingaben zu generieren, die generierten Bilder herunterzuladen und sogar seinen eigenen Code zu aktualisieren, wenn er auf Probleme stößt. Durch die Kombination des leistungsfähigen Sprachverständnisses von Quen 2 mit den Planungs- und Ausführungsfähigkeiten von Quen Agent können wir wirklich autonome und leistungsfähige Agenten schaffen, die eine Vielzahl von Aufgaben bewältigen können.

Funktionsaufruf und Agenten: Verständnis der Unterschiede

Funktionsaufrufe und Agenten sind zwei unterschiedliche Konzepte in der Welt der großen Sprachmodelle (LLMs). Hier ist eine prägnante Erklärung der Unterschiede zwischen den beiden:

Funktionsaufrufe (Werkzeugnutzung):

  • Funktionsaufrufe oder Werkzeugnutzung ermöglichen es dem LLM, mit der Außenwelt zu interagieren, indem es auf externe APIs oder Funktionen zugreift.
  • Das LLM bestimmt, welche Funktion es basierend auf der Benutzereingabe verwenden soll, generiert die erforderlichen Eingaben für die Funktion und gibt die Ergebnisse an den Benutzer zurück.
  • Das LLM selbst kann den Funktionsaufruf jedoch nicht ausführen; der Benutzer oder ein separates System muss den eigentlichen Funktionsaufruf durchführen und die Ergebnisse an das LLM zurückgeben.

Agenten:

  • Agenten sind sophistiziertere Instanzen von LLMs, die Zugriff auf eine Reihe von Werkzeugen haben, ähnlich wie bei Funktionsaufrufen.
  • Agenten können auch Planung durchführen, Aufgaben in Teilziele zerlegen und Aktionen unter Verwendung der verfügbaren Werkzeuge ausführen.
  • Agenten haben Zugriff auf sowohl Kurzzeit- als auch Langzeitspeicher, was es ihnen ermöglicht, ihren Fortschritt zu verfolgen und ihre nächsten Schritte entsprechend zu planen.
  • Agenten sind entscheidend, um LLMs für reale Anwendungen wirklich nützlich zu machen, da sie komplexe Aufgaben autonom ausführen können.

Zusammengefasst ist Funktionsaufruf eine begrenztere Interaktion, bei der das LLM nur die erforderlichen Eingaben für eine Funktion generieren kann, während Agenten die Fähigkeit haben, ihre Aktionen zu planen, auszuführen und an die gewünschten Ergebnisse anzupassen.

Einstieg in Qwen-Agenten: Funktionsaufruf und Agentennutzung

Um mit Qwen-Agenten zu beginnen, werden wir die 72-Milliarden-Version von Qwen 2 verwenden und sie lokal mit AMA ausführen. Sie können auch ihre externe API verwenden, aber um Qwen Agent zu nutzen, haben wir zwei Optionen:

  1. Installieren Sie das Paket über pip als unabhängiges Python-Paket.
  2. Klonen Sie das Repository und führen Sie die Installation lokal aus, wenn Sie die neueste Entwicklungsversion verwenden möchten.

Ich werde es lokal mit AMA ausführen. Starten Sie zunächst einen AMA-Server und verwenden Sie den Befehl olama Run Qwen 272 billion. Dadurch wird AMA und das Modell heruntergeladen, was je nach Ihrer Internetgeschwindigkeit einige Zeit in Anspruch nehmen kann.

Erstellen Sie als Nächstes eine virtuelle Umgebung mit conda und aktivieren Sie sie:

conda create -n qwen python=3.10
conda activate qwen

Installieren Sie nun das Qwen Agent-Paket über pip:

pip install qwen-agent

Wir beginnen mit Funktionsaufrufen. Das Modell muss die zu verwendende Funktion auswählen, die Eingaben ermitteln und sie an einen Python-Interpreter übergeben. Der Interpreter wird die Funktion ausführen, die Antwort erhalten und sie an das LLM zurückgeben.

Hier ist ein Beispiel für einen Funktionsaufruf zum Abrufen des aktuellen Wetters:

# Erstellen Sie die LLM-Instanz
llm = QwenLLM(base_api="http://localhost:8000/v1", model_name="qwen-2-72b", version="v1")

# Benutzernachricht
user_message = "Wie ist das aktuelle Wetter in Paris?"

# Definieren Sie die Funktion
function_call = {
    "description": "Rufen Sie das aktuelle Wetter für einen bestimmten Standort ab",
    "function": "get_weather",
    "arguments": {
        "location": "Paris",
        "unit": "celsius"
    }
}

# Rufen Sie das LLM auf und führen Sie die Funktion aus
response = llm.call_with_function(user_message, [function_call])
print(response)

Dies wird die aktuellen Wetterdaten für Paris generieren und sie an das LLM zurückgeben.

Lassen Sie uns nun ein Beispiel für die Verwendung von Qwen Agent betrachten. Wir werden einen benutzerdefinierten Agenten erstellen, der Bilder generieren und sie in einem lokalen Ordner herunterladen kann. Der Agent wird ein benutzerdefiniertes Werkzeug für die Bildgenerierung und den Code-Interpreter verwenden, um die erforderlichen Codes auszuführen.

from qwen_agent import Assistant, CodeInterpreter, CustomTool

# Definieren Sie das benutzerdefinierte Bildgenerierungs-Werkzeug
class MyImageGeneration(CustomTool):
    def __init__(self):
        self.description = "Generieren Sie Bilder basierend auf Benutzereingaben unter Verwendung der Pollinations.AI-API."

    def run(self, args):
        # Generieren Sie das Bild mit Hilfe der API
        image_url = generate_image(args["prompt"])
        
        # Laden Sie das Bild in einen lokalen Ordner herunter
        download_image(image_url, "images")

        return "Bild generiert und im 'images'-Ordner gespeichert."

# Erstellen Sie den Agenten
agent = Assistant(
    llm=QwenLLM(base_api="http://localhost:8000/v1", model_name="qwen-2-72b", version="v1"),
    tools=[MyImageGeneration(), CodeInterpreter()]
)

# Bitten Sie den Agenten, ein Bild zu generieren
agent.run("Erstellen Sie ein Bild von einem Lama mit Sonnenbrille.")

Dieser Agent wird das benutzerdefinierte Bildgenerierungs-Werkzeug verwenden, um das Bild zu erstellen, es in den "images"-Ordner herunterzuladen und das Ergebnis zurückzugeben.

Abschließend wollen wir uns die Auswirkungen der Quantisierung auf die Leistung der Qwen-Modelle ansehen. Das Qwen-Team hat detaillierte Bewertungen zu MML-, C-Evolve- und I-Evolve-Metriken für verschiedene Quantisierungsstufen bereitgestellt.

Die Ergebnisse zeigen, dass bei größeren Modellen (72 Milliarden) der Unterschied zwischen 16-Bit- und 8-Bit-Quantisierung nicht signifikant ist, aber 4-Bit-Quantisierung eine deutlichere Auswirkung auf die Leistung haben kann. Bei kleineren Modellen (0,5 Milliarden) sind die Unterschiede ausgeprägter, wobei 4-Bit-Quantisierung einen Rückgang von 5 Punkten im Durchschnittsergebnis zeigt.

Generell wird empfohlen, für Produktionsbereitstellungen mindestens 8-Bit- oder 16-Bit-Quantisierung zu verwenden, da 4-Bit-Quantisierung einen stärkeren Einfluss auf die Modellleistung haben kann, insbesondere bei kleineren Modellen.

Die Auswirkungen der Quantisierung auf die Leistung großer Sprachmodelle

In diesem Abschnitt werden wir die Auswirkungen der Quantisierung auf die Leistung von Sprachmodellen untersuchen, mit einem besonderen Fokus auf den Quin 2-Modellen.

Das Quin-Team hat die Frage der Quantisierungsauswirkungen in ihren aktualisierten Modellen behandelt. Sie haben die Leistung der Quin 2-Modelle mit verschiedenen Quantisierungsstufen, einschließlich Gleitkomma 16, 8-Bit, 4-Bit-Quantisierung und AWQ (Adaptive Weight Quantization), bewertet.

Basierend auf den durchschnittlichen Zahlen können die folgenden Trends beobachtet werden:

  1. Größere Modelle: Bei dem größeren 72-Milliarden-Parameter-Modell ist der Leistungsunterschied zwischen 16-Bit- und 8-Bit-Quantisierung nicht signifikant, wobei etwa 81% der ursprünglichen Leistung beibehalten werden. Die 4-Bit-Quantisierung zeigt jedoch einen deutlicheren Leistungsrückgang.

  2. Kleinere Modelle: Bei den kleineren Modellen, wie der 0,5-Milliarden-Parameter-Version, ist der Einfluss der Quantisierung dramatischer. Die 4-Bit-Quantisierung zeigt einen 5-Punkte-Unterschied im Durchschnittsergebnis im Vergleich zur ursprünglichen Gleitkomma-16-Version.

Die Schlussfolgerung ist, dass die Auswirkungen der Quantisierung bei kleineren Modellen stärker ausgeprägt sind, während die größeren Quin 2-Modelle auch mit 8-Bit-Quantisierung eine relativ hohe Leistung beibehalten können.

Bei der Bereitstellung dieser Modelle in der Produktion wird im Allgemeinen empfohlen, mindestens 8-Bit-Quantisierung und möglichst 16-Bit zu verwenden, um eine signifikante Leistungseinbuße, insbesondere bei den kleineren Modellvarianten, zu vermeiden.

Zusammengefasst hebt die Analyse des Quin-Teams die Bedeutung der sorgfältigen Abwägung zwischen Modellgröße, Quantisierungsstufe und Leistung hervor, wenn große Sprachmodelle in realen Anwendungen eingesetzt werden sollen.

FAQ