บทช่วยสอน OpenAI API

ฟังก์ชั่นด้วย OpenAI API

OpenAI API รองรับฟังก์ชัน รูปแบบ JSON และ API ภายนอก ในขณะที่เสนอราคาที่ต่ำกว่าและบริบทที่ยาวกว่า

การแนะนำ

OpenAI ประกาศการอัปเดตเมื่อวานนี้สำหรับ OpenAI API ซึ่งเปิดใช้งานฟังก์ชันการส่งผ่านไปยัง API

การเปลี่ยนแปลงทำให้:

  • บูรณาการกับ API ได้อย่างง่ายดาย
  • ลดความซับซ้อนในการใช้งานฟังก์ชันด้วย API

มาเริ่มกันเลย!

ฟังก์ชั่น

ฉันจะเริ่มต้นด้วยการแทรกไลบรารีที่จำเป็นและคีย์ OpenAI API ปกติ

!pip install openai
import os
import openai
import json
openai.api_key = os.getenv("OPENAI_API_KEY")

ต่อไปมากำหนดฟังก์ชันที่จะใช้:

def get_current_weather(location, unit="fahrenheit"):
    """Get the current weather in a given location"""
    weather_info = {
        "location": location,
        "temperature": "72",
        "unit": unit,
        "forecast": ["sunny", "windy"],
    }
    return json.dumps(weather_info)

ฟังก์ชันนี้เป็นเพียงตัวอย่าง ดังนั้นคุณสามารถสร้างฟังก์ชันใดก็ได้ ฟังก์ชันนี้อาจเป็นเช่นจุดสิ้นสุด API ภายนอก ในตัวอย่างพื้นฐานนี้ ฟังก์ชันจะส่งกลับค่าเดียวกันเสมอเพื่อความเรียบง่าย อย่างไรก็ตาม ฟังก์ชันที่ใช้ API ภายนอกจะส่งกลับการตอบสนองที่ไม่ซ้ำกันในแต่ละครั้ง

สรุปก็คือ ต่อไปเราจะใช้ OpenAI API เพื่อส่งคืนการตอบกลับในรูปแบบที่ฟังก์ชันนี้สามารถใช้ได้

มาทำการเรียก API กันเถอะ:

response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo-0613",
    messages=[{"role": "user", "content": "What's the weather like in Boston?"}],
    functions=[
        {
            "name": "get_current_weather",
            "description": "Get the current weather in a given location",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "The city and state, e.g. San Francisco, CA",
                    },
                    "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]},
                },
                "required": ["location"],
            },
        }
    ],
    function_call="auto",
)

message = response["choices"][0]["message"]
function_response = get_current_weather(
    location=message.get("location"),
    unit=message.get("unit"),
)

ตอนนี้ฉันสามารถรับชื่อฟังก์ชันด้วยรหัสต่อไปนี้:

print( message["function_call"]["name"])

ฉันสามารถแยกข้อมูลฟังก์ชั่นได้:

print(function_response)

การตอบสนองของฟังก์ชันประกอบด้วยข้อมูลในรูปแบบที่ต้องการซึ่งฟังก์ชันสามารถใช้งานได้

สิ่งนี้ทำให้สามารถสร้างโฟลว์ได้ ซึ่งขั้นแรกจะดึงคำค้นหาของผู้ใช้เป็นรูปแบบที่ฟังก์ชันร้องขอ จากนั้นฟังก์ชันจะถูกดำเนินการ และสุดท้ายการเรียก OpenAI API ใหม่จะตอบสนองคำตอบในรูปแบบที่ผู้ใช้ถามโดยอิงตามการตอบสนองของฟังก์ชัน

ข้อสรุป

ในบทช่วยสอนนี้ ฉันแนะนำการใช้ฟังก์ชันใน OpenAI API

ฉันเชื่อว่าฟีเจอร์ใหม่นี้ทำให้การสร้างโซ่ง่ายขึ้น โดยที่รวมเข้าด้วยกัน:

  • หน่วยความจำ
  • API ภายนอก
  • เชื่อมโยงการโทรซ้ำกับ OpenAI API เข้าด้วยกัน

ประกาศใหม่จาก OpenAI นี้มีประโยชน์อย่างยิ่ง

อ้างอิง

[1] OpenAI, 2023 การเรียกใช้ฟังก์ชันและการอัปเดต API อื่นๆ https://openai.com/blog/function-calling-and-other-api-updates ( ตัวอย่างที่ใช้คือตัวอย่างที่ OpenAI เตรียมไว้ให้ และผมจะค่อยๆ อัปเดตด้วยฟังก์ชันและตัวอย่างของตัวเอง