外部APIの呼び出し

OpenAI API を使った AI システムの開発

Francesca Donadoni

Curriculum Manager, DataCamp

API向けPython requestsライブラリ

シカゴ美術館 API へのリクエストを示す図

OpenAI API を使った AI システムの開発

API向けPython requestsライブラリ

  • ライブラリのインポート
    import requests
    
  • URLの提供
    url = "https://api.artic.edu/api/v1/artworks/search"
    
  • クエリパラメータの提供
    querystring = {"q":keyword}
    
  • レスポンスを受け取る
    response = requests.request("GET", url, params=querystring)
    
1 https://api.artic.edu/docs/#quick-start
OpenAI API を使った AI システムの開発

関数をパッケージする

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
OpenAI API を使った AI システムの開発

文脈を追加する

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

messages=[ {"role": "system", "content": "You are an AI assistant, a specialist in history of art. You should interpret the user prompt, and based on it extract one keyword for recommending artwork related to their preference."},
{"role": "user", "content": "I don't have much time to visit the museum and would like some recommendations. I like the seaside and quiet places."} ],
OpenAI API を使った AI システムの開発

関数をツールに追加する

    function_definition=[{"type": "function",
            "function" : {
                "name": "get_artwork",
                "description": "This function calls the Art Institute of Chicago API 
                                to find artwork that matches a keyword",
                "parameters": {

"type": "object", "properties": { "artwork keyword": { "type": "string", "description": "The keyword to be passed to the get_artwork function."}}}, "result": {"type": "string"} }} ] )
OpenAI API を使った AI システムの開発

総まとめ

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"Here are some recommendations: {[i['title'] for i in json.loads(artwork)['data']]}") else: print("Apologies, I couldn't make any recommendations based on the request.")
else: print("Apologies, I couldn't find any artwork.")
else: print("I am sorry, but I could not understand your request.")
OpenAI API を使った AI システムの開発

最終的なレスポンス

Here are some recommendations: ['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']

海辺とボートを描いた印象派の絵画

1 オンフルール港の海辺 | シカゴ美術館
OpenAI API を使った AI システムの開発

練習しましょう!

OpenAI API を使った AI システムの開発

Preparing Video For Download...