中文 | Englisch
Qwen-Agent ist ein Framework für die Entwicklung von LLM-Anwendungen, das auf der Befehlsfolge, der Werkzeugnutzung, der Planung und den Speicherfunktionen von Qwen basiert. Es enthält außerdem Beispielanwendungen wie Browser Assistant, Code Interpreter und Custom Assistant.
18. September 2024: Qwen2.5-Math-Demo hinzugefügt, um die Tool-Integrated Reasoning-Funktionen von Qwen2.5-Math zu demonstrieren. Hinweis: Der Python-Executor verfügt nicht über eine Sandbox und ist nur für lokale Tests und nicht für den Produktionseinsatz gedacht.
Installieren Sie die stabile Version von PyPI:
pip install -U "qwen-agent[gui,rag,code_interpreter,python_executor]"# Oder verwenden Sie „pip install -U qwen-agent“ für die Mindestanforderungen.# Die optionalen Anforderungen, angegeben in doppelten Klammern, sind:# [gui ] für Gradio-basierte GUI-Unterstützung;# [rag] für RAG-Unterstützung;# [code_interpreter] für Code-Interpreter-Unterstützung;# [python_executor] für Werkzeugintegriertes Denken mit Qwen2.5-Math.
Alternativ können Sie die neueste Entwicklungsversion von der Quelle installieren:
Git-Klon https://github.com/QwenLM/Qwen-Agent.gitcd Qwen-Agent pip install -e ./"[gui,rag,code_interpreter,python_executor]"# Oder `pip install -e ./` für minimale Anforderungen.
Sie können entweder den von DashScope von Alibaba Cloud bereitgestellten Modelldienst nutzen oder Ihren eigenen Modelldienst mithilfe der Open-Source-Qwen-Modelle bereitstellen und verwenden.
Wenn Sie den von DashScope angebotenen Modelldienst nutzen möchten, stellen Sie bitte sicher, dass Sie die Umgebungsvariable DASHSCOPE_API_KEY
auf Ihren eindeutigen DashScope-API-Schlüssel setzen.
Wenn Sie alternativ lieber Ihren eigenen Modelldienst bereitstellen und verwenden möchten, befolgen Sie bitte die Anweisungen in der README-Datei von Qwen2 zur Bereitstellung eines OpenAI-kompatiblen API-Diensts. Konsultieren Sie insbesondere den Abschnitt „vLLM“ für die GPU-Bereitstellung mit hohem Durchsatz oder den Abschnitt „Ollama“ für die lokale CPU-(+GPU)-Bereitstellung.
Qwen-Agent bietet atomare Komponenten wie LLMs (die von class BaseChatModel
erben und mit Funktionsaufrufen ausgestattet sind) und Tools (die von class BaseTool
erben) sowie High-Level-Komponenten wie Agents (abgeleitet von class Agent
).
Das folgende Beispiel veranschaulicht den Prozess der Erstellung eines Agenten, der PDF-Dateien lesen und Tools verwenden kann, sowie die Einbindung eines benutzerdefinierten Tools:
import pprintimport urllib.parseimport json5from qwen_agent.agents import Assistantfrom qwen_agent.tools.base import BaseTool, register_tool# Schritt 1 (Optional): Fügen Sie ein benutzerdefiniertes Tool mit dem Namen „my_image_gen“ hinzu.@register_tool('my_image_gen')class MyImageGen(BaseTool):# Die „Beschreibung“ teilt dem Agenten die Funktionalität dieses Tools mit.description = 'KI-Malerei (Bildgenerierung) Dienst, geben Sie eine Textbeschreibung ein und geben Sie die Bild-URL zurück, die basierend auf Textinformationen gezeichnet wurde.'# Die „Parameter“ sagen dem Agenten, welche Eingabeparameter das Tool hat.parameters = [{'name': 'prompt','type': ' string','description': 'Detaillierte Beschreibung des gewünschten Bildinhalts, auf Englisch','required': True}]def call(self, params: str, **kwargs) -> str:# `params` sind die Vom LLM-Agenten generierte Argumente.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: Konfigurieren Sie das von Ihnen verwendete LLM.llm_cfg = {# Verwenden Sie den von bereitgestellten Modelldienst DashScope:'model': 'qwen-max','model_server': 'dashscope',# 'api_key': 'YOUR_DASHSCOPE_API_KEY',# Es wird die Umgebungsvariable `DASHSCOPE_API_KEY' verwendet, wenn 'api_key' hier nicht festgelegt ist.# Verwenden Sie einen Modelldienst, der mit der OpenAI-API kompatibel ist, wie z. B. vLLM oder Ollama:# 'model': 'Qwen2-7B- Chat',# 'model_server': 'http://localhost:8000/v1', # base_url, auch bekannt als api_base# 'api_key': 'EMPTY',# (Optional) LLM-Hyperparameter für die Generierung:'generate_cfg': {'top_p': 0.8} }# Schritt 3: Erstellen Sie einen Agenten. Hier verwenden wir den Agenten „Assistant“ als Beispiel, der in der Lage ist, Tools zu verwenden und Dateien zu lesen Bild-URL – führen Sie dann den Code „request.get(image_url)“ aus, um das Bild herunterzuladen – und wählen Sie schließlich einen Bildvorgang aus dem angegebenen Dokument aus, um das Bild zu verarbeiten. Bitte zeigen Sie das Bild mit an `plt.show()`.'''tools = ['my_image_gen', 'code_interpreter'] # `code_interpreter` ist ein integriertes Tool zum Ausführen von code.files = ['./examples/resource/doc.pdf' ] # Geben Sie dem Bot eine PDF-Datei zum Lesen.bot = Assistant(llm=llm_cfg,system_message=system_instruction,function_list=tools,files=files)# Schritt 4: Führen Sie den Agenten als Chatbot aus.messages = [] # Dadurch wird der Chatverlauf gespeichert.while True:# Geben Sie beispielsweise die Abfrage „Zeichnen Sie einen Hund und drehen Sie ihn um 90 Grad“ ein.query = input('Benutzerabfrage: ')# Hängen Sie die Benutzerabfrage an den Chat-Verlauf an.messages.append({'role': 'user', 'content': query})response = []für Antwort in bot.run(messages=messages):# Streaming Output.print('Bot-Antwort:')pprint.pprint(response, indent=2)# Die Bot-Antworten an den Chat-Verlauf anhängen.messages.extend(response)
Zusätzlich zur Verwendung integrierter Agentenimplementierungen wie class Assistant
können Sie auch Ihre eigene Agentenimplementierung entwickeln, indem Sie von class Agent
erben. Weitere Anwendungsbeispiele finden Sie im Beispielverzeichnis.
Ja. Die LLM-Klassen bieten Funktionsaufrufe. Darüber hinaus basieren auch einige Agentenklassen auf der Funktionsaufruffunktion, z. B. FnCallAgent und ReActChat.
Wir haben eine schnelle RAG-Lösung sowie einen teuren, aber wettbewerbsfähigen Agenten für die Beantwortung von Fragen bei sehr langen Dokumenten herausgebracht. Es ist ihnen gelungen, native Long-Context-Modelle bei zwei anspruchsvollen Benchmarks zu übertreffen und gleichzeitig effizienter zu sein, und sie schneiden im Single-Needle-Drucktest „Nadel im Heuhaufen“ mit 1M-Token-Kontexten perfekt ab. Technische Details finden Sie im Blog.
BrowserQwen ist ein Browser-Assistent, der auf Qwen-Agent basiert. Weitere Informationen finden Sie in der Dokumentation.
Der Code-Interpreter ist nicht in einer Sandbox untergebracht und führt Code in Ihrer eigenen Umgebung aus. Bitten Sie Qwen nicht, gefährliche Aufgaben auszuführen, und verwenden Sie den Code-Interpreter nicht direkt für Produktionszwecke.