{"id":2288,"date":"2026-05-17T05:05:20","date_gmt":"2026-05-17T05:05:20","guid":{"rendered":"https:\/\/ai-box.eu\/?p=2288"},"modified":"2026-05-17T06:02:46","modified_gmt":"2026-05-17T06:02:46","slug":"nemo-agent-toolkit-genai-agent-orchestrierung-lokal","status":"publish","type":"post","link":"https:\/\/ai-box.eu\/en\/large-language-models-en\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\/2288\/","title":{"rendered":"NeMo Agent Toolkit &#8211; GenAI Agent Orchestrierung lokal"},"content":{"rendered":"<p>Agent-Orchestrierung ist konzeptionell genau der Sprung, der aus \u201eLLM-Inferenz&#8221; tats\u00e4chlich \u201eintelligente Anwendungen&#8221; macht. Ein funktionierendes NAT-Setup mit Ollama habe ich mir wie in meinem Blogbeitrag hier &#8220;N<a href=\"https:\/\/ai-box.eu\/large-language-models\/nemo-agent-toolkit-ollama\/2282\/\" target=\"_blank\" rel=\"noopener\">eMo Agent Toolkit auf der RTX A6000 Ada \u2013 vom Inferenz-Layer zum Orchestrator-Layer<\/a>&#8221; beschrieben bereits aufgesetzt. Jetzt m\u00f6chte ich schrittweise von der Basis bis zu komplexen Multi-Agent-Mustern das Vorgehen und die Architektur hier beschreiben.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_83 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/ai-box.eu\/en\/large-language-models-en\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\/2288\/#Was_bedeutet_%E2%80%9EOrchestrierung%E2%80%9D_eigentlich\" >Was bedeutet \u201eOrchestrierung&#8221; eigentlich?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/ai-box.eu\/en\/large-language-models-en\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\/2288\/#Die_ReAct-Schleife_im_Detail\" >Die ReAct-Schleife im Detail<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/ai-box.eu\/en\/large-language-models-en\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\/2288\/#Experiment_1_Tool-Beschreibung_beeinflusst_Tool-Auswahl\" >Experiment 1: Tool-Beschreibung beeinflusst Tool-Auswahl<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/ai-box.eu\/en\/large-language-models-en\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\/2288\/#Hands-on_Ein_eigenes_Python-Tool_schreiben\" >Hands-on: Ein eigenes Python-Tool schreiben<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/ai-box.eu\/en\/large-language-models-en\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\/2288\/#Schritt_1_Das_Python-Tool_schreiben\" >Schritt 1: Das Python-Tool schreiben<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/ai-box.eu\/en\/large-language-models-en\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\/2288\/#Schritt_2_Das_Tool_als_Package_registrieren\" >Schritt 2: Das Tool als Package registrieren<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/ai-box.eu\/en\/large-language-models-en\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\/2288\/#Schritt_3_Tool_in_der_aktiven_venv_installieren\" >Schritt 3: Tool in der aktiven venv installieren<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/ai-box.eu\/en\/large-language-models-en\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\/2288\/#Schritt_4_Verifizieren_dass_NAT_das_Tool_sieht\" >Schritt 4: Verifizieren, dass NAT das Tool sieht<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/ai-box.eu\/en\/large-language-models-en\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\/2288\/#Schritt_5_Workflow_mit_dem_neuen_Tool_bauen\" >Schritt 5: Workflow mit dem neuen Tool bauen<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/ai-box.eu\/en\/large-language-models-en\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\/2288\/#Schritt_6_Den_ersten_Hardware-Agent_ausfuhren\" >Schritt 6: Den ersten Hardware-Agent ausf\u00fchren<\/a><\/li><\/ul><\/nav><\/div>\n<h3 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\"><span class=\"ez-toc-section\" id=\"Was_bedeutet_%E2%80%9EOrchestrierung%E2%80%9D_eigentlich\"><\/span>Was bedeutet \u201eOrchestrierung&#8221; eigentlich?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\">Im NeMo Agent Toolkit-Kontext und verwandten Ans\u00e4tzen bezeichnet Orchestrierung die <strong>Koordination mehrerer Komponenten<\/strong> zu einer sinnvollen Gesamtarbeit. Diese Komponenten k\u00f6nnen sein:<\/p>\n<ul class=\"[li_&amp;]:mb-0 [li_&amp;]:mt-1 [li_&amp;]:gap-1 [&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-disc flex flex-col gap-1 pl-8 mb-3\">\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\"><strong>Tools<\/strong> (Funktionen, die der Agent aufruft, z. B. <code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">wikipedia_search<\/code>oder auch die <code>Date_Time<\/code>-Funktion)<\/li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\"><strong>LLMs<\/strong> (verschiedene Modelle f\u00fcr verschiedene Aufgaben abh\u00e4ngig von ihren F\u00e4higkeiten)<\/li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\"><strong>Agenten<\/strong> (in sich abgeschlossene ReAct-Loops, die selbst als \u201eTools&#8221; f\u00fcr \u00fcbergeordnete Agenten dienen k\u00f6nnen)<\/li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\"><strong>Memory<\/strong> (Kurzzeit- und Langzeit-Ged\u00e4chtnis zwischen Aufrufen)<\/li>\n<\/ul>\n<p class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\">Ich m\u00f6cht hier die drei grundlegende Orchestrierungs-Muster vorstellen die ihr mit einem NAT-Setup und ReAct ohne weiteres bauen k\u00f6nnt:<\/p>\n<p>Muster 1: Single Agent mit Tool-Auswahl<\/p>\n<div id=\"attachment_2290\" style=\"width: 488px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_Single_Agent_tool.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2290\" class=\" wp-image-2290\" src=\"https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_Single_Agent_tool-1024x236.jpg\" alt=\"Single Agent mit Tool-Auswahl\" width=\"478\" height=\"110\" srcset=\"https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_Single_Agent_tool-1024x236.jpg 1024w, https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_Single_Agent_tool-300x69.jpg 300w, https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_Single_Agent_tool-768x177.jpg 768w, https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_Single_Agent_tool-1536x354.jpg 1536w, https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_Single_Agent_tool-1080x249.jpg 1080w, https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_Single_Agent_tool.jpg 1959w\" sizes=\"(max-width: 478px) 100vw, 478px\" \/><\/a><p id=\"caption-attachment-2290\" class=\"wp-caption-text\">Single Agent mit Tool-Auswahl<\/p><\/div>\n<p>Muster 2: Sequential Pipeline<\/p>\n<div id=\"attachment_2292\" style=\"width: 782px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_Sequential_Pipeline-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2292\" class=\" wp-image-2292\" src=\"https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_Sequential_Pipeline-1024x138.jpg\" alt=\"Sequential Pipeline\" width=\"772\" height=\"104\" srcset=\"https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_Sequential_Pipeline-1024x138.jpg 1024w, https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_Sequential_Pipeline-300x41.jpg 300w, https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_Sequential_Pipeline-768x104.jpg 768w, https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_Sequential_Pipeline-1536x207.jpg 1536w, https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_Sequential_Pipeline-2048x277.jpg 2048w, https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_Sequential_Pipeline-1080x146.jpg 1080w\" sizes=\"(max-width: 772px) 100vw, 772px\" \/><\/a><p id=\"caption-attachment-2292\" class=\"wp-caption-text\">Sequential Pipeline<\/p><\/div>\n<p>Muster 3: Supervisor \/ Worker (hierarchisch)<\/p>\n<div id=\"attachment_2294\" style=\"width: 608px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_Supervisor_Worker.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2294\" class=\" wp-image-2294\" src=\"https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_Supervisor_Worker-1024x493.jpg\" alt=\"Supervisor \/ Worker (hierarchisch)\" width=\"598\" height=\"288\" srcset=\"https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_Supervisor_Worker-1024x493.jpg 1024w, https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_Supervisor_Worker-300x144.jpg 300w, https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_Supervisor_Worker-768x369.jpg 768w, https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_Supervisor_Worker-1536x739.jpg 1536w, https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_Supervisor_Worker-2048x985.jpg 2048w, https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_Supervisor_Worker-1080x520.jpg 1080w\" sizes=\"(max-width: 598px) 100vw, 598px\" \/><\/a><p id=\"caption-attachment-2294\" class=\"wp-caption-text\">Supervisor \/ Worker (hierarchisch)<\/p><\/div>\n<p>Muster 4: Parallel mit Aggregation<\/p>\n<div id=\"attachment_2296\" style=\"width: 691px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_Parallel_Aggregation-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2296\" class=\" wp-image-2296\" src=\"https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_Parallel_Aggregation-1024x269.jpg\" alt=\"Parallel mit Aggregation\" width=\"681\" height=\"179\" srcset=\"https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_Parallel_Aggregation-1024x269.jpg 1024w, https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_Parallel_Aggregation-300x79.jpg 300w, https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_Parallel_Aggregation-768x202.jpg 768w, https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_Parallel_Aggregation-1536x403.jpg 1536w, https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_Parallel_Aggregation-2048x538.jpg 2048w, https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_Parallel_Aggregation-1080x284.jpg 1080w\" sizes=\"(max-width: 681px) 100vw, 681px\" \/><\/a><p id=\"caption-attachment-2296\" class=\"wp-caption-text\">Parallel mit Aggregation<\/p><\/div>\n<p>Das wichtigste konzeptionelle Detail in NAT: <strong>Alles ist eine Function.<\/strong> Ein Tool ist eine Function. Ein Agent ist eine Function. Ein ganzer Workflow ist eine Function. Das macht NAT enorm komponierbar. Wir kennen dieses Konzept bereits aus einigen anderen agentischen Tools. Ein Workflow kann mit dieser Architektur einen anderer Workflow als Tool nutzen, ohne dass es einen architektonischen Unterschied gibt. Das ist extrem flexibel und leistungsstark.<\/p>\n<h3 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\"><span class=\"ez-toc-section\" id=\"Die_ReAct-Schleife_im_Detail\"><\/span>Die ReAct-Schleife im Detail<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\">Bevor wir Multi-Agent-Setups bauen, m\u00fcssen wir verstehen, was in der einzelnen Schleife passiert. Wenn du <code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">nat run --config_file ollama_agent.yml --input \"...\"<\/code> aufrufst, l\u00e4uft folgendes ab:<\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li>Prompt-Composition<br \/>\nDer <code>system_prompt<\/code> wird mit <code>{tools}<\/code> und <code>{tool_names}<\/code> ausgef\u00fcllt.<br \/>\nDann an das LLM geschickt: &#8220;Hier sind deine Tools, hier ist die Frage.&#8221;<\/li>\n<li>Iteration 1<br \/>\n1. LLM generiert: &#8220;Thought: &#8230; Action: <code>tool_X<\/code> Action Input: {&#8230;}&#8221;<br \/>\n2. NAT parsed das Format, extrahiert <code>tool_X<\/code> und seine Inputs<br \/>\n3. NAT ruft <code>tool_X(...)<\/code> auf \u2014 entweder einen Python-Funktionscall,<br \/>\n4. einen HTTP-Request, oder einen Datenbank-Query<br \/>\n5. Das Ergebnis wird als &#8220;Observation: &#8230;&#8221; an den Context angeh\u00e4ngt<\/li>\n<li>Iteration 2 (wenn n\u00f6tig)<br \/>\n1. LLM bekommt den erweiterten Context (Thought+Action+Observation)<br \/>\n2. Entscheidet: noch ein Tool oder finale Antwort?<br \/>\n3. Wenn Tool: weiter wie oben. Wenn fertig: &#8220;Final Answer: &#8230;&#8221;<\/li>\n<li>Output<br \/>\nNAT extrahiert &#8220;Final Answer:&#8221; und liefert diese zur\u00fcck.<\/li>\n<\/ul>\n<p>Der kritische Punkt: das hinter dem Prozess liegende LLM trifft seine Entscheidung <strong>allein anhand der Tool-Beschreibungen<\/strong>. Wenn <code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">wikipedia_search<\/code> als \u201eSearch Wikipedia for facts&#8221; beschrieben ist und <code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">current_datetime<\/code> als \u201eReturns the current date and time&#8221;, dann lernt das LLM aus diesen Beschreibungen, wann es welches Tool nutzen soll. Daher ist es sehr wichtig das die Tools eindeutig und ordentlich beschrieben sind. Eine Tool-Doppelung mit nicht eindeutig unterscheidbare Beschreibung sollte vermieden werden wenn grundlegend unterschiedliche Ergebnisse zur\u00fcck geliefert werden von den betroffenen Tools.<\/p>\n<h4 class=\"text-text-100 mt-2 -mb-1 text-base font-bold\"><span class=\"ez-toc-section\" id=\"Experiment_1_Tool-Beschreibung_beeinflusst_Tool-Auswahl\"><\/span>Experiment 1: Tool-Beschreibung beeinflusst Tool-Auswahl<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\">Ich gehe jetzt davon aus, dass Du ein l\u00e4uff\u00e4higes NeMo Agent Toolkit Setup im Zugriff hast. Lass uns jetzt einmal in der Praxis den Ablauf genau anschauen. Lege folgenden Workflow an:<\/p>\n<p>Du bist in der aktiven virtuellen Umgebung Deines NAT\u00a0 Setups. F\u00fchre jetzt die beiden folgenden Befehle aus:<\/p>\n<p><span class=\"token token\"><strong>Befehl:<\/strong> <code>cd<\/code><\/span><code> ~\/nat-playground\/configs<\/code><\/p>\n<p>Jetzt legst Du den folgenden <code>experiment1_tool_descriptions.yml<\/code> Workflow an.<\/p>\n<p><span class=\"token token\"><strong>Befehl:<\/strong> <code>nano<\/code><\/span><code> experiment1_tool_descriptions.yml<\/code><\/p>\n<p>Da es hier viel zu viel ich nenne es einmal Coding w\u00e4re gibt es die Workflow Beschreibung in meinem GitHub Repository passend zu dem Projekt hier.<\/p>\n<p>GitHub Repository: <a href=\"https:\/\/github.com\/custom-build-robots\/nemo-agent-toolkit-examples\/blob\/main\/configs\/experiment1_tool_descriptions.yml\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/custom-build-robots\/configs\/experiment1_tool_descriptions.yml<\/a><\/p>\n<p>Jetzt hast Du den Inhalt in den Workflow kopiert und mit STRG + X gefolgt von einem Y gespeichert. Ollama l\u00e4uft als Inferenz-Server und jetzt f\u00fchrst Du den Workflow wie folgt dreimal aus.<\/p>\n<ul>\n<li>Frage 1: Zeit-bezogen \u2192 sollte current_datetime w\u00e4hlen\n<ul>\n<li><span class=\"token token\"><strong>Befehl:\u00a0<\/strong><\/span><code>nat run --config_file experiment1_tool_descriptions.yml <\/code><code>--input \"Wie sp\u00e4t ist es?\"<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Frage 2: Wissens-Frage \u2192 sollte wikipedia_search w\u00e4hlen\n<ul>\n<li><span class=\"token token\"><strong>Befehl:\u00a0<\/strong><\/span><code>nat run --config_file experiment1_tool_descriptions.yml <\/code><code>--input \"Was war die Schlacht im Teutoburger Wald?\"<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Frage 3: Kombiniert \u2192 sollte BEIDE nacheinander aufrufen\n<ul>\n<li><span class=\"token token\"><strong>Befehl:\u00a0<\/strong><\/span><code>nat run --config_file experiment1_tool_descriptions.yml<\/code><code> --input \"Was ist heute f\u00fcr ein Tag und welches historische Ereignis passierte am 13. M\u00e4rz 1986?\"<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\">Schau dir die Traces an. Bei Frage 3 wirst du wahrscheinlich beobachten, dass der Agent das Datum-Tool nicht f\u00fcr \u201e13. M\u00e4rz 1986&#8243; nutzt (das Datum ist ja in der Frage), sondern nur f\u00fcr \u201eheute&#8221;. Das ist exakt der Punkt das Modell versteht aus dem <strong>Tool-Namen und Description<\/strong>, was wann n\u00fctzlich ist.<\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\"><strong>Lehre:<\/strong> Tool-Beschreibungen sind dein wichtigster Hebel. Wenn dein Agent das falsche Tool w\u00e4hlt, ist meistens nicht das Modell \u201edumm&#8221;, sondern die Description unklar.<\/p>\n<h3 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\"><span class=\"ez-toc-section\" id=\"Hands-on_Ein_eigenes_Python-Tool_schreiben\"><\/span>Hands-on: Ein eigenes Python-Tool schreiben<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\">Jetzt kommen wir endlich zum spannenden Teil. Bauen wir ein <strong>GPU-Status-Tool<\/strong>, das <code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">nvidia-smi<\/code> auf deinem Server abfragt und die Werte zur\u00fcckgibt. Damit kannst du deinen Agent fragen: \u201eWie ist meine GPU gerade ausgelastet?&#8221; und er bekommt von nvidia-smi eine konkrete Antwort von deiner Hardware.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Schritt_1_Das_Python-Tool_schreiben\"><\/span>Schritt 1: Das Python-Tool schreiben<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Jetzt werden wir aus dem config Ordner unserer nat-playgrounds heraus gehen und in den tools ordner einsteigen. Dort legen wir unser neues Tool das wir jetzt bauen m\u00f6chten ab. Dazu bitte die folgenden Befehle ausf\u00fchren.<\/p>\n<p><span class=\"token token\"><strong>Befehl:<\/strong> <code>cd<\/code><\/span><code> ~\/nat-playground\/tools<\/code><\/p>\n<p><span class=\"token token\"><strong>Befehl:<\/strong> <code>mkdir<\/code><\/span><code> -p gpu_status<\/code><\/p>\n<p><span class=\"token token\"><strong>Befehl:<\/strong> <code>cd<\/code><\/span><code> gpu_status<\/code><\/p>\n<p><span class=\"token token\"><strong>Befehl:<\/strong> <code>nano<\/code><\/span><code> gpu_status_tool.py<\/code><\/p>\n<p>Jetzt musst Du die folgende Tool Beschreibung die ich hier als Python Programm mit dem Namen <code>gpu_status_tool.py<\/code> datei bereitstelle von GitHub herunter laden.<\/p>\n<p>GitHub Repository: <a href=\"https:\/\/github.com\/custom-build-robots\/gpu_status\/gpu_status_tool.py\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/custom-build-robots\/gpu_status\/gpu_status_tool.py<\/a><\/p>\n<p>Jetzt den Inhalt also den Python-Code in die Datei einf\u00fcgen so das Du das Tool im Ordner <code>~\/nat-playground\/tools\/gpu_status<\/code> am Ende abgelegt hast. Mit Strg + X gefolgt von einem Y speichern.<\/p>\n<h4 class=\"text-text-100 mt-2 -mb-1 text-base font-bold\"><span class=\"ez-toc-section\" id=\"Schritt_2_Das_Tool_als_Package_registrieren\"><\/span>Schritt 2: Das Tool als Package registrieren<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\">NAT erkennt Custom-Tools \u00fcber Python-Entry-Points. Wir brauchen eine kleine <code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">pyproject.toml<\/code>:<\/p>\n<p><span class=\"token token\"><strong>Befehl:<\/strong> <code>~\/nat-playground\/tools\/gpu_status<\/code><\/span><\/p>\n<p><span class=\"token token\"><strong>Befehl:<\/strong> <code>nano pyproject.toml<\/code><\/span><\/p>\n<p>Auch hier wieder das gleiche vorgehen. Den Inhalt der <span class=\"token token\"><code>pyproject.toml<\/code><\/span> gibt es hier auf GitHub.<\/p>\n<p>GitHub Repository: <a href=\"https:\/\/github.com\/custom-build-robots\/nemo-agent-toolkit-examples\/blob\/main\/tools\/gpu_status\/pyproject.toml\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/custom-build-robots\/gpu_status\/pyproject.toml<\/a><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Schritt_3_Tool_in_der_aktiven_venv_installieren\"><\/span>Schritt 3: Tool in der aktiven venv installieren<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Bitte jetzt in den nat-playground Ordner wechseln f\u00fcr die Tool Registrierung.<\/p>\n<p><span class=\"token token\"><strong>Befehl:<\/strong> <code>cd ~\/nat-playground<\/code><\/span><\/p>\n<p>Wenn die virtuelle Umgebung nicht aktiv sein sollte dann bitte diese aktivieren.<\/p>\n<p><span class=\"token token\"><strong>Befehl:<\/strong>\u00a0<\/span><code>source .venv\/bin\/activate<\/code><\/p>\n<p>Mit dem jetzt folgenden Befehl wird das Tool gpu_status installiert.<\/p>\n<p><span class=\"token token\"><strong>Befehl:<\/strong> <\/span><code>uv pip install -e tools\/gpu_status<\/code><\/p>\n<p>Der <code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">-e<\/code> Flag bedeutet \u201eeditable install&#8221; das ist super praktisch denn wenn du am Python-Code etwas \u00e4nderst, brauchst du das Tool nicht neu zu installieren.<\/p>\n<p>Bei mir sah die Ausgabe im Terminal-Fenster dann wie folgt aus.<\/p>\n<div id=\"attachment_2299\" style=\"width: 759px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_GPU_tool.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2299\" class=\"size-full wp-image-2299\" src=\"https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_GPU_tool.jpg\" alt=\"NAT GPU NVIDIA-SMI - tool\" width=\"749\" height=\"210\" srcset=\"https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_GPU_tool.jpg 749w, https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_GPU_tool-300x84.jpg 300w\" sizes=\"(max-width: 749px) 100vw, 749px\" \/><\/a><p id=\"caption-attachment-2299\" class=\"wp-caption-text\">NAT GPU NVIDIA-SMI &#8211; tool<\/p><\/div>\n<h3><span class=\"ez-toc-section\" id=\"Schritt_4_Verifizieren_dass_NAT_das_Tool_sieht\"><\/span>Schritt 4: Verifizieren, dass NAT das Tool sieht<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Jetzt kommt der spannende Teil kennt unser NAT-Setup das neue Tool? Dazu f\u00fchre den folgenden Befehla us.<\/p>\n<p><strong>Befehl:<\/strong> <code>nat info components -t <span class=\"token token\">function<\/span> <span class=\"token token\">|<\/span> <span class=\"token token\">grep<\/span> -i gpu<\/code><\/p>\n<p>Bei mir sah die Ausgabe wie hier nachfolgenden Bild gezeigt aus.<\/p>\n<div id=\"attachment_2301\" style=\"width: 1034px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_GPU_tool_installed.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2301\" class=\"size-large wp-image-2301\" src=\"https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_GPU_tool_installed-1024x158.jpg\" alt=\"NAT GPU NVIDIA-SMI - tool installed\" width=\"1024\" height=\"158\" srcset=\"https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_GPU_tool_installed-1024x158.jpg 1024w, https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_GPU_tool_installed-300x46.jpg 300w, https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_GPU_tool_installed-768x118.jpg 768w, https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_GPU_tool_installed.jpg 1053w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><p id=\"caption-attachment-2301\" class=\"wp-caption-text\">NAT GPU NVIDIA-SMI &#8211; tool installed<\/p><\/div>\n<h3><span class=\"ez-toc-section\" id=\"Schritt_5_Workflow_mit_dem_neuen_Tool_bauen\"><\/span>Schritt 5: Workflow mit dem neuen Tool bauen<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Jetzt um den neuen Workflow zu bauen m\u00fcssen wieder zur\u00fcck in den Ordner configs.<\/p>\n<p><strong>Befehl:<\/strong> <code><span class=\"token token\">cd<\/span> ~\/nat-playground\/configs<\/code><\/p>\n<p>Den neuen Workflow legen wir mit dem folgenden Befehl an.<\/p>\n<p><strong>Befehl:<\/strong> <code><span class=\"token token\">nano<\/span> experiment2_gpu_agent.yml<\/code><\/p>\n<p>Den Workflow selber findest Du wieder auf meinem GitHub Repository. F\u00fcge den Inhalt in die <code>experiment2_gpu_agent.yml<\/code> ein und speichere die Datei anschlie\u00dfend ab.<\/p>\n<p>GitHub Repository: <a href=\"https:\/\/github.com\/custom-build-robots\/nemo-agent-toolkit-examples\/blob\/main\/configs\/experiment2_gpu_agent.yml\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/custom-build-robots\/configs\/experiment2_gpu_agent.yml<\/a><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Schritt_6_Den_ersten_Hardware-Agent_ausfuhren\"><\/span>Schritt 6: Den ersten Hardware-Agent ausf\u00fchren<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Jetzt f\u00fchren wir den Workflow <code>experiment2_gpu_agent.yml<\/code> aus der unser Tool <code>gpu_status<\/code> aufruft und hoffentlich die GPU Auslastung zur\u00fcck gibt.<\/p>\n<p><strong>Befehl:<\/strong> <code>nat run --config_file experiment2_gpu_agent.yml --input \"Wie ist meine GPU aktuell ausgelastet und ist Inferenz-Arbeit am Laufen?\"<\/code><\/p>\n<p>Die Antwort die ich bekommen habe lautete: &#8220;Ja, die GPU ist aktuell stark ausgelastet mit einer Utilization von 92%. Es wird Inferenz-Arbeit durchgef\u00fchrt. Das Memory-Verbrauch betr\u00e4gt nur 15.1%, das Temperatursensor zeigt 38\u00b0C an und der Energieverbrauch betr\u00e4gt 248.77W.&#8221;<\/p>\n<p>Hier noch das passende Bild dazu:<\/p>\n<div id=\"attachment_2304\" style=\"width: 1034px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_GPU_tool_result.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2304\" class=\"size-large wp-image-2304\" src=\"https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_GPU_tool_result-1024x557.jpg\" alt=\"NAT GPU NVIDIA-SMI - tool result\" width=\"1024\" height=\"557\" srcset=\"https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_GPU_tool_result-1024x557.jpg 1024w, https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_GPU_tool_result-300x163.jpg 300w, https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_GPU_tool_result-768x418.jpg 768w, https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_GPU_tool_result-1536x835.jpg 1536w, https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_GPU_tool_result-2048x1114.jpg 2048w, https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_GPU_tool_result-1080x587.jpg 1080w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><p id=\"caption-attachment-2304\" class=\"wp-caption-text\">NAT GPU NVIDIA-SMI &#8211; tool result<\/p><\/div>\n<p>Perfekt, jetzt hast Du Dein eigenes erstes Tool gebaut das auch direkt System-Informationen von Deinem Inferenz-Rechner auslie\u00dft.<\/p>\n<p>Gratulation, jetzt hast Du dein erstes eigenes Tool angelegt.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Agent-Orchestrierung ist konzeptionell genau der Sprung, der aus \u201eLLM-Inferenz&#8221; tats\u00e4chlich \u201eintelligente Anwendungen&#8221; macht. Ein funktionierendes NAT-Setup mit Ollama habe ich mir wie in meinem Blogbeitrag hier &#8220;NeMo Agent Toolkit auf der RTX A6000 Ada \u2013 vom Inferenz-Layer zum Orchestrator-Layer&#8221; beschrieben bereits aufgesetzt. Jetzt m\u00f6chte ich schrittweise von der Basis bis zu komplexen Multi-Agent-Mustern das Vorgehen [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2294,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[162,50],"tags":[1242,1244,1249,1245,1224,1220,1250,306,1243,1222,1176,1248,1247,1246,1251],"class_list":["post-2288","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-large-language-models-en","category-top-story-en","tag-agent-orchestrierung","tag-custom-python-tool","tag-gpu-status","tag-multi-agent","tag-nat","tag-nemo-agent-toolkit","tag-nvidia-smi","tag-ollama-en","tag-react","tag-react-agent","tag-rtx-a6000-ada","tag-sequential-pipeline","tag-supervisor-pattern","tag-tool-beschreibung","tag-workflow-yaml","et-has-post-format-content","et_post_format-et-post-format-standard"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>NeMo Agent Toolkit - GenAI Agent Orchestrierung lokal - Exploring the Future: Inside the AI Box<\/title>\n<meta name=\"description\" content=\"Hands-on NAT-Tutorial: Agent-Orchestrierung verstehen, ReAct-Muster nutzen und ein eigenes Python-Tool f\u00fcr GPU-Auslastung schreiben.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ai-box.eu\/en\/large-language-models-en\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\/2288\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"NeMo Agent Toolkit - GenAI Agent Orchestrierung lokal - Exploring the Future: Inside the AI Box\" \/>\n<meta property=\"og:description\" content=\"Hands-on NAT-Tutorial: Agent-Orchestrierung verstehen, ReAct-Muster nutzen und ein eigenes Python-Tool f\u00fcr GPU-Auslastung schreiben.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ai-box.eu\/en\/large-language-models-en\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\/2288\/\" \/>\n<meta property=\"og:site_name\" content=\"Exploring the Future: Inside the AI Box\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-17T05:05:20+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-17T06:02:46+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_Supervisor_Worker.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2484\" \/>\n\t<meta property=\"og:image:height\" content=\"1195\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Maker\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@Ingmar_Stapel\" \/>\n<meta name=\"twitter:site\" content=\"@Ingmar_Stapel\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Maker\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/ai-box.eu\\\/en\\\/large-language-models-en\\\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\\\/2288\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ai-box.eu\\\/en\\\/large-language-models-en\\\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\\\/2288\\\/\"},\"author\":{\"name\":\"Maker\",\"@id\":\"https:\\\/\\\/ai-box.eu\\\/en\\\/#\\\/schema\\\/person\\\/cc91d08618b3feeef6926591b465eab1\"},\"headline\":\"NeMo Agent Toolkit &#8211; GenAI Agent Orchestrierung lokal\",\"datePublished\":\"2026-05-17T05:05:20+00:00\",\"dateModified\":\"2026-05-17T06:02:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/ai-box.eu\\\/en\\\/large-language-models-en\\\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\\\/2288\\\/\"},\"wordCount\":1244,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/ai-box.eu\\\/en\\\/large-language-models-en\\\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\\\/2288\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/ai-box.eu\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/NAT_Supervisor_Worker.jpg\",\"keywords\":[\"Agent-Orchestrierung\",\"Custom Python Tool\",\"GPU-Status\",\"Multi-Agent\",\"NAT\",\"NeMo Agent Toolkit\",\"nvidia-smi\",\"Ollama\",\"ReAct\",\"ReAct Agent\",\"RTX A6000 Ada\",\"Sequential Pipeline\",\"Supervisor-Pattern\",\"Tool-Beschreibung\",\"Workflow YAML\"],\"articleSection\":[\"Large Language Models\",\"Top story\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/ai-box.eu\\\/en\\\/large-language-models-en\\\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\\\/2288\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/ai-box.eu\\\/en\\\/large-language-models-en\\\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\\\/2288\\\/\",\"url\":\"https:\\\/\\\/ai-box.eu\\\/en\\\/large-language-models-en\\\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\\\/2288\\\/\",\"name\":\"NeMo Agent Toolkit - GenAI Agent Orchestrierung lokal - Exploring the Future: Inside the AI Box\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ai-box.eu\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/ai-box.eu\\\/en\\\/large-language-models-en\\\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\\\/2288\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/ai-box.eu\\\/en\\\/large-language-models-en\\\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\\\/2288\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/ai-box.eu\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/NAT_Supervisor_Worker.jpg\",\"datePublished\":\"2026-05-17T05:05:20+00:00\",\"dateModified\":\"2026-05-17T06:02:46+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/ai-box.eu\\\/en\\\/#\\\/schema\\\/person\\\/cc91d08618b3feeef6926591b465eab1\"},\"description\":\"Hands-on NAT-Tutorial: Agent-Orchestrierung verstehen, ReAct-Muster nutzen und ein eigenes Python-Tool f\u00fcr GPU-Auslastung schreiben.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/ai-box.eu\\\/en\\\/large-language-models-en\\\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\\\/2288\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/ai-box.eu\\\/en\\\/large-language-models-en\\\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\\\/2288\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/ai-box.eu\\\/en\\\/large-language-models-en\\\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\\\/2288\\\/#primaryimage\",\"url\":\"https:\\\/\\\/ai-box.eu\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/NAT_Supervisor_Worker.jpg\",\"contentUrl\":\"https:\\\/\\\/ai-box.eu\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/NAT_Supervisor_Worker.jpg\",\"width\":2484,\"height\":1195,\"caption\":\"Supervisor \\\/ Worker (hierarchisch)\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/ai-box.eu\\\/en\\\/large-language-models-en\\\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\\\/2288\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Start\",\"item\":\"https:\\\/\\\/ai-box.eu\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"NeMo Agent Toolkit &#8211; GenAI Agent Orchestrierung lokal\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/ai-box.eu\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/ai-box.eu\\\/en\\\/\",\"name\":\"Exploring the Future: Inside the AI Box\",\"description\":\"Inside the AI Box, we share our experiences and discoveries in the world of artificial intelligence.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/ai-box.eu\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/ai-box.eu\\\/en\\\/#\\\/schema\\\/person\\\/cc91d08618b3feeef6926591b465eab1\",\"name\":\"Maker\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e96b93fc3c7e50c1f21c5c6b1f146dc4867936141360830b328947b32cacf93a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e96b93fc3c7e50c1f21c5c6b1f146dc4867936141360830b328947b32cacf93a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e96b93fc3c7e50c1f21c5c6b1f146dc4867936141360830b328947b32cacf93a?s=96&d=mm&r=g\",\"caption\":\"Maker\"},\"description\":\"I live in Bavaria near Munich. In my head I always have many topics and try out especially in the field of Internet new media much in my spare time. I write on the blog because it makes me fun to report about the things that inspire me. I am happy about every comment, about suggestion and very about questions.\",\"sameAs\":[\"https:\\\/\\\/ai-box.eu\"],\"url\":\"https:\\\/\\\/ai-box.eu\\\/en\\\/author\\\/ingmars\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"NeMo Agent Toolkit - GenAI Agent Orchestrierung lokal - Exploring the Future: Inside the AI Box","description":"Hands-on NAT-Tutorial: Agent-Orchestrierung verstehen, ReAct-Muster nutzen und ein eigenes Python-Tool f\u00fcr GPU-Auslastung schreiben.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/ai-box.eu\/en\/large-language-models-en\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\/2288\/","og_locale":"en_US","og_type":"article","og_title":"NeMo Agent Toolkit - GenAI Agent Orchestrierung lokal - Exploring the Future: Inside the AI Box","og_description":"Hands-on NAT-Tutorial: Agent-Orchestrierung verstehen, ReAct-Muster nutzen und ein eigenes Python-Tool f\u00fcr GPU-Auslastung schreiben.","og_url":"https:\/\/ai-box.eu\/en\/large-language-models-en\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\/2288\/","og_site_name":"Exploring the Future: Inside the AI Box","article_published_time":"2026-05-17T05:05:20+00:00","article_modified_time":"2026-05-17T06:02:46+00:00","og_image":[{"width":2484,"height":1195,"url":"https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_Supervisor_Worker.jpg","type":"image\/jpeg"}],"author":"Maker","twitter_card":"summary_large_image","twitter_creator":"@Ingmar_Stapel","twitter_site":"@Ingmar_Stapel","twitter_misc":{"Written by":"Maker","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ai-box.eu\/en\/large-language-models-en\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\/2288\/#article","isPartOf":{"@id":"https:\/\/ai-box.eu\/en\/large-language-models-en\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\/2288\/"},"author":{"name":"Maker","@id":"https:\/\/ai-box.eu\/en\/#\/schema\/person\/cc91d08618b3feeef6926591b465eab1"},"headline":"NeMo Agent Toolkit &#8211; GenAI Agent Orchestrierung lokal","datePublished":"2026-05-17T05:05:20+00:00","dateModified":"2026-05-17T06:02:46+00:00","mainEntityOfPage":{"@id":"https:\/\/ai-box.eu\/en\/large-language-models-en\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\/2288\/"},"wordCount":1244,"commentCount":0,"image":{"@id":"https:\/\/ai-box.eu\/en\/large-language-models-en\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\/2288\/#primaryimage"},"thumbnailUrl":"https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_Supervisor_Worker.jpg","keywords":["Agent-Orchestrierung","Custom Python Tool","GPU-Status","Multi-Agent","NAT","NeMo Agent Toolkit","nvidia-smi","Ollama","ReAct","ReAct Agent","RTX A6000 Ada","Sequential Pipeline","Supervisor-Pattern","Tool-Beschreibung","Workflow YAML"],"articleSection":["Large Language Models","Top story"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/ai-box.eu\/en\/large-language-models-en\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\/2288\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/ai-box.eu\/en\/large-language-models-en\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\/2288\/","url":"https:\/\/ai-box.eu\/en\/large-language-models-en\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\/2288\/","name":"NeMo Agent Toolkit - GenAI Agent Orchestrierung lokal - Exploring the Future: Inside the AI Box","isPartOf":{"@id":"https:\/\/ai-box.eu\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/ai-box.eu\/en\/large-language-models-en\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\/2288\/#primaryimage"},"image":{"@id":"https:\/\/ai-box.eu\/en\/large-language-models-en\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\/2288\/#primaryimage"},"thumbnailUrl":"https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_Supervisor_Worker.jpg","datePublished":"2026-05-17T05:05:20+00:00","dateModified":"2026-05-17T06:02:46+00:00","author":{"@id":"https:\/\/ai-box.eu\/en\/#\/schema\/person\/cc91d08618b3feeef6926591b465eab1"},"description":"Hands-on NAT-Tutorial: Agent-Orchestrierung verstehen, ReAct-Muster nutzen und ein eigenes Python-Tool f\u00fcr GPU-Auslastung schreiben.","breadcrumb":{"@id":"https:\/\/ai-box.eu\/en\/large-language-models-en\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\/2288\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ai-box.eu\/en\/large-language-models-en\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\/2288\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ai-box.eu\/en\/large-language-models-en\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\/2288\/#primaryimage","url":"https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_Supervisor_Worker.jpg","contentUrl":"https:\/\/ai-box.eu\/wp-content\/uploads\/2026\/05\/NAT_Supervisor_Worker.jpg","width":2484,"height":1195,"caption":"Supervisor \/ Worker (hierarchisch)"},{"@type":"BreadcrumbList","@id":"https:\/\/ai-box.eu\/en\/large-language-models-en\/nemo-agent-toolkit-genai-agent-orchestrierung-lokal\/2288\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Start","item":"https:\/\/ai-box.eu\/en\/"},{"@type":"ListItem","position":2,"name":"NeMo Agent Toolkit &#8211; GenAI Agent Orchestrierung lokal"}]},{"@type":"WebSite","@id":"https:\/\/ai-box.eu\/en\/#website","url":"https:\/\/ai-box.eu\/en\/","name":"Exploring the Future: Inside the AI Box","description":"Inside the AI Box, we share our experiences and discoveries in the world of artificial intelligence.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ai-box.eu\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/ai-box.eu\/en\/#\/schema\/person\/cc91d08618b3feeef6926591b465eab1","name":"Maker","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/e96b93fc3c7e50c1f21c5c6b1f146dc4867936141360830b328947b32cacf93a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/e96b93fc3c7e50c1f21c5c6b1f146dc4867936141360830b328947b32cacf93a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e96b93fc3c7e50c1f21c5c6b1f146dc4867936141360830b328947b32cacf93a?s=96&d=mm&r=g","caption":"Maker"},"description":"I live in Bavaria near Munich. In my head I always have many topics and try out especially in the field of Internet new media much in my spare time. I write on the blog because it makes me fun to report about the things that inspire me. I am happy about every comment, about suggestion and very about questions.","sameAs":["https:\/\/ai-box.eu"],"url":"https:\/\/ai-box.eu\/en\/author\/ingmars\/"}]}},"_links":{"self":[{"href":"https:\/\/ai-box.eu\/en\/wp-json\/wp\/v2\/posts\/2288","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ai-box.eu\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ai-box.eu\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ai-box.eu\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ai-box.eu\/en\/wp-json\/wp\/v2\/comments?post=2288"}],"version-history":[{"count":6,"href":"https:\/\/ai-box.eu\/en\/wp-json\/wp\/v2\/posts\/2288\/revisions"}],"predecessor-version":[{"id":2308,"href":"https:\/\/ai-box.eu\/en\/wp-json\/wp\/v2\/posts\/2288\/revisions\/2308"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ai-box.eu\/en\/wp-json\/wp\/v2\/media\/2294"}],"wp:attachment":[{"href":"https:\/\/ai-box.eu\/en\/wp-json\/wp\/v2\/media?parent=2288"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ai-box.eu\/en\/wp-json\/wp\/v2\/categories?post=2288"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ai-box.eu\/en\/wp-json\/wp\/v2\/tags?post=2288"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}