Zum Inhalt springen

Function Calling

Dieser Inhalt ist für v1.0.0. Geh zur neuesten Version, um die aktuellste Dokumentation zu bekommen.

Dieser Inhalt ist noch nicht in deiner Sprache verfügbar.

Function calling lets models generate structured JSON arguments for functions you define, enabling integration with external tools and APIs.

What you’ll learn:

  • How to define tools/functions for the model to call
  • How to use function calling with the Responses API
  • How to extract structured data using JSON Schema

from openai import OpenAI
client = OpenAI()
tools = [
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "Get the current weather",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA",
},
"format": {
"type": "string",
"enum": ["celsius", "fahrenheit"],
"description": "The temperature unit to use.",
},
},
"required": ["location", "format"],
},
},
},
]
messages = [
{"role": "system", "content": "Don't make assumptions about what values to plug into functions. Ask for clarification if a user request is ambiguous."},
{"role": "user", "content": "What's the weather like today in Hamburg?"},
]
response = client.chat.completions.create(
model="gpt-4.1",
messages=messages,
tools=tools,
)
print(response.choices[0].message)

Example output:

ChatCompletionMessage(
content=None,
role='assistant',
tool_calls=[
ChatCompletionMessageToolCall(
id='call_adnFRLazqswLI1ky6FU2O40u',
function=Function(
arguments='{"location":"Hamburg","format":"celsius"}',
name='get_current_weather'
),
type='function'
)
]
)

from openai import OpenAI
client = OpenAI()
tools = [
{
"type": "function",
"name": "get_weather",
"description": "Get current temperature for a given location.",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "City and country e.g. Bogota, Colombia",
}
},
"required": ["location"],
"additionalProperties": False,
},
}
]
response = client.responses.create(
model="gpt-4.1",
input=[{"role": "user", "content": "What is the weather like in Paris today?"}],
tools=tools,
)
print(response.output)

Parse text into a structured schema:

import json
from openai import OpenAI
client = OpenAI()
description = """
Our Premium Laptop Backpack features padded compartments that fit
laptops up to 15.6 inches. Available in navy blue, black, and gray.
Price: $79.99, on sale for $64.99.
"""
response = client.responses.create(
model="gpt-4.1",
input=f"Extract structured product information: {description}",
text={
"format": {
"type": "json_schema",
"name": "product_details",
"schema": {
"type": "object",
"properties": {
"product_name": {"type": "string"},
"features": {"type": "array", "items": {"type": "string"}},
"colors": {"type": "array", "items": {"type": "string"}},
"pricing": {
"type": "object",
"properties": {
"regular_price": {"type": "number"},
"sale_price": {"type": "number"},
"currency": {"type": "string"},
},
"required": ["regular_price", "sale_price", "currency"],
"additionalProperties": False,
},
},
"required": ["product_name", "features", "colors", "pricing"],
"additionalProperties": False,
},
"strict": True,
}
},
)
print(json.dumps(json.loads(response.output[0].content[0].text), indent=2))