Gọi API bên ngoài

Phát triển hệ thống AI với OpenAI API

Francesca Donadoni

Curriculum Manager, DataCamp

Thư viện requests của Python cho API

Sơ đồ minh họa một yêu cầu tới API Viện Nghệ thuật Chicago

Phát triển hệ thống AI với OpenAI API

Thư viện requests của Python cho API

  • Import thư viện
    import requests
    
  • Cung cấp URL
    url = "https://api.artic.edu/api/v1/artworks/search"
    
  • Thêm tham số truy vấn
    querystring = {"q":keyword}
    
  • Lấy phản hồi
    response = requests.request("GET", url, params=querystring)
    
1 https://api.artic.edu/docs/#quick-start
Phát triển hệ thống AI với OpenAI API

Đóng gói hàm

 

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
Phát triển hệ thống AI với OpenAI API

Bổ sung ngữ cảnh

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."} ],
Phát triển hệ thống AI với OpenAI API

Thêm hàm vào 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"} }} ] )
Phát triển hệ thống AI với OpenAI API

Tổng hợp lại

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.")
Phát triển hệ thống AI với OpenAI API

Phản hồi cuối cùng

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']

Một bức tranh ấn tượng về bờ biển với một con thuyền

1 Seaside, Port of Honfleur | The Art Institute of Chicago
Phát triển hệ thống AI với OpenAI API

Let's practice!

Phát triển hệ thống AI với OpenAI API

Preparing Video For Download...