Come funziona il function calling
Comprenda l'intero ciclo: il modello sceglie uno strumento, il codice lo esegue, Lei invia il risultato e il modello prosegue.
Come funziona il function calling è una lezione AI Agents gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento AI Agents, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso AI Agents include 4 lezioni in totale.
Function calling: il pattern fondamentale
Il function calling è il protocollo che trasforma un LLM in un agente. Il modello sceglie una funzione da un elenco fornito da Lei, ne compila gli argomenti e Lei la esegue.
Questo pattern è supportato da OpenAI, Anthropic, Google, Cohere, Mistral e dalla maggior parte dei principali modelli OSS con i fine-tuning appropriati.
Il ciclo completo in cinque passaggi
- Invia i messaggi e le definizioni degli strumenti
- Il modello restituisce una risposta finale OPPURE un tool_call
- Esegue lo strumento con gli argomenti del modello
- Aggiunge il risultato come messaggio dello strumento
- Richiama il modello con la cronologia aggiornata
Ripeta i passaggi da 2 a 5 finché il modello non restituisce una risposta finale.
Passaggio 1: definizione degli strumenti
Le definizioni degli strumenti sono schemi JSON che descrivono ogni funzione:
tools = [{
'type': 'function',
'function': {
'name': 'get_weather',
'description': 'Current weather for a city',
'parameters': {
'type': 'object',
'properties': {
'city': {'type': 'string'}
},
'required': ['city']
}
}
}]
import json
print(json.dumps(tools, indent=2))
Passaggio 2: prima chiamata al modello
Invii messaggi e strumenti:
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[{'role': 'user', 'content': 'Weather in Paris?'}],
tools=tools,
)
message = response.choices[0].message
print(message.tool_calls)
# [ToolCall(name='get_weather', arguments='{"city": "Paris"}')]Passaggio 3: esecuzione dello strumento
Inoltri la richiesta alla funzione Python:
import json
def get_weather(city: str) -> dict:
# ...call your weather API...
return {'city': city, 'temp_c': 18, 'condition': 'cloudy'}
tool_call = message.tool_calls[0]
args = json.loads(tool_call.function.arguments)
result = get_weather(**args)Passaggio 4: aggiunta del risultato dello strumento
Aggiunga un messaggio dello strumento con l'ID corrispondente:
messages.append(message) # the assistant message with tool_calls
messages.append({
'role': 'tool',
'tool_call_id': tool_call.id,
'content': json.dumps(result)
})Passaggio 5: seconda chiamata al modello
Richiami il modello: ora dispone del risultato dello strumento e produce una risposta destinata all'utente:
final = client.chat.completions.create(
model='gpt-4o-mini',
messages=messages,
tools=tools,
)
print(final.choices[0].message.content)
# 'It is currently 18 degrees and cloudy in Paris.'Il ciclo dell'agente
Inserisca tutto in un ciclo while: il modello può chiamare diversi strumenti in sequenza:
while True:
response = client.chat.completions.create(model=MODEL, messages=messages, tools=tools)
msg = response.choices[0].message
messages.append(msg)
if not msg.tool_calls:
return msg.content # final answer
for tc in msg.tool_calls:
result = dispatch(tc)
messages.append({'role': 'tool', 'tool_call_id': tc.id, 'content': json.dumps(result)})Chiamate parallele agli strumenti
I modelli moderni restituiscono più tool_calls in un'unica risposta. Li esegua in parallelo quando è sicuro farlo:
import asyncio
async def run_tools(tool_calls):
coros = [dispatch_async(tc) for tc in tool_calls]
return await asyncio.gather(*coros)finish_reason: tool_calls
Può anche controllare finish_reason invece di cercare tool_calls:
if response.choices[0].finish_reason == 'tool_calls':
# the model wants to call tools
...
elif response.choices[0].finish_reason == 'stop':
# done
...Errori comuni
- Dimenticare di aggiungere il messaggio dell'assistente prima del risultato dello strumento
- Usare il tool_call_id errato
- Inviare i risultati degli strumenti come messaggi dell'utente
- Lasciare il ciclo senza un limite: imposti MAX_STEPS
Terminazione del ciclo
Come si capisce quando l'agente ha terminato?
Riepilogo
Il function calling è il pattern più importante dell'intero corso. Lo padroneggi prima di proseguire.
Domande Frequenti
La lezione «Come funziona il function calling» è gratuita?
Sì — il testo completo di «Come funziona il function calling» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso AI Agents, passa a CoddyKit PRO. Il corso AI Agents include 4 lezioni in totale.
Cosa imparerò in «Come funziona il function calling»?
Comprenda l'intero ciclo: il modello sceglie uno strumento, il codice lo esegue, Lei invia il risultato e il modello prosegue. Eserciti AI Agents con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare AI Agents?
Non è richiesta alcuna esperienza precedente. AI Agents su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Come funziona il function calling»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione AI Agents?
Sì. Ogni lezione AI Agents include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Come funziona il function calling
- Definire gli schemi degli strumenti (JSON Schema)
- Scegliere gli strumenti a runtime
- Restituire i risultati al modello