Restituire i risultati al modello
Formatti gli output degli strumenti come messaggi con ruolo tool, così che il modello possa leggerli e proseguire la conversazione.
Restituire i risultati al modello è una lezione AI Agents gratuita su CoddyKit. Questa è la lezione 4 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.
Il messaggio del risultato dello strumento
Dopo aver eseguito uno strumento, comunichi al modello l'esito con un messaggio dello strumento:
messages.append({
'role': 'tool',
'tool_call_id': tool_call.id, # MUST match the assistant's tool_call.id
'content': json.dumps(result)
})Il contenuto deve essere una stringa
OpenAI si aspetta che content sia una stringa. Serializzi gli oggetti con json.dumps:
# Bad — will error
messages.append({'role': 'tool', 'tool_call_id': id, 'content': {'temp': 18}})
# Good
messages.append({'role': 'tool', 'tool_call_id': id, 'content': '{"temp": 18}'})Formato Anthropic
Anthropic usa un blocco di contenuto all'interno di un messaggio dell'utente:
messages.append({
'role': 'user',
'content': [{
'type': 'tool_result',
'tool_use_id': 'toolu_abc',
'content': json.dumps(result)
}]
})Restituzione degli errori
Se lo strumento non è riuscito, restituisca l'errore: non finga che abbia avuto successo. Il modello può recuperare:
try:
result = run_tool(...)
content = json.dumps({'ok': True, 'data': result})
except Exception as e:
content = json.dumps({'ok': False, 'error': str(e)})
messages.append({'role': 'tool', 'tool_call_id': id, 'content': content})Pattern multi-risultato
Per le chiamate parallele agli strumenti, aggiunga ogni risultato con l'ID corrispondente:
for tc in message.tool_calls:
result = dispatch(tc)
messages.append({
'role': 'tool',
'tool_call_id': tc.id,
'content': json.dumps(result)
})Output di grandi dimensioni: riepilogare
Se uno strumento restituisce 100 KB di HTML, inviarlo tutto al modello spreca token e diluisce l'attenzione. Prima lo riepiloghi o lo tronchi:
def truncate(text, max_chars=4000):
if len(text) <= max_chars:
return text
return text[:max_chars] + f'\n...[truncated, {len(text)-max_chars} more chars]'
sample = "x" * 4500
result = truncate(sample, max_chars=50)
print(result)
Schema sempre uguale
Anche quando i risultati variano (successo / errore / non trovato), mantenga stabile lo schema dell'output. Il modello è più affidabile con strutture coerenti:
from typing import TypedDict, Literal, Optional, Any
class ToolResult(TypedDict):
status: Literal['ok', 'not_found', 'error']
data: Optional[Any]
error: Optional[str]
def make_result(status, data=None, error=None) -> ToolResult:
return {'status': status, 'data': data, 'error': error}
print(make_result('ok', data={'temp': 72}))
print(make_result('not_found', error='city not found'))Includere suggerimenti nei metadati
Aiuti il modello a interpretare i risultati includendo suggerimenti nel contenuto:
content = json.dumps({
'data': rows,
'note': 'Returned 50 rows (most recent first). There may be more matches.'
})Dati binari
Non inserisca grandi blocchi binari codificati in base64 nei messaggi degli strumenti. Li salvi invece nell'archiviazione e restituisca un URL o un ID:
result = {
'image_path': '/tmp/chart-abc.png',
'thumbnail_url': 'https://...',
'caption': 'Sales by quarter, 2024'
}
for k, v in result.items():
print(f"{k}: {v}")
Richiamare nuovamente il modello nel ciclo
Dopo aver aggiunto tutti i risultati degli strumenti, richiami il modello: produrrà una risposta finale oppure chiamerà altri strumenti:
class Msg:
def __init__(self, tool_calls=None, content=None):
self.tool_calls = tool_calls or []
self.content = content
class ToolCall:
def __init__(self, name, args):
self.name = name
self.args = args
def call_model(messages, tools):
if len(messages) < 4:
return Msg(tool_calls=[ToolCall('get_weather', {'city': 'Paris'})])
return Msg(content='It is sunny in Paris.')
messages = [{'role': 'user', 'content': 'Weather in Paris?'}]
tools = ['get_weather']
message = call_model(messages, tools)
while message.tool_calls:
for tc in message.tool_calls:
result = f'Result of {tc.name}({tc.args})'
messages.append({'role': 'tool', 'name': tc.name, 'content': result})
print('Tool call:', tc.name, '->', result)
message = call_model(messages, tools)
print('Final answer:', message.content)
Verifica degli output degli strumenti
Registri ogni coppia (tool_call_id, args, result) per il debugging. Quando un agente fa qualcosa di strano, il log dei risultati degli strumenti è il primo posto da controllare.
Formato del risultato dello strumento
A cosa si riferisce tool_call_id in un messaggio dello strumento?
Riepilogo
Ora conosce l'intero ciclo completo delle chiamate agli strumenti. Prossimo corso: la memoria, il terzo pilastro degli agenti.
Impara AI Agents con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 60
- Lezioni
- 239
Domande Frequenti
La lezione «Restituire i risultati al modello» è gratuita?
Sì — il testo completo di «Restituire i risultati al modello» è 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 «Restituire i risultati al modello»?
Formatti gli output degli strumenti come messaggi con ruolo tool, così che il modello possa leggerli e proseguire la conversazione. 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 4 di 4.
Quanto tempo richiede la lezione «Restituire i risultati al modello»?
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