{"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\/it\/docs\/secure-code-execution-of-smolagents\/","title":{"rendered":"Esecuzione sicura del codice di Smolagents"},"content":{"rendered":"<p>Se siete alle prime armi con la costruzione di agenti, assicuratevi di leggere prima la sezione\u00a0<a href=\"https:\/\/huggingface.co\/docs\/smolagents\/conceptual_guides\/intro_agents\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">introduzione agli agenti<\/a>\u00a0e il\u00a0<a href=\"https:\/\/huggingface.co\/docs\/smolagents\/guided_tour\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">visita guidata agli smolagent<\/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>Codice agenti<\/h3>\n\n\n\n<p><a href=\"https:\/\/huggingface.co\/papers\/2402.01030\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Multiplo<\/a>\u00a0<a href=\"https:\/\/huggingface.co\/papers\/2411.01747\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">ricerca<\/a>\u00a0<a href=\"https:\/\/huggingface.co\/papers\/2401.00812\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">documenti<\/a>\u00a0hanno dimostrato che il fatto che l'LLM scriva le sue azioni (le chiamate agli strumenti) in codice \u00e8 molto meglio dell'attuale formato standard per le chiamate agli strumenti, che in tutto il settore ha diverse sfumature di \"scrittura delle azioni come un JSON di nomi di strumenti e argomenti da usare\".<\/p>\n\n\n\n<p>Perch\u00e9 il codice \u00e8 migliore? Perch\u00e9 abbiamo creato i nostri linguaggi di codice appositamente per esprimere al meglio le azioni eseguite da un computer. Se gli snippet JSON fossero un modo migliore, questo pacchetto sarebbe stato scritto in snippet JSON e il diavolo starebbe ridendo di noi.<\/p>\n\n\n\n<p>Il codice \u00e8 solo un modo migliore per esprimere le azioni su un computer. \u00c8 migliore:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Compostezza:<\/strong>\u00a0\u00e8 possibile annidare le azioni JSON l'una nell'altra, o definire un insieme di azioni JSON da riutilizzare in seguito, nello stesso modo in cui si pu\u00f2 definire una funzione python?<\/li>\n\n\n\n<li><strong>Gestione degli oggetti:<\/strong>\u00a0come si memorizza l'output di un'azione come\u00a0<code>generare_immagine<\/code>\u00a0in JSON?<\/li>\n\n\n\n<li><strong>Generalit\u00e0:<\/strong>\u00a0Il codice \u00e8 costruito per esprimere semplicemente tutto ci\u00f2 che si pu\u00f2 far fare a un computer.<\/li>\n\n\n\n<li><strong>Rappresentazione nel corpus di formazione LLM:<\/strong>\u00a0perch\u00e9 non sfruttare questa benedizione del cielo che ha gi\u00e0 incluso un sacco di azioni di qualit\u00e0 nel corpus formativo di LLM?<\/li>\n<\/ul>\n\n\n\n<p>Questo \u00e8 illustrato nella figura seguente, tratta da\u00a0<a href=\"https:\/\/huggingface.co\/papers\/2402.01030\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Le azioni del codice eseguibile implicano agenti LLM migliori<\/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>Per questo motivo abbiamo posto l'accento sulla proposta di agenti di codice, in questo caso agenti python, il che significava impegnarsi maggiormente nella costruzione di interpreti python sicuri.<\/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>Interprete python locale<\/h3>\n\n\n\n<p>Per impostazione predefinita, l'opzione&nbsp;<code>CodiceAgente<\/code>&nbsp;esegue il codice generato da LLM nel vostro ambiente. Questa esecuzione non viene eseguita dall'interprete Python standard: abbiamo ricostruito un interprete pi\u00f9 sicuro.&nbsp;<code>Interprete localePython<\/code>&nbsp;da zero. Questo interprete \u00e8 progettato per la sicurezza da:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Limitare le importazioni a un elenco esplicitamente passato dall'utente<\/li>\n\n\n\n<li>Limitare il numero di operazioni per evitare loop infiniti e l'aumento delle risorse.<\/li>\n\n\n\n<li>Non eseguir\u00e0 alcuna operazione che non sia predefinita.<\/li>\n<\/ul>\n\n\n\n<p>Lo abbiamo utilizzato in molti casi d'uso, senza mai osservare alcun danno all'ambiente.<\/p>\n\n\n\n<p>Tuttavia questa soluzione non \u00e8 a prova di bomba: si potrebbero immaginare occasioni in cui LLM ottimizzati per azioni maligne potrebbero comunque danneggiare l'ambiente. Per esempio, se si \u00e8 permesso a un pacchetto innocuo come&nbsp;<code>Cuscino<\/code>&nbsp;per elaborare le immagini, LLM potrebbe generare migliaia di salvataggi di immagini che riempirebbero il disco rigido. Non \u00e8 certo probabile se avete scelto voi stessi il motore LLM, ma potrebbe accadere.<\/p>\n\n\n\n<p>Per questo motivo, se volete essere ancora pi\u00f9 prudenti, potete utilizzare l'opzione di esecuzione di codice remoto descritta di seguito.<\/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>Esecutore di codice E2B<\/h3>\n\n\n\n<p>Per ottenere la massima sicurezza, \u00e8 possibile utilizzare la nostra integrazione con E2B per eseguire il codice in un ambiente sandbox. Si tratta di un servizio di esecuzione remota che esegue il codice in un contenitore isolato, rendendo impossibile che il codice influisca sull'ambiente locale.<\/p>\n\n\n\n<p>A tal fine, \u00e8 necessario configurare il proprio account E2B e impostare il proprio account\u00a0<code>E2B_API_KEY<\/code>\u00a0nelle variabili d'ambiente. Andate a\u00a0<a href=\"https:\/\/e2b.dev\/docs\/quickstart\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Documentazione di avvio rapido di E2B<\/a>\u00a0per maggiori informazioni.<\/p>\n\n\n\n<p>Quindi si pu\u00f2 installare con&nbsp;<code>pip installare e2b-code-interpreter python-dotenv<\/code>.<\/p>\n\n\n\n<p>Ora siete pronti!<\/p>\n\n\n\n<p>Per impostare l'esecutore del codice su E2B, \u00e8 sufficiente passare il flag&nbsp;<code>use_e2b_executor=True<\/code>&nbsp;quando si inizializzano i file&nbsp;<code>CodiceAgente<\/code>. Si noti che \u00e8 necessario aggiungere tutte le dipendenze dello strumento in&nbsp;<code>importazioni_autorizzate_aggiuntive<\/code>in modo che l'esecutore li installi.<\/p>\n\n\n\n<p>Copiato<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">da smolagents import CodeAgent, VisitWebpageTool, HfApiModel\nagent = CodeAgent(\n    strumenti = [VisitWebpageTool()],\n    model=HfApiModel(),\n    additional_authorized_imports=[\"requests\", \"markdownify\"],\n    use_e2b_executor=True\n)\n\nagent.run(\"Qual era l'animale domestico preferito da Abraham Lincoln?\")<\/pre>\n\n\n\n<p>Al momento l'esecuzione del codice E2B non \u00e8 compatibile con gli agenti multipli, perch\u00e9 un agente che chiama un blob di codice che dovrebbe essere eseguito in remoto \u00e8 un casino. Ma stiamo lavorando per aggiungerlo!<\/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":"4364","reactions":{"happy":"0","normal":"0","sad":"0"},"author_info":{"name":"smolagents","author_nicename":"wd-gstargmail-com","author_url":"https:\/\/smolagents.org\/it\/author\/wd-gstargmail-com\/"},"doc_category_info":[{"term_name":"Examples","term_url":"https:\/\/smolagents.org\/it\/docs-category\/examples\/"}],"doc_tag_info":[],"_links":{"self":[{"href":"https:\/\/smolagents.org\/it\/wp-json\/wp\/v2\/docs\/595","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/smolagents.org\/it\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/smolagents.org\/it\/wp-json\/wp\/v2\/types\/docs"}],"author":[{"embeddable":true,"href":"https:\/\/smolagents.org\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/smolagents.org\/it\/wp-json\/wp\/v2\/comments?post=595"}],"version-history":[{"count":1,"href":"https:\/\/smolagents.org\/it\/wp-json\/wp\/v2\/docs\/595\/revisions"}],"predecessor-version":[{"id":597,"href":"https:\/\/smolagents.org\/it\/wp-json\/wp\/v2\/docs\/595\/revisions\/597"}],"wp:attachment":[{"href":"https:\/\/smolagents.org\/it\/wp-json\/wp\/v2\/media?parent=595"}],"wp:term":[{"taxonomy":"doc_category","embeddable":true,"href":"https:\/\/smolagents.org\/it\/wp-json\/wp\/v2\/doc_category?post=595"},{"taxonomy":"doc_tag","embeddable":true,"href":"https:\/\/smolagents.org\/it\/wp-json\/wp\/v2\/doc_tag?post=595"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}