{"id":600,"date":"2025-01-11T15:33:15","date_gmt":"2025-01-11T15:33:15","guid":{"rendered":"https:\/\/smolagents.org\/?post_type=docs&#038;p=600"},"modified":"2025-01-11T15:40:57","modified_gmt":"2025-01-11T15:40:57","password":"","slug":"orchestrate-a-multi-agent-system-%f0%9f%a4%96%f0%9f%a4%9d%f0%9f%a4%96","status":"publish","type":"docs","link":"https:\/\/smolagents.org\/de\/docs\/orchestrate-a-multi-agent-system-\ud83e\udd16\ud83e\udd1d\ud83e\udd16\/","title":{"rendered":"Orchestrierung eines Multiagentensystems \ud83e\udd16\ud83e\udd1d\ud83e\udd16"},"content":{"rendered":"<p>In diesem Notizbuch werden wir eine&nbsp;<strong>Multi-Agenten-Webbrowser: ein agentenbasiertes System mit mehreren Agenten, die zusammenarbeiten, um Probleme \u00fcber das Internet zu l\u00f6sen!<\/strong><\/p>\n\n\n\n<p>Es handelt sich um eine einfache Hierarchie, die eine&nbsp;<code>ManagedAgent<\/code>&nbsp;Objekt, um den verwalteten Web-Suchagenten zu verpacken:<\/p>\n\n\n\n<p>Kopiert<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">              +----------------+\n              | Manager-Agent |\n              +----------------+\n                       |\n        _______________|______________\n       | |\n  Code-Interpreter +--------------------------------+\n       tool | Managed agent |\n                     | +------------------+ |\n                     | Web Search Agent | |\n                     | +------------------+ |\n                     | | | |\n                     | Web-Suchwerkzeug | |\n                     | Werkzeug f\u00fcr Webseitenbesuche |\n                     +--------------------------------+<\/pre>\n\n\n\n<p>Richten wir dieses System ein.<\/p>\n\n\n\n<p>F\u00fchren Sie die folgende Zeile aus, um die erforderlichen Abh\u00e4ngigkeiten zu installieren:<\/p>\n\n\n\n<p>Kopiert<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">!pip install markdownify duckduckgo-search smolagents --upgrade -q<\/pre>\n\n\n\n<p>Melden wir uns an, um die HF Inference API aufzurufen:<\/p>\n\n\n\n<p>Kopiert<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">von huggingface_hub importieren login\n\nlogin()<\/pre>\n\n\n\n<p>\u26a1\ufe0f Unser Agent wird betrieben von\u00a0<a href=\"https:\/\/huggingface.co\/Qwen\/Qwen2.5-Coder-32B-Instruct\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Qwen\/Qwen2.5-Coder-32B-Instruct<\/a>\u00a0mit\u00a0<code>HfApiModel<\/code>\u00a0Klasse, die die Inferenz-API von HF verwendet: Die Inferenz-API erm\u00f6glicht die schnelle und einfache Ausf\u00fchrung beliebiger OS-Modelle.<\/p>\n\n\n\n<p><em>Anmerkung:<\/em>\u00a0Die Inference API enth\u00e4lt Modelle, die auf verschiedenen Kriterien basieren, und eingesetzte Modelle k\u00f6nnen ohne vorherige Ank\u00fcndigung aktualisiert oder ersetzt werden. Erfahren Sie mehr dar\u00fcber\u00a0<a href=\"https:\/\/huggingface.co\/docs\/api-inference\/supported-models\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">hier<\/a>.<\/p>\n\n\n\n<p>Kopiert<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">model_id = \"Qwen\/Qwen2.5-Coder-32B-Instruct\"<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/huggingface.co\/docs\/smolagents\/examples\/multiagents#-create-a-web-search-tool\" target=\"_blank\" rel=\"noopener\"><\/a>\ud83d\udd0d Ein Web-Suchwerkzeug erstellen<\/h2>\n\n\n\n<p>F\u00fcr das Surfen im Internet k\u00f6nnen wir bereits unsere bereits vorhandenen\u00a0<a href=\"https:\/\/github.com\/huggingface\/smolagents\/blob\/main\/src\/smolagents\/default_tools\/search.py\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><code>DuckDuckGoSearchTool<\/code><\/a>\u00a0Tool, um eine Google-Suche zu erm\u00f6glichen.<\/p>\n\n\n\n<p>Aber dann m\u00fcssen wir auch in der Lage sein, die Seite zu sehen, die von der&nbsp;<code>DuckDuckGoSearchTool<\/code>. Um dies zu tun, k\u00f6nnten wir die in der Bibliothek integrierte&nbsp;<code>VisitWebpageTool<\/code>aber wir werden es noch einmal bauen, um zu sehen, wie es gemacht wird.<\/p>\n\n\n\n<p>Erstellen wir also unser&nbsp;<code>VisitWebpageTool<\/code>&nbsp;Werkzeug von Grund auf mit&nbsp;<code>markdownify<\/code>.<\/p>\n\n\n\n<p>Kopiert<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">re importieren\nimportiere Anfragen\nfrom markdownify import markdownify\nfrom requests.exceptions import RequestException\nvon smolagents importieren Werkzeug\n\n\n@tool\ndef visit_webpage(url: str) -&gt; str:\n    \"\"\"Besucht eine Webseite unter der angegebenen URL und gibt deren Inhalt als Markdown-String zur\u00fcck.\n\n    Args:\n        url: Die URL der zu besuchenden Webseite.\n\n    R\u00fcckgabe:\n        Der Inhalt der Webseite, der in Markdown konvertiert wurde, oder eine Fehlermeldung, wenn die Anfrage fehlschl\u00e4gt.\n    \"\"\"\n    try:\n        <em># Senden Sie eine GET-Anfrage an die URL<\/em>\n        response = requests.get(url)\n        response.raise_for_status()  <em># Ausl\u00f6sen einer Ausnahme f\u00fcr schlechte Statuscodes<\/em>\n\n        <em># Konvertierung des HTML-Inhalts in Markdown<\/em>\n        markdown_content = markdownify(response.text).strip()\n\n        <em># Mehrere Zeilenumbr\u00fcche entfernen<\/em>\n        markdown_content = re.sub(r\"\\n{3,}\", \"\\n\\n\", markdown_content)\n\n        return abschrift_inhalt\n\n    except RequestException as e:\n        return f \"Fehler beim Abrufen der Webseite: {str(e)}\"\n    except Exception as e:\n        return f \"Ein unerwarteter Fehler ist aufgetreten: {str(e)}\"<\/pre>\n\n\n\n<p>Ok, jetzt wollen wir unser Tool initialisieren und testen!<\/p>\n\n\n\n<p>Kopiert<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">print(visit_webpage(\"https:\/\/en.wikipedia.org\/wiki\/Hugging_Face\")[:500])<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/huggingface.co\/docs\/smolagents\/examples\/multiagents#build-our-multi-agent-system-\" target=\"_blank\" rel=\"noopener\"><\/a>Unser Multiagentensystem aufbauen \ud83e\udd16\ud83e\udd1d\ud83e\udd16<\/h2>\n\n\n\n<p>Jetzt, wo wir alle Werkzeuge haben&nbsp;<code>Suche<\/code>&nbsp;und&nbsp;<code>visit_webpage<\/code>k\u00f6nnen wir sie verwenden, um den Webagenten zu erstellen.<\/p>\n\n\n\n<p>Welche Konfiguration soll f\u00fcr diesen Agenten gew\u00e4hlt werden?<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Das Surfen im Internet ist eine Aufgabe mit einer einzigen Zeitleiste, die keine parallelen Werkzeugaufrufe erfordert, so dass JSON-Werkzeugaufrufe daf\u00fcr gut geeignet sind. Wir w\u00e4hlen daher eine\u00a0<code>JsonAgent<\/code>.<\/li>\n\n\n\n<li>Da bei der Websuche manchmal viele Seiten durchsucht werden m\u00fcssen, bevor die richtige Antwort gefunden wird, ziehen wir es vor, die Anzahl der\u00a0<code>max_steps<\/code>\u00a0bis 10.<\/li>\n<\/ul>\n\n\n\n<p>Kopiert<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">von smolagents importieren (\n    CodeAgent,\n    ToolCallingAgent,\n    HfApiModel,\n    ManagedAgent,\n    DuckDuckGoSearchTool,\n    LiteLLMModel,\n)\n\nmodel = HfApiModel(model_id)\n\nweb_agent = ToolCallingAgent(\n    tools=[DuckDuckGoSearchTool(), visit_webpage],\n    model=model,\n    max_steps=10,\n)<\/pre>\n\n\n\n<p>Wir verpacken diesen Agenten dann in eine&nbsp;<code>ManagedAgent<\/code>&nbsp;die ihn f\u00fcr seinen Manager-Agenten aufrufbar macht.<\/p>\n\n\n\n<p>Kopiert<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">managed_web_agent = ManagedAgent(\n    agent=web_agent,\n    name=\"Suche\",\n    description=\"F\u00fchrt Websuchen f\u00fcr Sie durch. Geben Sie ihm Ihre Anfrage als Argument.\",\n)<\/pre>\n\n\n\n<p>Schlie\u00dflich erstellen wir einen Manager-Agenten und \u00fcbergeben ihm bei der Initialisierung unseren verwalteten Agenten in seiner&nbsp;<code>verwaltete_Agenten<\/code>&nbsp;Argument.<\/p>\n\n\n\n<p>Da dieser Agent mit der Planung und dem Denken betraut ist, ist ein fortgeschrittenes Denken von Vorteil, so dass ein&nbsp;<code>CodeAgent<\/code>&nbsp;wird die beste Wahl sein.<\/p>\n\n\n\n<p>Au\u00dferdem wollen wir eine Frage stellen, die das aktuelle Jahr betrifft und zus\u00e4tzliche Datenberechnungen vornimmt: F\u00fcgen wir also hinzu&nbsp;<code>additional_authorized_imports=[\"time\", \"numpy\", \"pandas\"]<\/code>f\u00fcr den Fall, dass der Agent diese Pakete ben\u00f6tigt.<\/p>\n\n\n\n<p>Kopiert<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">manager_agent = CodeAgent(\n    tools=[],\n    model=model,\n    managed_agents=[managed_web_agent],\n    additional_authorized_imports=[\"time\", \"numpy\", \"pandas\"],\n)<\/pre>\n\n\n\n<p>Das war's schon! Jetzt lassen wir unser System laufen! Wir w\u00e4hlen eine Frage, die sowohl eine Berechnung als auch eine Recherche erfordert:<\/p>\n\n\n\n<p>Kopiert<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">answer = manager_agent.run(\"Wenn die LLM-Ausbildung bis 2030 weiterhin im derzeitigen Rhythmus zunimmt, wie hoch w\u00e4re dann die elektrische Leistung in GW, die erforderlich w\u00e4re, um die gr\u00f6\u00dften Ausbildungsg\u00e4nge bis 2030 zu betreiben? Was w\u00fcrde das im Vergleich zu einigen L\u00e4ndern bedeuten? Bitte geben Sie eine Quelle f\u00fcr alle verwendeten Zahlen an.\")<\/pre>\n\n\n\n<p>Wir erhalten diesen Bericht als Antwort:<\/p>\n\n\n\n<p>Kopiert<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Ausgehend von den aktuellen Wachstumsprognosen und Energieverbrauchssch\u00e4tzungen w\u00fcrde eine weitere Zunahme der LLM-Ausbildungen im\nbis zum Jahr 2030:\n\n1. Die elektrische Energie, die ben\u00f6tigt wird, um die gr\u00f6\u00dften Ausbildungsg\u00e4nge bis 2030 zu betreiben, w\u00fcrde etwa 303,74 GW betragen, was\nwas etwa 2.660.762 GWh\/Jahr entspricht.\n\n2. Vergleichen Sie dies mit dem Stromverbrauch der L\u00e4nder:\n   - Dies entspr\u00e4che etwa 34% des gesamten Stromverbrauchs Chinas.\n   - Es w\u00e4re mehr als der gesamte Stromverbrauch von Indien (184%), Russland (267%) und Japan (291%).\n   - Es w\u00e4re fast das Neunfache des Stromverbrauchs von L\u00e4ndern wie Italien oder Mexiko.\n\n3. Quelle der Zahlen:\n   - Die urspr\u00fcngliche Sch\u00e4tzung von 5 GW f\u00fcr k\u00fcnftige LLM-Ausbildung stammt von AWS-CEO Matt Garman.\n   - F\u00fcr die Wachstumsprognose wurde ein CAGR von 79,80% aus der Marktforschung von Springs verwendet.\n   - Die Daten zum Stromverbrauch des Landes stammen von der U.S. Energy Information Administration, haupts\u00e4chlich f\u00fcr das Jahr\n2021.<\/pre>\n\n\n\n<p>Es scheint, dass wir einige gro\u00dfe Kraftwerke brauchen, wenn die\u00a0<a href=\"https:\/\/gwern.net\/scaling-hypothesis\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Skalierungshypothese<\/a>\u00a0gilt auch weiterhin.<\/p>\n\n\n\n<p>Unsere Agenten haben es geschafft, effizient an der L\u00f6sung der Aufgabe mitzuarbeiten! \u2705<\/p>\n\n\n\n<p>\ud83d\udca1 Sie k\u00f6nnen diese Orchestrierung leicht auf mehrere Agenten erweitern: einer f\u00fchrt den Code aus, einer die Websuche, einer das Laden von Dateien...<\/p>","protected":false},"excerpt":{"rendered":"<p>In this notebook we will make a&nbsp;multi-agent web browser: an agentic system with several agents collaborating to solve problems using the web! It will be a simple hierarchy, using a&nbsp;ManagedAgent&nbsp;object to wrap the managed web search agent: Copied +&#8212;&#8212;&#8212;&#8212;&#8212;-+ | Manager agent | +&#8212;&#8212;&#8212;&#8212;&#8212;-+ | _______________|______________ | | Code interpreter +&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+ tool | Managed agent&#8230;<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"_kadence_starter_templates_imported_post":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"footnotes":""},"doc_category":[9],"doc_tag":[],"class_list":["post-600","docs","type-docs","status-publish","hentry","doc_category-conceptual-guides"],"year_month":"2026-04","word_count":932,"total_views":"5339","reactions":{"happy":"1","normal":"0","sad":"1"},"author_info":{"name":"smolagents","author_nicename":"wd-gstargmail-com","author_url":"https:\/\/smolagents.org\/de\/author\/wd-gstargmail-com\/"},"doc_category_info":[{"term_name":"Conceptual guides","term_url":"https:\/\/smolagents.org\/de\/docs-category\/conceptual-guides\/"}],"doc_tag_info":[],"_links":{"self":[{"href":"https:\/\/smolagents.org\/de\/wp-json\/wp\/v2\/docs\/600","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/smolagents.org\/de\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/smolagents.org\/de\/wp-json\/wp\/v2\/types\/docs"}],"author":[{"embeddable":true,"href":"https:\/\/smolagents.org\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/smolagents.org\/de\/wp-json\/wp\/v2\/comments?post=600"}],"version-history":[{"count":1,"href":"https:\/\/smolagents.org\/de\/wp-json\/wp\/v2\/docs\/600\/revisions"}],"predecessor-version":[{"id":601,"href":"https:\/\/smolagents.org\/de\/wp-json\/wp\/v2\/docs\/600\/revisions\/601"}],"wp:attachment":[{"href":"https:\/\/smolagents.org\/de\/wp-json\/wp\/v2\/media?parent=600"}],"wp:term":[{"taxonomy":"doc_category","embeddable":true,"href":"https:\/\/smolagents.org\/de\/wp-json\/wp\/v2\/doc_category?post=600"},{"taxonomy":"doc_tag","embeddable":true,"href":"https:\/\/smolagents.org\/de\/wp-json\/wp\/v2\/doc_tag?post=600"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}