Intermédiaire
🧠 Fondamentaux
20 XP
0 personnes ont réussi
Definir un outil pour function calling
Le function calling transforme GPT d'un generateur de texte en un agent capable d'agir. Au lieu de te repondre "Je ne peux pas consulter la meteo", le modele peut decider d'appeler ta fonction get_meteo() et t'en donner le resultat.
Pour ca, tu dois décrire tes fonctions dans un format precis que l'API comprend. Chaque outil (tool) est un dictionnaire avec cette structure :
{ 'type': 'function', 'function': { 'name': 'nom_de_la_fonction', 'description': 'Ce que fait la fonction', 'parameters': { 'type': 'object', 'properties': { 'param1': {'type': 'string', 'description': 'Description du param1'}, 'param2': {'type': 'number', 'description': 'Description du param2'}, }, 'required': ['param1'] } } }
C'est du JSON Schema, un standard pour décrire la forme de données JSON.
Écris une fonction definir_outil_meteo() qui retourne la definition d'un outil 'get_meteo' avec : - description : 'Obtenir la meteo actuelle pour une ville' - paramètres : 'ville' (type string, requis) et 'unite' (type string, optionnel, description 'celsius ou fahrenheit')
Exemple : outil = definir_outil_meteo() outil['function']['name'] vaut 'get_meteo'
Tests (1/1)
Tests
outil = definir_outil_meteo()
assert outil['type'] == 'function', 'Le type doit etre function'
assert outil['function']['name'] == 'get_meteo', 'Le nom doit etre get_meteo'
assert 'meteo' in outil['function']['description'].lower(), 'La description doit mentionner la meteo'
params = outil['function']['parameters']
assert params['type'] == 'object', 'Le type des paramètres doit etre object'
assert 'ville' in params['properties'], 'Il doit y avoir un paramètre ville'
assert params['properties']['ville']['type'] == 'string', 'ville doit etre de type string'
assert 'unite' in params['properties'], 'Il doit y avoir un paramètre unite'
assert 'ville' in params['required'], 'ville doit etre requis'
assert 'unite' not in params.get('required', []), 'unite ne doit pas etre requis'
Indices (3 disponibles)
Solution officielle
def definir_outil_meteo():
return {
'type': 'function',
'function': {
'name': 'get_meteo',
'description': 'Obtenir la meteo actuelle pour une ville',
'parameters': {
'type': 'object',
'properties': {
'ville': {
'type': 'string',
'description': 'Le nom de la ville',
},
'unite': {
'type': 'string',
'description': 'celsius ou fahrenheit',
},
},
'required': ['ville']
}
}
}