{"id":595,"date":"2025-01-11T15:26:47","date_gmt":"2025-01-11T15:26:47","guid":{"rendered":"https:\/\/smolagents.org\/?post_type=docs&#038;p=595"},"modified":"2025-01-11T15:41:43","modified_gmt":"2025-01-11T15:41:43","password":"","slug":"secure-code-execution-of-smolagents","status":"publish","type":"docs","link":"https:\/\/smolagents.org\/de\/docs\/secure-code-execution-of-smolagents\/","title":{"rendered":"Sichere Code-Ausf\u00fchrung von Smolagents"},"content":{"rendered":"<p>Wenn Sie neu im Bereich der Bauagenten sind, sollten Sie zuerst die\u00a0<a href=\"https:\/\/huggingface.co\/docs\/smolagents\/conceptual_guides\/intro_agents\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Intro zu Agenten<\/a>\u00a0und die\u00a0<a href=\"https:\/\/huggingface.co\/docs\/smolagents\/guided_tour\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">gef\u00fchrte Besichtigung von smolagents<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/huggingface.co\/docs\/smolagents\/tutorials\/secure_code_execution#code-agents\" target=\"_blank\" rel=\"noopener\"><\/a>Code-Agenten<\/h3>\n\n\n\n<p><a href=\"https:\/\/huggingface.co\/papers\/2402.01030\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Mehrere<\/a>\u00a0<a href=\"https:\/\/huggingface.co\/papers\/2411.01747\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Forschung<\/a>\u00a0<a href=\"https:\/\/huggingface.co\/papers\/2401.00812\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Papiere<\/a>\u00a0haben gezeigt, dass es viel besser ist, wenn der LLM seine Aktionen (die Werkzeugaufrufe) in Code schreibt, als das derzeitige Standardformat f\u00fcr Werkzeugaufrufe, das in der Branche verschiedene Schattierungen von \"Schreiben von Aktionen als JSON von Werkzeugnamen und zu verwendenden Argumenten\" aufweist.<\/p>\n\n\n\n<p>Warum ist Code besser? Nun, weil wir unsere Codesprachen speziell daf\u00fcr entwickelt haben, dass sie die von einem Computer ausgef\u00fchrten Aktionen gut ausdr\u00fccken k\u00f6nnen. Wenn JSON-Snippets ein besserer Weg w\u00e4re, w\u00e4re dieses Paket in JSON-Snippets geschrieben worden und der Teufel w\u00fcrde uns auslachen.<\/p>\n\n\n\n<p>Code ist einfach eine bessere M\u00f6glichkeit, Aktionen auf einem Computer auszudr\u00fccken. Er ist besser:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Zusammensetzbarkeit:<\/strong>\u00a0K\u00f6nnen Sie JSON-Aktionen ineinander verschachteln oder eine Reihe von JSON-Aktionen definieren, um sie sp\u00e4ter wiederzuverwenden, so wie Sie eine Python-Funktion definieren k\u00f6nnen?<\/li>\n\n\n\n<li><strong>Objektverwaltung:<\/strong>\u00a0wie speichert man die Ausgabe einer Aktion wie\u00a0<code>generate_image<\/code>\u00a0in JSON?<\/li>\n\n\n\n<li><strong>Allgemeinheit:<\/strong>\u00a0Der Code ist so aufgebaut, dass er einfach alles ausdr\u00fccken kann, was man einen Computer machen lassen kann.<\/li>\n\n\n\n<li><strong>Repr\u00e4sentation im LLM-Trainingskorpus:<\/strong>\u00a0Warum sollte man sich nicht den Segen des Himmels zunutze machen, dass bereits zahlreiche hochwertige Klagen in den Korpus der LLM-Ausbildung aufgenommen wurden?<\/li>\n<\/ul>\n\n\n\n<p>Dies wird in der folgenden Abbildung veranschaulicht, die aus\u00a0<a href=\"https:\/\/huggingface.co\/papers\/2402.01030\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Ausf\u00fchrbare Code-Aktionen f\u00fchren zu besseren LLM-Agenten<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"2716\" height=\"1154\" src=\"https:\/\/smolagents.org\/wp-content\/uploads\/2025\/01\/code_vs_json_actions-1.png\" alt=\"\" class=\"wp-image-596\" srcset=\"https:\/\/smolagents.org\/wp-content\/uploads\/2025\/01\/code_vs_json_actions-1.png 2716w, https:\/\/smolagents.org\/wp-content\/uploads\/2025\/01\/code_vs_json_actions-1-300x127.png 300w, https:\/\/smolagents.org\/wp-content\/uploads\/2025\/01\/code_vs_json_actions-1-1024x435.png 1024w, https:\/\/smolagents.org\/wp-content\/uploads\/2025\/01\/code_vs_json_actions-1-768x326.png 768w, https:\/\/smolagents.org\/wp-content\/uploads\/2025\/01\/code_vs_json_actions-1-1536x653.png 1536w, https:\/\/smolagents.org\/wp-content\/uploads\/2025\/01\/code_vs_json_actions-1-2048x870.png 2048w, https:\/\/smolagents.org\/wp-content\/uploads\/2025\/01\/code_vs_json_actions-1-18x8.png 18w, https:\/\/smolagents.org\/wp-content\/uploads\/2025\/01\/code_vs_json_actions-1-360x153.png 360w\" sizes=\"auto, (max-width: 2716px) 100vw, 2716px\" \/><\/figure>\n\n\n\n<p>Deshalb haben wir uns darauf konzentriert, Code-Agenten vorzuschlagen, in diesem Fall Python-Agenten, was bedeutete, dass wir gr\u00f6\u00dfere Anstrengungen unternahmen, um sichere Python-Interpreter zu entwickeln.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/huggingface.co\/docs\/smolagents\/tutorials\/secure_code_execution#local-python-interpreter\" target=\"_blank\" rel=\"noopener\"><\/a>Lokaler Python-Interpreter<\/h3>\n\n\n\n<p>Standardm\u00e4\u00dfig wird die&nbsp;<code>CodeAgent<\/code>&nbsp;f\u00fchrt LLM-generierten Code in Ihrer Umgebung aus. Diese Ausf\u00fchrung erfolgt nicht durch den normalen Python-Interpreter: Wir haben einen sichereren&nbsp;<code>LocalPythonInterpreter<\/code>&nbsp;von Grund auf neu entwickelt. Dieser Interpreter ist f\u00fcr die Sicherheit von konzipiert:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Beschr\u00e4nkung der Importe auf eine vom Benutzer ausdr\u00fccklich \u00fcbergebene Liste<\/li>\n\n\n\n<li>Begrenzung der Anzahl der Operationen, um Endlosschleifen und Ressourcen\u00fcberlastung zu vermeiden.<\/li>\n\n\n\n<li>F\u00fchrt keine Operationen durch, die nicht vordefiniert sind.<\/li>\n<\/ul>\n\n\n\n<p>Wir haben dies in vielen Anwendungsf\u00e4llen eingesetzt, ohne jemals eine Sch\u00e4digung der Umwelt zu beobachten.<\/p>\n\n\n\n<p>Diese L\u00f6sung ist jedoch nicht wasserdicht: Es sind F\u00e4lle denkbar, in denen LLMs, die auf b\u00f6sartige Aktionen abgestimmt sind, Ihrer Umgebung dennoch schaden k\u00f6nnen. Zum Beispiel, wenn Sie ein harmloses Paket wie&nbsp;<code>Kopfkissen<\/code>&nbsp;um Bilder zu verarbeiten, k\u00f6nnte der LLM Tausende von gespeicherten Bildern erzeugen, die Ihre Festplatte aufbl\u00e4hen. Es ist sicherlich nicht wahrscheinlich, wenn Sie die LLM-Engine selbst ausgew\u00e4hlt haben, aber es k\u00f6nnte passieren.<\/p>\n\n\n\n<p>Wenn Sie also besonders vorsichtig sein wollen, k\u00f6nnen Sie die unten beschriebene Option zur Remotecodeausf\u00fchrung verwenden.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/huggingface.co\/docs\/smolagents\/tutorials\/secure_code_execution#e2b-code-executor\" target=\"_blank\" rel=\"noopener\"><\/a>E2B-Code-Ausf\u00fchrer<\/h3>\n\n\n\n<p>F\u00fcr maximale Sicherheit k\u00f6nnen Sie unsere Integration mit E2B nutzen, um Code in einer Sandbox-Umgebung auszuf\u00fchren. Dabei handelt es sich um einen Fernausf\u00fchrungsdienst, der Ihren Code in einem isolierten Container ausf\u00fchrt, so dass es unm\u00f6glich ist, dass der Code Ihre lokale Umgebung beeintr\u00e4chtigt.<\/p>\n\n\n\n<p>Hierf\u00fcr m\u00fcssen Sie Ihr E2B-Konto einrichten und Ihre\u00a0<code>E2B_API_KEY<\/code>\u00a0in Ihren Umgebungsvariablen. Gehen Sie zu\u00a0<a href=\"https:\/\/e2b.dev\/docs\/quickstart\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">E2Bs Schnellstart-Dokumentation<\/a>\u00a0f\u00fcr weitere Informationen.<\/p>\n\n\n\n<p>Dann k\u00f6nnen Sie es installieren mit&nbsp;<code>pip install e2b-code-interpreter python-dotenv<\/code>.<\/p>\n\n\n\n<p>Jetzt sind Sie bereit!<\/p>\n\n\n\n<p>Um den Code-Executor auf E2B zu setzen, \u00fcbergeben Sie einfach das Flag&nbsp;<code>use_e2b_executor=True<\/code>&nbsp;bei der Initialisierung Ihrer&nbsp;<code>CodeAgent<\/code>. Beachten Sie, dass Sie alle Abh\u00e4ngigkeiten des Werkzeugs in&nbsp;<code>zus\u00e4tzliche_autorisierte_Importe<\/code>damit der Executor sie installiert.<\/p>\n\n\n\n<p>Kopiert<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">von smolagents import CodeAgent, VisitWebpageTool, HfApiModel\nagent = CodeAgent(\n    tools = [VisitWebpageTool()],\n    model=HfApiModel(),\n    additional_authorized_imports=[\"requests\", \"markdownify\"],\n    use_e2b_executor=True\n)\n\nagent.run(\"Was war das bevorzugte Haustier von Abraham Lincoln?\")<\/pre>\n\n\n\n<p>Die Ausf\u00fchrung von E2B-Code ist im Moment nicht mit Multi-Agenten kompatibel - denn wenn ein Agent einen Code-Blob aufruft, der remote ausgef\u00fchrt werden soll, ist das ein Chaos. Aber wir arbeiten daran, es hinzuzuf\u00fcgen!<\/p>","protected":false},"excerpt":{"rendered":"<p>If you\u2019re new to building agents, make sure to first read the\u00a0intro to agents\u00a0and the\u00a0guided tour of smolagents. Code agents Multiple\u00a0research\u00a0papers\u00a0have shown that having the LLM write its actions (the tool calls) in code is much better than the current standard format for tool calling, which is across the industry different shades of \u201cwriting actions&#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":[10],"doc_tag":[],"class_list":["post-595","docs","type-docs","status-publish","hentry","doc_category-examples"],"year_month":"2026-04","word_count":647,"total_views":"4136","reactions":{"happy":"0","normal":"0","sad":"0"},"author_info":{"name":"smolagents","author_nicename":"wd-gstargmail-com","author_url":"https:\/\/smolagents.org\/de\/author\/wd-gstargmail-com\/"},"doc_category_info":[{"term_name":"Examples","term_url":"https:\/\/smolagents.org\/de\/docs-category\/examples\/"}],"doc_tag_info":[],"_links":{"self":[{"href":"https:\/\/smolagents.org\/de\/wp-json\/wp\/v2\/docs\/595","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=595"}],"version-history":[{"count":1,"href":"https:\/\/smolagents.org\/de\/wp-json\/wp\/v2\/docs\/595\/revisions"}],"predecessor-version":[{"id":597,"href":"https:\/\/smolagents.org\/de\/wp-json\/wp\/v2\/docs\/595\/revisions\/597"}],"wp:attachment":[{"href":"https:\/\/smolagents.org\/de\/wp-json\/wp\/v2\/media?parent=595"}],"wp:term":[{"taxonomy":"doc_category","embeddable":true,"href":"https:\/\/smolagents.org\/de\/wp-json\/wp\/v2\/doc_category?post=595"},{"taxonomy":"doc_tag","embeddable":true,"href":"https:\/\/smolagents.org\/de\/wp-json\/wp\/v2\/doc_tag?post=595"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}