Вызов внешних API

Разработка ИИ-систем с помощью OpenAI API

Francesca Donadoni

Curriculum Manager, DataCamp

Библиотека requests для работы с API

Диаграмма запроса к API Художественного института Чикаго

Разработка ИИ-систем с помощью OpenAI API

Библиотека requests для работы с API

  • Импортируйте библиотеку
    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

Оборачиваем логику в функцию

 

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

Добавляем контекст

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

Добавляем функцию в инструменты

    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

Собираем всё вместе

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

Итоговый ответ

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 Seaside, Port of Honfleur | The Art Institute of Chicago
Разработка ИИ-систем с помощью OpenAI API

Давайте потренируемся!

Разработка ИИ-систем с помощью OpenAI API

Preparing Video For Download...