Appeler des API externes

Développer des systèmes d'IA avec l'API d'OpenAI

Francesca Donadoni

Curriculum Manager, DataCamp

Bibliothèque Python requests pour les API

Un schéma illustrant une requête vers l'API de l'Art Institute of Chicago

Développer des systèmes d'IA avec l'API d'OpenAI

Bibliothèque Python requests pour les API

  • Importer la bibliothèque
    import requests
    
  • Fournir une URL
    url = "https://api.artic.edu/api/v1/artworks/search"
    
  • Fournir des paramètres de requête
    querystring = {"q":keyword}
    
  • Obtenir la réponse
    response = requests.request("GET", url, params=querystring)
    
1 https://api.artic.edu/docs/#quick-start
Développer des systèmes d'IA avec l'API d'OpenAI

Regrouper dans une fonction

 

import requests

def get_artwork(keyword):
    url = "https://api.artic.edu/api/v1/artworks/search"
    querystring = {"q":keyword}
    response = requests.request("GET", url, params=querystring)
    return response.text
Développer des systèmes d'IA avec l'API d'OpenAI

Ajouter du contexte

response = client.chat.completions.create(
    model="gpt-4o-mini",

messages=[ {"role": "system", "content": "Vous êtes un assistant IA, spécialiste en histoire de l'art. Vous devez interpréter l'invite de l'utilisateur et, à partir de celle-ci, extraire un mot-clé pour recommander des œuvres correspondant à ses préférences."},
{"role": "user", "content": "Je n'ai pas beaucoup de temps pour visiter le musée et j'aimerais des recommandations. J'aime le bord de mer et les endroits calmes."} ],
Développer des systèmes d'IA avec l'API d'OpenAI

Ajouter la fonction aux outils

    function_definition=[{"type": "function",
            "function" : {
                "name": "get_artwork",
                "description": "Cette fonction appelle l'API de l'Art Institute of Chicago 
                                pour trouver des œuvres correspondant à un mot-clé",
                "parameters": {

"type": "object", "properties": { "artwork keyword": { "type": "string", "description": "Le mot-clé transmis à la fonction get_artwork."}}}, "result": {"type": "string"} }} ] )
Développer des systèmes d'IA avec l'API d'OpenAI

Intégrer le tout

import json

if response.choices[0].finish_reason=='tool_calls': function_call = response.choices[0].message.tool_calls[0].function
if function_call.name == "get_artwork": artwork_keyword = json.loads(function_call.arguments)["artwork keyword"] artwork = get_artwork(artwork_keyword)
if artwork: print(f"Voici quelques recommandations : {[i['title'] for i in json.loads(artwork)['data']]}") else: print("Désolé, je n'ai pas pu faire de recommandations à partir de la demande.")
else: print("Désolé, je n'ai trouvé aucune œuvre.")
else: print("Désolé, je n'ai pas compris votre demande.")
Développer des systèmes d'IA avec l'API d'OpenAI

Réponse finale

Voici quelques recommandations : ['Seaside, Port of Honfleur', 
'Little Landscape at the Seaside (Kleine Landschaft am Meer)', 
'Museum of Contemporary Art, Niterói, Rio de Janeiro, Brazil, Four Sketches',
'A seaside outing', 'Stacks of Wheat (End of Day, Autumn)', 'Stack of Wheat', 
'Stacks of Wheat (Sunset, Snow Effect)', 'Stacks of Wheat (End of Summer)', 
'Stack of Wheat (Thaw, Sunset)', 'Waitress at a Seaside Teahouse']

Une peinture impressionniste du bord de mer avec un bateau

1 Seaside, Port of Honfleur | The Art Institute of Chicago
Développer des systèmes d'IA avec l'API d'OpenAI

Passons à la pratique !

Développer des systèmes d'IA avec l'API d'OpenAI

Preparing Video For Download...