Scegliere gli strumenti a runtime
Lasci decidere al modello quale strumento chiamare, imponga uno strumento specifico oppure esponga solo quelli pertinenti allo stato corrente.
Scegliere gli strumenti a runtime è una lezione AI Agents gratuita su CoddyKit. Questa è la lezione 3 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.
Lasci scegliere al modello
Per impostazione predefinita, fornisce al modello un elenco di strumenti e lascia che decida quale chiamare (oppure nessuno). È la modalità standard e funziona bene quando:
- Ha da 5 a 15 strumenti
- Gli strumenti hanno descrizioni chiare e distinte
- Lo strumento corretto dipende dall'input dell'utente
tool_choice: auto
L'impostazione predefinita: decide il modello:
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=messages,
tools=tools,
tool_choice='auto', # default; can be omitted
)tool_choice: required
Obbliga il modello a chiamare UNO strumento qualsiasi:
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=messages,
tools=tools,
tool_choice='required',
)
# Model must return a tool_call, never a free-form answerForzare uno strumento specifico
Per forzare uno strumento specifico, ne indichi il nome:
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=messages,
tools=tools,
tool_choice={'type': 'function', 'function': {'name': 'extract_entities'}},
)tool_choice: none
Disabiliti gli strumenti per un singolo turno:
# After a tool result, you might want a pure text response:
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=messages,
tools=tools,
tool_choice='none',
)Ridurre gli elenchi di strumenti in base al contesto
I modelli scelgono peggio da insiemi numerosi di strumenti. Esponga solo gli strumenti pertinenti allo stato attuale:
def relevant_tools(state):
if state == 'authenticated':
return [search_orders, refund_order, escalate]
elif state == 'guest':
return [search_products, contact_support]
return []Selezione degli strumenti in due fasi
Per più di 50 strumenti, utilizzi una gerarchia:
- L'agente esterno sceglie un dominio (ordini / fatturazione / spedizioni)
- L'agente interno sceglie lo strumento specifico all'interno di quel dominio
Ogni chiamata vede solo ~10 strumenti.
Ricerca vettoriale sugli strumenti
Calcoli l'embedding di ogni descrizione dello strumento; in fase di esecuzione, calcoli l'embedding della richiesta dell'utente e recuperi i primi K strumenti da esporre:
from openai import OpenAI
import numpy as np
query_emb = embed(user_query)
sims = [cosine(query_emb, tool.emb) for tool in all_tools]
top = [t for _, t in sorted(zip(sims, all_tools), reverse=True)[:10]]
# Send only these 10 to the modeltool_choice di Anthropic
Anthropic usa lo stesso concetto con una struttura diversa:
tool_choice = {'type': 'auto'}
print("auto:", tool_choice)
tool_choice = {'type': 'any'} # required
print("any (required):", tool_choice)
tool_choice = {'type': 'tool', 'name': 'get_weather'} # specific
print("specific tool:", tool_choice)
tool_choice = {'type': 'none'}
print("none:", tool_choice)
Perché forzare uno strumento specifico?
È utile per:
- Validazione: estrarre un campo strutturato specifico
- Routing: l'utente ha fatto clic su "refund", quindi chiami refund_order
- Output strutturato: sfruttare il tool calling per ottenere JSON
Elenchi di strumenti vuoti
Se passa tools=[] ma tool_choice="required", ottiene un errore. Convalidi sempre l'elenco degli strumenti prima dell'invio.
Forzare l'output JSON
Perché potrebbe voler forzare una chiamata a uno strumento specifico?
Riepilogo
Usi auto nella maggior parte dei casi. Forzi gli strumenti per il routing e l'estrazione strutturata. Riduca l'elenco degli strumenti in base allo stato per mantenere precisa la selezione.
Domande Frequenti
La lezione «Scegliere gli strumenti a runtime» è gratuita?
Sì — il testo completo di «Scegliere gli strumenti a runtime» è 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 «Scegliere gli strumenti a runtime»?
Lasci decidere al modello quale strumento chiamare, imponga uno strumento specifico oppure esponga solo quelli pertinenti allo stato corrente. 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 3 di 4.
Quanto tempo richiede la lezione «Scegliere gli strumenti a runtime»?
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