외부 API 호출

OpenAI API로 AI 시스템 개발하기

Francesca Donadoni

Curriculum Manager, DataCamp

API용 Python requests 라이브러리

Art Institute of Chicago 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 시스템 개발하기

tools에 함수 추가하기

    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 Seaside, Port of Honfleur | The Art Institute of Chicago
OpenAI API로 AI 시스템 개발하기

연습해 봅시다!

OpenAI API로 AI 시스템 개발하기

Preparing Video For Download...