<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="it">
	<id>https://wiki.mindmaker.it/index.php?action=history&amp;feed=atom&amp;title=Output_Strutturato%2C_Function_Calling_e_Agenti</id>
	<title>Output Strutturato, Function Calling e Agenti - Cronologia</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.mindmaker.it/index.php?action=history&amp;feed=atom&amp;title=Output_Strutturato%2C_Function_Calling_e_Agenti"/>
	<link rel="alternate" type="text/html" href="https://wiki.mindmaker.it/index.php?title=Output_Strutturato,_Function_Calling_e_Agenti&amp;action=history"/>
	<updated>2026-05-01T09:40:33Z</updated>
	<subtitle>Cronologia della pagina su questo sito</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.mindmaker.it/index.php?title=Output_Strutturato,_Function_Calling_e_Agenti&amp;diff=4683&amp;oldid=prev</id>
		<title>Mindmakerbot il 17:43, 18 dic 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.mindmaker.it/index.php?title=Output_Strutturato,_Function_Calling_e_Agenti&amp;diff=4683&amp;oldid=prev"/>
		<updated>2024-12-18T17:43:47Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;it&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Versione meno recente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versione delle 17:43, 18 dic 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l277&quot;&gt;Riga 277:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Riga 277:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Garantire che tutte le informazioni necessarie vengano estratte dall&amp;#039;email&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Garantire che tutte le informazioni necessarie vengano estratte dall&amp;#039;email&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Si richiede di implementare lo schema delle funzioni seguendo il formato OpenAI per il Function Calling.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Si richiede di implementare lo schema delle funzioni seguendo il formato OpenAI per il Function Calling.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{#seo:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|title=Structured Output, Function Calling and Agents&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|title_mode=append&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|keywords=output strutturato, function calling, agenti AI, modelli di linguaggio, linguaggio naturale, JSON, API, integrazione software, intent detection, strumenti, tools&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|description=Questa pubblicazione esplora l&#039;output strutturato, il function calling e gli agenti AI nei modelli di linguaggio, mostrando come queste tecnologie consentono interazioni avanzate con i sistemi software.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Mindmakerbot</name></author>
	</entry>
	<entry>
		<id>https://wiki.mindmaker.it/index.php?title=Output_Strutturato,_Function_Calling_e_Agenti&amp;diff=4681&amp;oldid=prev</id>
		<title>Alesaccoia: /* Definizione di Agenti AI (al 2024) */</title>
		<link rel="alternate" type="text/html" href="https://wiki.mindmaker.it/index.php?title=Output_Strutturato,_Function_Calling_e_Agenti&amp;diff=4681&amp;oldid=prev"/>
		<updated>2024-12-18T17:21:05Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Definizione di Agenti AI (al 2024)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;it&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Versione meno recente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versione delle 17:21, 18 dic 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l220&quot;&gt;Riga 220:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Riga 220:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Si invita a testare esternsivamente il sistema, anche con domande &amp;#039;&amp;#039;&amp;#039;incomplete.&amp;#039;&amp;#039;&amp;#039; Si ricorda che in un sistema &amp;quot;reale&amp;quot;, a ogni interazione che richiede l&amp;#039;uso di un &amp;#039;&amp;#039;&amp;#039;tool, viene effettuata una chiamata API o chiamata una funzione&amp;#039;&amp;#039;&amp;#039;.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Si invita a testare esternsivamente il sistema, anche con domande &amp;#039;&amp;#039;&amp;#039;incomplete.&amp;#039;&amp;#039;&amp;#039; Si ricorda che in un sistema &amp;quot;reale&amp;quot;, a ogni interazione che richiede l&amp;#039;uso di un &amp;#039;&amp;#039;&amp;#039;tool, viene effettuata una chiamata API o chiamata una funzione&amp;#039;&amp;#039;&amp;#039;.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Definizione di Agenti AI &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(&lt;/del&gt;al &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;2024) &lt;/del&gt;===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Definizione di Agenti AI&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, relativamente &lt;/ins&gt;al &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Function Calling e l&#039;uso di Tools &lt;/ins&gt;===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In questo contesto, gli Agenti AI sono sistemi basati su modelli di linguaggio che utilizzano il &amp;#039;&amp;#039;&amp;#039;Function Calling&amp;#039;&amp;#039;&amp;#039; per interagire con funzioni e strumenti esterni. Questa capacità permette agli agenti di eseguire azioni concrete (come interrogare database, chiamare API o manipolare dati) e di recuperare informazioni addizionali prima di generare una risposta. A differenza di un semplice modello di linguaggio che può solo generare testo, un Agente AI può interpretare l&amp;#039;intenzione (&amp;#039;&amp;#039;&amp;#039;intent)&amp;#039;&amp;#039;&amp;#039; dell&amp;#039;utente, selezionare e chiamare le funzioni appropriate, e orchestrare una serie di operazioni per raggiungere un obiettivo specifico.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In questo contesto, gli Agenti AI sono sistemi basati su modelli di linguaggio che utilizzano il &amp;#039;&amp;#039;&amp;#039;Function Calling&amp;#039;&amp;#039;&amp;#039; per interagire con funzioni e strumenti esterni. Questa capacità permette agli agenti di eseguire azioni concrete (come interrogare database, chiamare API o manipolare dati) e di recuperare informazioni addizionali prima di generare una risposta. A differenza di un semplice modello di linguaggio che può solo generare testo, un Agente AI può interpretare l&amp;#039;intenzione (&amp;#039;&amp;#039;&amp;#039;intent)&amp;#039;&amp;#039;&amp;#039; dell&amp;#039;utente, selezionare e chiamare le funzioni appropriate, e orchestrare una serie di operazioni per raggiungere un obiettivo specifico.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Alesaccoia</name></author>
	</entry>
	<entry>
		<id>https://wiki.mindmaker.it/index.php?title=Output_Strutturato,_Function_Calling_e_Agenti&amp;diff=4679&amp;oldid=prev</id>
		<title>Alesaccoia: Creata pagina con &quot;= Output Strutturato nei Modelli di Linguaggio = L&#039;output strutturato rappresenta la capacità di un modello di linguaggio di generare risposte in formati predefiniti e organizzati, come JSON, XML, o altri schemi specifici. Questa caratteristica è fondamentale per l&#039;&#039;&#039;&#039;integrazione dei LLM in sistemi software.&#039;&#039;&#039;  Un primo esempio di output strutturato viene dato nel seguente prompt:  Estrai le seguenti informazioni dal testo in formato JSON:  Mario Rossi lavora come sv...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.mindmaker.it/index.php?title=Output_Strutturato,_Function_Calling_e_Agenti&amp;diff=4679&amp;oldid=prev"/>
		<updated>2024-12-18T17:19:20Z</updated>

		<summary type="html">&lt;p&gt;Creata pagina con &amp;quot;= Output Strutturato nei Modelli di Linguaggio = L&amp;#039;output strutturato rappresenta la capacità di un modello di linguaggio di generare risposte in formati predefiniti e organizzati, come JSON, XML, o altri schemi specifici. Questa caratteristica è fondamentale per l&amp;#039;&amp;#039;&amp;#039;&amp;#039;integrazione dei LLM in sistemi software.&amp;#039;&amp;#039;&amp;#039;  Un primo esempio di output strutturato viene dato nel seguente prompt:  Estrai le seguenti informazioni dal testo in formato JSON:  Mario Rossi lavora come sv...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nuova pagina&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Output Strutturato nei Modelli di Linguaggio =&lt;br /&gt;
L&amp;#039;output strutturato rappresenta la capacità di un modello di linguaggio di generare risposte in formati predefiniti e organizzati, come JSON, XML, o altri schemi specifici. Questa caratteristica è fondamentale per l&amp;#039;&amp;#039;&amp;#039;&amp;#039;integrazione dei LLM in sistemi software.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Un primo esempio di output strutturato viene dato nel seguente prompt:&lt;br /&gt;
 Estrai le seguenti informazioni dal testo in formato JSON:&lt;br /&gt;
 Mario Rossi lavora come sviluppatore software presso TechCorp e può essere contattato all&amp;#039;email mario.rossi@google.com&lt;br /&gt;
Un modello di Linguaggio risponderà con qualcosa del genere:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;nome&amp;quot;: &amp;quot;Mario Rossi&amp;quot;,&lt;br /&gt;
   &amp;quot;professione&amp;quot;: &amp;quot;sviluppatore software&amp;quot;,&lt;br /&gt;
   &amp;quot;azienda&amp;quot;: &amp;quot;TechCorp&amp;quot;,&lt;br /&gt;
   &amp;quot;email&amp;quot;: &amp;quot;mario.rossi@example.com&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
Si invita a provare, per esempio, il seguente prompt:&lt;br /&gt;
 Analizza il seguente testo e fornisci un&amp;#039;analisi strutturata in JSON che includa:&lt;br /&gt;
 - Sentimento generale (positivo/negativo/neutro)&lt;br /&gt;
 - Parole chiave emotive&lt;br /&gt;
 - Punteggio di intensità (1-5)&lt;br /&gt;
 - Suggerimenti per migliorare il tono&lt;br /&gt;
 &lt;br /&gt;
 Testo: &amp;quot;Il servizio clienti è stato terribilmente lento e il personale sembrava disinteressato. &lt;br /&gt;
 Almeno il prodotto funziona bene, ma non credo che tornerò in questo negozio.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Fornire la struttura direttamente nel prompt ===&lt;br /&gt;
Per facilitare l&amp;#039;incorporazione e delle risposte in altri software, e conformarle ad una stessa struttura, spesso si &amp;quot;forza&amp;quot; il modello a aderire a un determinato schema di output. Ad esempio si provi il seguente prompt:&lt;br /&gt;
&lt;br /&gt;
 Analizza il seguente testo fornendo l&amp;#039;output nel formato JSON specificato dopo il testo.&lt;br /&gt;
 &lt;br /&gt;
 Testo: &amp;quot;La nuova piattaforma di e-learning ha un&amp;#039;interfaccia moderna e reattiva, ma ho riscontrato diversi bug durante i test. Il team di sviluppo ha risposto velocemente alle segnalazioni, anche se alcuni problemi persistono. Nel complesso è promettente ma necessita di miglioramenti.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 Output atteso:&lt;br /&gt;
 {&lt;br /&gt;
     &amp;quot;review_analysis&amp;quot;: {&lt;br /&gt;
         &amp;quot;overall_sentiment&amp;quot;: &amp;quot;STRING (positive/mixed/negative)&amp;quot;,&lt;br /&gt;
         &amp;quot;rating&amp;quot;: &amp;quot;NUMBER (1-5)&amp;quot;,&lt;br /&gt;
         &amp;quot;aspects&amp;quot;: {&lt;br /&gt;
             &amp;quot;positives&amp;quot;: [&amp;quot;ARRAY OF STRINGS&amp;quot;],&lt;br /&gt;
             &amp;quot;negatives&amp;quot;: [&amp;quot;ARRAY OF STRINGS&amp;quot;]&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;response_time&amp;quot;: {&lt;br /&gt;
             &amp;quot;score&amp;quot;: &amp;quot;NUMBER (1-5)&amp;quot;,&lt;br /&gt;
             &amp;quot;comment&amp;quot;: &amp;quot;STRING&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;maturity_assessment&amp;quot;: {&lt;br /&gt;
             &amp;quot;stage&amp;quot;: &amp;quot;STRING (alpha/beta/production-ready)&amp;quot;,&lt;br /&gt;
             &amp;quot;confidence&amp;quot;: &amp;quot;NUMBER (1-5)&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== Fornire la struttura in formato &amp;quot;OpenAI schema&amp;quot; ===&lt;br /&gt;
Per utilizzare un formato ancora più standardizzato, è possibile specificare il formato di output con la sintassi OpenAI: https://spec.openapis.org/oas/v3.0.3#schema. &lt;br /&gt;
&lt;br /&gt;
Per esempio, se nel &amp;#039;&amp;#039;&amp;#039;prompt di sistema&amp;#039;&amp;#039;&amp;#039; di un modello inserissimo:&lt;br /&gt;
 Analizza il seguente testo fornendo l&amp;#039;output secondo lo schema JSON specificato dopo il testo.&lt;br /&gt;
Specificando la definizione dell&amp;#039;oggetto strutturato da tornare - per esempio nella sezione &amp;#039;&amp;#039;&amp;#039;Structured Output&amp;#039;&amp;#039;&amp;#039; in [https://aistudio.google.com Gemini]:&lt;br /&gt;
 &lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;object&amp;quot;,&lt;br /&gt;
   &amp;quot;properties&amp;quot;: {&lt;br /&gt;
     &amp;quot;review_analysis&amp;quot;: {&lt;br /&gt;
       &amp;quot;type&amp;quot;: &amp;quot;object&amp;quot;,&lt;br /&gt;
       &amp;quot;properties&amp;quot;: {&lt;br /&gt;
         &amp;quot;overall_sentiment&amp;quot;: {&lt;br /&gt;
           &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
           &amp;quot;enum&amp;quot;: [&amp;quot;positive&amp;quot;, &amp;quot;mixed&amp;quot;, &amp;quot;negative&amp;quot;]&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;rating&amp;quot;: {&lt;br /&gt;
           &amp;quot;type&amp;quot;: &amp;quot;number&amp;quot;,&lt;br /&gt;
           &amp;quot;minimum&amp;quot;: 1,&lt;br /&gt;
           &amp;quot;maximum&amp;quot;: 5&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;aspects&amp;quot;: {&lt;br /&gt;
           &amp;quot;type&amp;quot;: &amp;quot;object&amp;quot;,&lt;br /&gt;
           &amp;quot;properties&amp;quot;: {&lt;br /&gt;
             &amp;quot;positives&amp;quot;: {&lt;br /&gt;
               &amp;quot;type&amp;quot;: &amp;quot;array&amp;quot;,&lt;br /&gt;
               &amp;quot;items&amp;quot;: {&lt;br /&gt;
                 &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
             },&lt;br /&gt;
             &amp;quot;negatives&amp;quot;: {&lt;br /&gt;
               &amp;quot;type&amp;quot;: &amp;quot;array&amp;quot;,&lt;br /&gt;
               &amp;quot;items&amp;quot;: {&lt;br /&gt;
                 &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
             }&lt;br /&gt;
           }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;response_time&amp;quot;: {&lt;br /&gt;
           &amp;quot;type&amp;quot;: &amp;quot;object&amp;quot;,&lt;br /&gt;
           &amp;quot;properties&amp;quot;: {&lt;br /&gt;
             &amp;quot;score&amp;quot;: {&lt;br /&gt;
               &amp;quot;type&amp;quot;: &amp;quot;number&amp;quot;,&lt;br /&gt;
               &amp;quot;minimum&amp;quot;: 1,&lt;br /&gt;
               &amp;quot;maximum&amp;quot;: 5&lt;br /&gt;
             },&lt;br /&gt;
             &amp;quot;comment&amp;quot;: {&lt;br /&gt;
               &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
             }&lt;br /&gt;
           }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;maturity_assessment&amp;quot;: {&lt;br /&gt;
           &amp;quot;type&amp;quot;: &amp;quot;object&amp;quot;,&lt;br /&gt;
           &amp;quot;properties&amp;quot;: {&lt;br /&gt;
             &amp;quot;stage&amp;quot;: {&lt;br /&gt;
               &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
               &amp;quot;enum&amp;quot;: [&amp;quot;alpha&amp;quot;, &amp;quot;beta&amp;quot;, &amp;quot;production-ready&amp;quot;]&lt;br /&gt;
             },&lt;br /&gt;
             &amp;quot;confidence&amp;quot;: {&lt;br /&gt;
               &amp;quot;type&amp;quot;: &amp;quot;number&amp;quot;,&lt;br /&gt;
               &amp;quot;minimum&amp;quot;: 1,&lt;br /&gt;
               &amp;quot;maximum&amp;quot;: 5&lt;br /&gt;
             }&lt;br /&gt;
           }&lt;br /&gt;
         }&lt;br /&gt;
       },&lt;br /&gt;
       &amp;quot;required&amp;quot;: [&amp;quot;overall_sentiment&amp;quot;, &amp;quot;rating&amp;quot;, &amp;quot;aspects&amp;quot;, &amp;quot;response_time&amp;quot;, &amp;quot;maturity_assessment&amp;quot;]&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
Questo formato ha alcuni vantaggi aggiuntivi rispetto al precedente:&lt;br /&gt;
&lt;br /&gt;
# Definisce esplicitamente i tipi di dati&lt;br /&gt;
# Permette di specificare valori minimi e massimi per i numeri&lt;br /&gt;
# Elenca esplicitamente i valori possibili per le enumerazioni&lt;br /&gt;
# Indica quali campi sono obbligatori&lt;br /&gt;
# È compatibile con gli strumenti di validazione JSON Schema&lt;br /&gt;
&lt;br /&gt;
== Function Calling nei Modelli di Linguaggio ==&lt;br /&gt;
Il Function Calling rappresenta un&amp;#039;evoluzione dell&amp;#039;output strutturato nei modelli di linguaggio, permettendo di mappare il linguaggio naturale a chiamate di funzioni predefinite. Questa caratteristica consente ai LLM di interpretare &amp;#039;&amp;#039;&amp;#039;l&amp;#039;intento dell&amp;#039;utente&amp;#039;&amp;#039;&amp;#039; (in inglese &amp;#039;&amp;#039;intent detection&amp;#039;&amp;#039;) e tradurlo in azioni concrete attraverso API o funzioni specifiche.&lt;br /&gt;
&lt;br /&gt;
Il Function Calling si basa sui principi dell&amp;#039;output strutturato, ma richiede:&lt;br /&gt;
&lt;br /&gt;
* Una definizione esplicita delle funzioni disponibili&lt;br /&gt;
* Mappatura automatica tra intento e funzione&lt;br /&gt;
* Struttura standardizzata per i parametri&lt;br /&gt;
* Validazione integrata dei tipi di dati&lt;br /&gt;
&lt;br /&gt;
=== Esempio di function calling ===&lt;br /&gt;
Immaginiamo di voler creare un piccolo &amp;#039;&amp;#039;&amp;#039;sistema di gestione automatica delle campagne di paid advertising&amp;#039;&amp;#039;&amp;#039;, che possa eseguire query del tipo:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Crea una campagna awareness su Facebook con budget 100 euro al giorno, che inizi il 20/01/2025 e duri 14 giorni, audience professionisti_roma&amp;quot;&lt;br /&gt;
* &amp;quot;Quali sono le campagne attualmente attive?&amp;quot;&lt;br /&gt;
* &amp;quot;Interrompi la campagna 12345&amp;quot;&lt;br /&gt;
* &amp;quot;Avvia una campagna conversion su Instagram, budget giornaliero 150 euro, dal 01/03/2025 per 30 giorni, target giovani_milano&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Mostra tutte le campagne in corso&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Utilizziamo quindi i seguenti parametri per il &amp;#039;&amp;#039;&amp;#039;function calling&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
 [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;name&amp;quot;: &amp;quot;createAdCampaign&amp;quot;,&lt;br /&gt;
     &amp;quot;description&amp;quot;: &amp;quot;Crea una nuova campagna pubblicitaria&amp;quot;,&lt;br /&gt;
     &amp;quot;parameters&amp;quot;: {&lt;br /&gt;
       &amp;quot;type&amp;quot;: &amp;quot;object&amp;quot;,&lt;br /&gt;
       &amp;quot;properties&amp;quot;: {&lt;br /&gt;
         &amp;quot;objective&amp;quot;: {&lt;br /&gt;
           &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
           &amp;quot;enum&amp;quot;: [&lt;br /&gt;
             &amp;quot;awareness&amp;quot;,&lt;br /&gt;
             &amp;quot;consideration&amp;quot;,&lt;br /&gt;
             &amp;quot;conversion&amp;quot;&lt;br /&gt;
           ]&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;platform&amp;quot;: {&lt;br /&gt;
           &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
           &amp;quot;enum&amp;quot;: [&lt;br /&gt;
             &amp;quot;Facebook&amp;quot;,&lt;br /&gt;
             &amp;quot;Instagram&amp;quot;,&lt;br /&gt;
             &amp;quot;LinkedIn&amp;quot;,&lt;br /&gt;
             &amp;quot;TikTok&amp;quot;&lt;br /&gt;
           ]&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;daily_budget&amp;quot;: {&lt;br /&gt;
           &amp;quot;type&amp;quot;: &amp;quot;integer&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;start_date&amp;quot;: {&lt;br /&gt;
           &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;duration_days&amp;quot;: {&lt;br /&gt;
           &amp;quot;type&amp;quot;: &amp;quot;integer&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;audience_id&amp;quot;: {&lt;br /&gt;
           &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
       },&lt;br /&gt;
       &amp;quot;required&amp;quot;: [&lt;br /&gt;
         &amp;quot;objective&amp;quot;,&lt;br /&gt;
         &amp;quot;platform&amp;quot;,&lt;br /&gt;
         &amp;quot;daily_budget&amp;quot;,&lt;br /&gt;
         &amp;quot;start_date&amp;quot;,&lt;br /&gt;
         &amp;quot;duration_days&amp;quot;,&lt;br /&gt;
         &amp;quot;audience_id&amp;quot;&lt;br /&gt;
       ]&lt;br /&gt;
     }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;name&amp;quot;: &amp;quot;listActiveCampaigns&amp;quot;,&lt;br /&gt;
     &amp;quot;description&amp;quot;: &amp;quot;Ritorna la lista delle campagne attive&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;name&amp;quot;: &amp;quot;stopCampaign&amp;quot;,&lt;br /&gt;
     &amp;quot;description&amp;quot;: &amp;quot;Ferma una campagna specificia&amp;quot;,&lt;br /&gt;
     &amp;quot;parameters&amp;quot;: {&lt;br /&gt;
       &amp;quot;type&amp;quot;: &amp;quot;object&amp;quot;,&lt;br /&gt;
       &amp;quot;properties&amp;quot;: {&lt;br /&gt;
         &amp;quot;campaign_id&amp;quot;: {&lt;br /&gt;
           &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
       },&lt;br /&gt;
       &amp;quot;required&amp;quot;: [&lt;br /&gt;
         &amp;quot;campaign_id&amp;quot;&lt;br /&gt;
       ]&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si invita a testare esternsivamente il sistema, anche con domande &amp;#039;&amp;#039;&amp;#039;incomplete.&amp;#039;&amp;#039;&amp;#039; Si ricorda che in un sistema &amp;quot;reale&amp;quot;, a ogni interazione che richiede l&amp;#039;uso di un &amp;#039;&amp;#039;&amp;#039;tool, viene effettuata una chiamata API o chiamata una funzione&amp;#039;&amp;#039;&amp;#039;. &lt;br /&gt;
&lt;br /&gt;
=== Definizione di Agenti AI (al 2024) ===&lt;br /&gt;
In questo contesto, gli Agenti AI sono sistemi basati su modelli di linguaggio che utilizzano il &amp;#039;&amp;#039;&amp;#039;Function Calling&amp;#039;&amp;#039;&amp;#039; per interagire con funzioni e strumenti esterni. Questa capacità permette agli agenti di eseguire azioni concrete (come interrogare database, chiamare API o manipolare dati) e di recuperare informazioni addizionali prima di generare una risposta. A differenza di un semplice modello di linguaggio che può solo generare testo, un Agente AI può interpretare l&amp;#039;intenzione (&amp;#039;&amp;#039;&amp;#039;intent)&amp;#039;&amp;#039;&amp;#039; dell&amp;#039;utente, selezionare e chiamare le funzioni appropriate, e orchestrare una serie di operazioni per raggiungere un obiettivo specifico.&lt;br /&gt;
&lt;br /&gt;
In pratica, un Agente AI può:&lt;br /&gt;
&lt;br /&gt;
# Comprendere una richiesta in linguaggio naturale&lt;br /&gt;
# Decidere quali funzioni chiamare e in quale ordine&lt;br /&gt;
# Utilizzare i risultati delle funzioni per prendere decisioni successive&lt;br /&gt;
# Interagire con sistemi esterni per compiere azioni reali&lt;br /&gt;
# Fornire risposte basate sia sulla sua conoscenza che sui dati ottenuti&lt;br /&gt;
&lt;br /&gt;
== Esercizio: Gestione Email Customer Care con Function Calling ==&lt;br /&gt;
Un&amp;#039;azienda di software necessita di un sistema per gestire automaticamente le email in arrivo all&amp;#039;indirizzo info@azienda.it. Il sistema deve essere in grado di:&lt;br /&gt;
&lt;br /&gt;
* Riconoscere se l&amp;#039;email fa riferimento a un ticket esistente (cercando un ID ticket nel formato #Txxxxx)&lt;br /&gt;
* Creare nuovi ticket per richieste di supporto che non fanno riferimento a un ticket esistente&lt;br /&gt;
* Informazioni commerciali&lt;br /&gt;
&lt;br /&gt;
Implementare un sistema di Function Calling che gestisca i seguenti scenari:&lt;br /&gt;
&lt;br /&gt;
Email 1:&lt;br /&gt;
 Da: cliente@email.com&lt;br /&gt;
 A: info@azienda.it&lt;br /&gt;
 Oggetto: Re: Ticket #T12345 - Problema installazione&lt;br /&gt;
 &lt;br /&gt;
 Buongiorno,&lt;br /&gt;
 in riferimento al ticket #T12345, volevo sapere se ci sono novità sulla mia &lt;br /&gt;
 richiesta di supporto per l&amp;#039;installazione del software.&lt;br /&gt;
 Grazie&lt;br /&gt;
Email 2:&lt;br /&gt;
 Da: nuovo.cliente@email.com&lt;br /&gt;
 A: info@azienda.it&lt;br /&gt;
 Oggetto: Richiesta supporto installazione software &amp;quot;Nausicaa&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 Buongiorno,&lt;br /&gt;
 ho acquistato il vostro software ieri e sto avendo difficoltà con &lt;br /&gt;
 l&amp;#039;installazione. Il sistema operativo è Windows 11 e ricevo un errore &lt;br /&gt;
 durante la fase di setup.&lt;br /&gt;
 Potete aiutarmi?&lt;br /&gt;
Email 3:&lt;br /&gt;
 Da: potenziale.cliente@email.com&lt;br /&gt;
 A: info@azienda.it&lt;br /&gt;
 Oggetto: Informazioni prodotto &amp;quot;Telemaco&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 Salve,&lt;br /&gt;
 sono interessato al vostro software &amp;quot;Telemaco&amp;quot; per la mia azienda.&lt;br /&gt;
 Vorrei sapere i prezzi per 25 postazioni e se fate sconti per ordini multipli.&lt;br /&gt;
 Cordiali saluti&lt;br /&gt;
Requisiti:&lt;br /&gt;
&lt;br /&gt;
# Definire le funzioni necessarie per:&lt;br /&gt;
#* Gestire ticket esistenti&lt;br /&gt;
#* Creare nuovi ticket&lt;br /&gt;
#* Inoltrare le richiesta commerciali direttamente al dipartimento &amp;quot;vendite&amp;quot;&lt;br /&gt;
# Specificare i parametri necessari per ogni funzione (dati cliente, riassunto richiesta, Livello di priorità: [high, medium,low], ID ticket, nome prodotto (opzionale), versione prodotto (opzionale))&lt;br /&gt;
# Garantire che tutte le informazioni necessarie vengano estratte dall&amp;#039;email&lt;br /&gt;
&lt;br /&gt;
Si richiede di implementare lo schema delle funzioni seguendo il formato OpenAI per il Function Calling.&lt;/div&gt;</summary>
		<author><name>Alesaccoia</name></author>
	</entry>
</feed>