Chiamata funzione
Utilizzare Chiamata funzione per consentire al modello di richiedere dati o azioni dall'applicazione durante un flusso di lavoro API Risposte. Ciò è utile quando il modello richiede informazioni o operazioni non disponibili nel prompt stesso, ad esempio dati di calendario, stato dell'applicazione interna o risultato di un'operazione personalizzata.
Con questo modello, il modello non esegue direttamente la funzione. Invece, restituisce il nome e gli argomenti della funzione, l'applicazione esegue la funzione e quindi l'applicazione invia l'output della funzione in modo che il modello possa continuare e produrre la risposta rivolta all'utente.
Cosa questo permette
La funzione Chiamata è utile quando l'applicazione deve mantenere il controllo dell'esecuzione, pur consentendo al modello di decidere quando sono necessarie informazioni esterne.
Casi d'uso di esempio:
- Ricerca degli eventi del calendario
- Recupero dei dati dell'applicazione
- Chiamata API interna o esterna
- Esecuzione di business logic o calcoli
Nella funzione è possibile chiamare un servizio esterno, un database, una delle API della libreria, un'interfaccia CLI o un server MCP locale.
Questo approccio ti offre flessibilità mantenendo il percorso di esecuzione all'interno dell'applicazione.
Flusso di esecuzione
Una tipica funzione chiamata interazione funziona las segue:
- Il client invia una richiesta che include una o più definizioni di strumento di funzione.
- Il modello decide se uno di questi strumenti è necessario.
- Se è necessario uno strumento, il modello restituisce il nome e gli argomenti della funzione.
- L'applicazione esegue la funzione e prepara il risultato.
- L'applicazione invia il risultato in una richiesta di follow-up.
- Il modello utilizza tale risultato per completare la risposta.
Opzioni gestione stato
Esistono due modi comuni per gestire lo stato nelle seguenti richieste:
-
Stato gestito dal servizio
Consigliato per la maggior parte dei casi d'uso. La richiesta di follow-up include
previous_response_ide il servizio tiene traccia dello scambio precedente. -
Stato gestito dal client
L'applicazione mantiene la cronologia completa delle interazioni e invia il contesto accumulato ad ogni richiesta.
Mantieni precise le definizioni degli strumenti. Nomi chiari, descrizioni ben scritte e parametri ben definiti aiutano il modello a selezionare lo strumento giusto e generare argomenti utilizzabili.
Definizione di uno strumento funzionale
Per definire uno strumento di funzione, aggiungere una voce nella proprietà tools con "type": "function".
Nell'esempio seguente viene definito uno strumento che recupera gli eventi di calendario per una data specificata.
tools = [
{
"type": "function",
"name": "get_calendar_events",
"description": "Return calendar events scheduled for a specific date.",
"parameters": {
"type": "object",
"properties": {
"date": {
"type": "string",
"description": "Date to query, for example 2026-04-02"
}
},
"required": ["date"],
},
},
]Includere questo array tools nella richiesta client.responses.create().
Esempio: stato gestito dal servizio
In questo modello, la prima richiesta consente al modello di decidere se lo strumento è necessario. La seconda richiesta restituisce il risultato dello strumento e fa riferimento alla risposta precedente.
import json
tools = [
{
"type": "function",
"name": "get_calendar_events",
"description": "Return calendar events scheduled for a specific date.",
"parameters": {
"type": "object",
"properties": {
"date": {
"type": "string",
"description": "Date to query, for example 2026-04-02"
}
},
"required": ["date"],
},
},
]
def get_calendar_events(date):
# Replace this with actual calendar logic or an API call
return [
{"time": "09:00", "title": "Team standup"},
{"time": "13:00", "title": "Design review"},
{"time": "16:00", "title": "Project check-in"},
]
# Initial request
response = client.responses.create(
model="openai.gpt-oss-120b",
tools=tools,
input="Show the calendar events for 2026-04-02.",
)
# Execute the requested function
tool_outputs = []
for item in response.output:
if item.type == "function_call" and item.name == "get_calendar_events":
args = json.loads(item.arguments)
events = get_calendar_events(**args)
tool_outputs.append({
"type": "function_call_output",
"call_id": item.call_id,
"output": json.dumps({"events": events}),
})
# Follow-up request
final = client.responses.create(
model="openai.gpt-oss-120b",
instructions="Summarize the schedule clearly for the user.",
tools=tools,
input=tool_outputs,
previous_response_id=response.id,
)
print(final.output_text)Esempio: stato gestito dal client
In questo modello, l'applicazione mantiene lo scambio completo e lo risottomette con la richiesta di follow-up.
import json
tools = [
{
"type": "function",
"name": "get_calendar_events",
"description": "Return calendar events scheduled for a specific date.",
"parameters": {
"type": "object",
"properties": {
"date": {
"type": "string",
"description": "Date to query, for example 2026-04-02"
}
},
"required": ["date"],
},
},
]
def get_calendar_events(date):
# Replace this with actual calendar logic or an API call
return [
{"time": "09:00", "title": "Team standup"},
{"time": "13:00", "title": "Design review"},
{"time": "16:00", "title": "Project check-in"},
]
conversation = [
{"role": "user", "content": "Show the calendar events for 2026-04-02."}
]
response = client.responses.create(
model="openai.gpt-oss-120b",
tools=tools,
input=conversation,
)
conversation += response.output
for item in response.output:
if item.type == "function_call" and item.name == "get_calendar_events":
args = json.loads(item.arguments)
events = get_calendar_events(**args)
conversation.append({
"type": "function_call_output",
"call_id": item.call_id,
"output": json.dumps({"events": events}),
})
final = client.responses.create(
model="openai.gpt-oss-120b",
instructions="Summarize the schedule clearly for the user.",
tools=tools,
input=conversation,
)
print(final.output_text)La chiamata alle funzioni è un'opzione valida quando l'applicazione deve rimanere responsabile dell'esecuzione, del controllo dell'accesso e della logica di integrazione, consentendo al contempo al modello di richiedere le informazioni necessarie.