Avez-vous déjà été coincé en parlant à quelqu'un qui ne reçoit pas ce que vous demandez?Comme lorsque vous dites à votre ami que vous avez besoin d'un trajet à l'aéroport à 6 heures du matin, et qu'ils commencent à vous parler de leurs restaurants aéroportuaires préférés au lieu de cela?
Qu’est-ce que la fonction Calling ?
C’est comme avoir un assistant intelligent qui comprend non seulement ce que vous voulez, mais qui sait quand retirer son téléphone pour vérifier la météo, rechercher des directions ou appeler un taxi.
En termes techniques, l’appel de fonctions permet aux modèles d’IA d’identifier quand utiliser des fonctions spécifiques, quels paramètres passer et comment formater correctement les données – tout cela à partir des instructions de langage naturel.
🕰️ The Dark Ages: Before Function Calling
Before function calling, things were... messy. If you wanted an AI to use external tools, you had two equally frustrating options:
-
Train the AI to generate exact API calls (which often went wrong)
-
Write complex code to parse AI responses and extract parameters
C'est comme essayer d'enseigner à quelqu'un une danse en décrivant les mouvements en mots au lieu de les montrer.Vous direz quelque chose comme, "J'ai besoin de données météorologiques pour New York" et l'IA répondra avec du texte sur la météo, pas les données réelles dont vous aviez besoin.
Je me souviens de construire un chatbot qui devait réserver des réservations de restaurants. Sans appel de fonction, il dirait heureusement aux utilisateurs: "J'ai réservé votre table!" sans se connecter à aucun système de réservation.
Pourquoi la fonction appelle des choses
L'appel de fonction brise le fossé entre le langage humain et les systèmes informatiques.
-
It's more reliable - the AI structures data exactly as functions need it
-
It's more capable - an AI can access real-time data, control devices, or run calculations
-
It's more natural - users can make requests in plain language
Pensez à l'appel de fonction comme donnant à une AI l'accès à une boîte à outils.Avant, il ne pouvait parler que de marteaux.Maintenant, il peut en prendre un et conduire effectivement un clou.
Une façon simple de penser à
Imaginez que vous êtes dans un café.Quand vous dites, "J'aimerais un latte moyen avec du lait d'avoine", vous êtes essentiellement "appelant" le barista.
La fonction pourrait ressembler à :
make_coffee(size="medium", drink_type="latte", milk="oat")
Le barman sait :
-
Identify the function needed (make a drink)
-
Extract the parameters (size, type, milk choice)
-
Execute the function (make the coffee)
-
Return the result (your drink)
Sans appel de fonction, vous recevrez une réponse comme: "Un latte moyen avec du lait d'avoine sonne délicieux!" mais pas de café réel.Hope you get the idea !
La mécanique centrale derrière l'appel de fonction
Au cœur, la fonction d’appel fonctionne en raison de plusieurs innovations techniques qui travaillent ensemble :
-
Structured Function Definitions: When you define functions for an AI model to use, you provide a clear schema that includes the function name, description, and parameter specifications with their types and requirements. This JSON schema helps the model understand not just what the function does, but exactly what information it needs to execute properly.
-
Intent Recognition: The AI model analyzes user input to determine when a function should be called. Modern models like GPT-4 can recognize when a user's request could be satisfied by calling an external function, even when the user doesn't explicitly ask for it.
-
Parameter Extraction: The model identifies and extracts relevant parameters from natural language, converting them into the structured format required by the function. For example, when someone asks about Microsoft stock, the model knows to extract "MSFT" as the ticker parameter.
-
Response Formatting: After a function executes, the model receives the result and incorporates it into a natural language response, creating a seamless experience for the user.
-
Context Awareness: The model maintains context throughout the conversation, allowing it to use previous function calls and responses to inform new function calls.
️ Scaffolding Code pour l'appel de fonction
Voici un modèle que vous pouvez utiliser pour commencer à appeler des fonctions à l'aide de l'API OpenAI:
from openai import OpenAI
import json
# Initialize the client
client = OpenAI()
# Define your functions
functions = [
{
"type": "function",
"function": {
"name": "your_function_name",
"description": "Description of what this function does",
"parameters": {
"type": "object",
"properties": {
"param1": {
"type": "string",
"description": "Description of parameter 1"
},
"param2": {
"type": "integer",
"description": "Description of parameter 2"
}
},
"required": ["param1"]
}
}
}
]
# Your actual implementation of the function
def your_function_name(param1, param2=None):
# Your code here
result = f"Did something with {param1}"
if param2:
result += f" and {param2}"
return result
# Process messages and handle function calls
def process_with_function_calling(messages):
# Get response from the model
response = client.chat.completions.create(
model="gpt-4o",
messages=messages,
tools=functions,
tool_choice="auto"
)
response_message = response.choices[0].message
# Check if the model wants to call a function
if response_message.tool_calls:
# Append the model's response to messages
messages.append(response_message)
# Process each function call
for tool_call in response_message.tool_calls:
function_name = tool_call.function.name
function_args = json.loads(tool_call.function.arguments)
# Call the function
if function_name == "your_function_name":
function_response = your_function_name(
function_args.get("param1"),
function_args.get("param2")
)
# Append the function response to messages
messages.append({
"role": "tool",
"tool_call_id": tool_call.id,
"name": function_name,
"content": function_response
})
# Get a new response from the model
second_response = client.chat.completions.create(
model="gpt-4o",
messages=messages
)
return second_response.choices[0].message.content
return response_message.content
# Example usage
messages = [{"role": "user", "content": "Your user query here"}]
result = process_with_function_calling(messages)
print(result)
☀️ Un exemple de travail: Vérifier la météo
Mettons cela en pratique avec une fonction de vérification météorologique simple en utilisant Azure OpenAI:
from openai import AzureOpenAI
import json
import requests
# Initialize the Azure OpenAI client
client = AzureOpenAI(
api_key="your key",
api_version="2024-10-21", # Make sure to use a version that supports function calling
azure_endpoint="your endpoint"
)
# Define the weather function
weather_functions = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get current weather for a location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "City name, e.g., 'San Francisco'"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"],
"description": "Temperature unit"
}
},
"required": ["location"]
}
}
}
]
# Implement the weather function
def get_weather(location, unit="celsius"):
# In a real app, you'd call a weather API here
# This is a mock implementation
weather_data = {
"San Francisco": {"temp": 18, "condition": "Foggy"},
"New York": {"temp": 22, "condition": "Partly Cloudy"},
"London": {"temp": 15, "condition": "Rainy"},
"Tokyo": {"temp": 24, "condition": "Sunny"}
}
# Get data for the location or return a default
data = weather_data.get(location, {"temp": 20, "condition": "Unknown"})
# Convert temperature if needed
temp = data["temp"]
if unit == "fahrenheit":
temp = (temp * 9/5) + 32
return f"It's currently {data['condition']} and {temp}°{'F' if unit == 'fahrenheit' else 'C'} in {location}."
# Process messages with weather function
def check_weather(user_query):
messages = [{"role": "user", "content": user_query}]
# Get response from the model
response = client.chat.completions.create(
model="gpt-4o-mini", # The name you gave your deployment
messages=[{"role": "user", "content": user_query}],
tools=weather_functions,
tool_choice="auto"
)
response_message = response.choices[0].message
# Check if the model wants to call the weather function
if response_message.tool_calls:
# Append the model's response to messages
messages.append(response_message)
# Process each function call
for tool_call in response_message.tool_calls:
function_name = tool_call.function.name
function_args = json.loads(tool_call.function.arguments)
# Call the weather function
if function_name == "get_weather":
function_response = get_weather(
function_args.get("location"),
function_args.get("unit", "celsius")
)
# Append the function response to messages
messages.append({
"role": "tool",
"tool_call_id": tool_call.id,
"name": function_name,
"content": function_response
})
# Get a new response from the model
second_response = client.chat.completions.create(
model="gpt-4o-mini",
messages=messages
)
return second_response.choices[0].message.content
return response_message.content
# Try it out
result = check_weather("What's the weather like in Tokyo right now?")
print(result)
Lorsque vous exécutez ce code avec la requête "Quelle est la météo à Tokyo en ce moment?", l'IA:
-
Recognize it needs weather data
-
Call the
get_weather
function with "Tokyo" as the location -
Receive the weather data
-
Generate a natural response with the information
Instead of guessing or making up weather info, it's providing real data through the function.
️ La sortie: la fonction météo appelant à l'action
Lorsque nous exécutons notre exemple météorologique avec la requête « Quelle est la météo à Tokyo en ce moment ? », la magie de la fonction d'appel prend vie.{"location": "Tokyo", "unit": "celsius"}
Ce format JSON est envoyé à notreget_weather
fonction, qui récupère les données mock météorologiques que nous avons définies : une température de 24°C et des conditions "Sunny".
Voulez-vous utiliser OpenAI au lieu d’Azure OpenAI ?
La principale différence entreOpenAIetAzure OpenAILa mise en œuvre est enhow you initialize the clientAvec OpenAI, vous utilisez le client standard avec une clé API directe, tandis que Azure OpenAI nécessite son client spécifique ainsi que des paramètres supplémentaires tels queazure_endpoint
etapi_version
Lorsque vous effectuez des appels de fonction, OpenAI fait référence aux modèles par leur nom standard, tandis que Azure OpenAI vous oblige à utiliser le nom de déploiement que vous avez créé dans votre portail Azure.
Voici la comparaison de code :
# Standard OpenAI implementation
from openai import OpenAI
# Initialize the client
client = OpenAI(
api_key="your-openai-api-key"
)
# Make an API call
response = client.chat.completions.create(
model="gpt-4o", # Standard model name
messages=[{"role": "user", "content": "What's the weather in Seattle?"}],
tools=functions,
tool_choice="auto"
)
# Azure OpenAI implementation
from openai import AzureOpenAI
# Initialize the client - requires more parameters
client = AzureOpenAI(
api_key="your-azure-openai-api-key",
api_version="2023-07-01-preview", # Azure-specific
azure_endpoint="https://your-resource-name.openai.azure.com" # Azure-specific
)
# Make an API call
response = client.chat.completions.create(
model="your-deployed-model-name", # The name you gave your deployment in Azure
messages=[{"role": "user", "content": "What's the weather in Seattle?"}],
tools=functions,
tool_choice="auto"
)
Le nouveau monde des possibilités
L'appel de fonction a tout changé. AI peut maintenant:
-
Book real appointments
-
Look up real-time data
-
Control smart home devices
-
Query databases
-
Process payments
-
And much more
C’est la différence entre une AI qui peut parler du monde et celle qui peut réellement interagir avec elle.
La prochaine fois que vous demandez à un chatbot de recevoir les nouvelles d'aujourd'hui ou d'allumer vos lumières, rappelez-vous: c'est la fonction d'appel qui fait que la magie se passe derrière les coulisses.
En résumé
L'appel de fonction brise le fossé entre le langage humain et les systèmes informatiques. Il permet à l'IA de comprendre quand appeler des outils et des services externes en utilisant des données correctement formatées - que vous utilisiez OpenAI directement ou Azure OpenAI Service. Nous avons exploré comment il transforme l'IA des répondeurs passifs en agents actifs capables de prendre des actions concrètes basées sur les demandes de langue naturelle.
Regarder vers l’avant
La véritable puissance de l’appel de fonction n’est pas dans ce qu’il peut faire aujourd’hui, mais dans ce qu’il permet de faire demain.A mesure que de plus en plus de systèmes exposent les endpoints API et que les normes d’authentification et de sécurité évoluent, nous approchons d’un monde où le langage naturel devient une interface universelle pour les systèmes numériques.
La pensée finale
La vraie révolution n'est pas seulement que l'IA puisse maintenant prendre des mesures - c'est que la barrière entre penser et faire se dissout. appel de fonction n'est pas seulement une caractéristique technique; c'est le moment où l'IA a franchi la page et est entré dans le monde, se transformant d'un observateur en un participant.