Appeler des API externes

Concevoir des systèmes d’IA avec l’API OpenAI

Francesca Donadoni

Curriculum Manager, DataCamp

Bibliothèque Python requests pour les API

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

Concevoir des systèmes d’IA avec l’API 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
Concevoir des systèmes d’IA avec l’API OpenAI

Emballer la 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
Concevoir des systèmes d’IA avec l’API OpenAI

Ajouter du contexte

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

messages=[ {"role": "system", "content": "Vous êtes un assistant IA, spécialiste de l’histoire de l’art. Vous devez interpréter la demande utilisateur et en extraire un mot-clé pour recommander des œuvres selon ses préférences."},
{"role": "user", "content": "Je dispose de peu de temps pour visiter le musée et j’aimerais des recommandations. J’aime le bord de mer et les lieux calmes."} ],
Concevoir des systèmes d’IA avec l’API 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é à transmettre à la fonction get_artwork."}}}, "result": {"type": "string"} }} ] )
Concevoir des systèmes d’IA avec l’API OpenAI

Tout assembler

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 pas trouvé d’œuvre d’art.")
else: print("Désolé, je n’ai pas compris votre demande.")
Concevoir des systèmes d’IA avec l’API 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']

Un tableau impressionniste du bord de mer avec un bateau

1 Seaside, Port of Honfleur | The Art Institute of Chicago
Concevoir des systèmes d’IA avec l’API OpenAI

Passons à la pratique !

Concevoir des systèmes d’IA avec l’API OpenAI

Preparing Video For Download...