เข้าถึง OpenAI Chatgpt API อย่างเป็นทางการโดยใช้ Swift ทำงานบนแพลตฟอร์ม Apple ทั้งหมด
platform :ios , '15.0'
use_frameworks!
target 'MyApp' do
pod 'ChatGPTSwift' , '~> 1.3.1'
end ลงทะเบียนสำหรับคีย์ API จาก OpenAI เริ่มต้นด้วยคีย์ API
let api = ChatGPTAPI ( apiKey : " API_KEY " ) มี 2 API: สตรีมและปกติ
เซิร์ฟเวอร์จะสตรีมชิ้นข้อมูลจนกว่าจะเสร็จสมบูรณ์วิธีการ AsyncThrowingStream ซึ่งคุณสามารถวนลูปโดยใช้วงกลมเช่น So:
Task {
do {
let stream = try await api . sendMessageStream ( text : " What is ChatGPT? " )
for try await line in stream {
print ( line )
}
} catch {
print ( error . localizedDescription )
}
}คำขอ HTTP ปกติและวงจรการตอบกลับ เซิร์ฟเวอร์จะส่งข้อความที่สมบูรณ์ (จะต้องใช้เวลามากขึ้นในการตอบกลับ)
Task {
do {
let response = try await api . sendMessage ( text : " What is ChatGPT? " )
print ( response )
} catch {
print ( error . localizedDescription )
}
}
ทางเลือกคุณสามารถให้แบบจำลองระบบพรอมต์อุณหภูมิและแบบจำลองได้เช่นกัน
let response = try await api . sendMessage ( text : " What is ChatGPT? " ,
model : " gpt-4 " ,
systemText : " You are a CS Professor " ,
temperature : 0.5 )ค่าเริ่มต้นสำหรับพารามิเตอร์เหล่านี้คือ:
gpt-3.5-turboYou're a helpful assistant0.5หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับพารามิเตอร์เหล่านั้นคุณสามารถเยี่ยมชมเอกสาร chatgpt API อย่างเป็นทางการและหน้าบทนำ chatgpt API
ลูกค้าเก็บรายการประวัติของบทสนทนาที่จะรวมอยู่ในพรอมต์ใหม่ดังนั้น Chatgpt จึงตระหนักถึงบริบทก่อนหน้าของการสนทนา เมื่อส่งพรอมต์ใหม่ลูกค้าจะตรวจสอบให้แน่ใจว่าจำนวนโทเค็นไม่เกิน 4096 โดยใช้ไลบรารี gptencoder เพื่อคำนวณโทเค็นในสตริงในกรณีที่เกินโทเค็นการสนทนาก่อนหน้านี้บางส่วนจะถูกตัดทอน ในอนาคตฉันจะจัดหา API เพื่อระบุเกณฑ์โทเค็นเนื่องจากรุ่น GPT-4 ใหม่ยอมรับโทเค็น 8K ที่ใหญ่กว่ามากในทันที
คุณสามารถดูรายการประวัติปัจจุบันจากคุณสมบัติ historyList
print ( api . historyList )นอกจากนี้คุณยังสามารถลบรายการประวัติได้โดยการเรียกใช้
api . deleteHistoryList ( )คุณสามารถระบุรายการประวัติของคุณเองซึ่งจะแทนที่รายการประวัติที่เก็บไว้ จำไว้ว่าอย่าผ่านเกณฑ์โทเค็น 4096
let myHistoryList = [
Message ( role : " user " , content : " who is james bond? " )
Message ( role : " assistant " , content : " secret british agent with codename 007 " ) ,
Message ( role : " user " , content : " which one is the latest movie? " ) ,
Message ( role : " assistant " , content : " It's No Time to Die played by Daniel Craig " )
]
api . replaceHistoryList ( with : myHistoryList ) ฉันยังได้สร้าง Gptencoder Swift BPE encoder/Decoder สำหรับรุ่น OpenAI GPT อินเทอร์เฟซโปรแกรมสำหรับข้อความ tokenizing สำหรับ OpenAI GPT API
ฉันยังได้สร้าง gpttokenizerui, SPM lib ที่คุณสามารถรวมเข้ากับแอพของคุณเพื่อให้ GUI เพื่อป้อนข้อความและแสดงผลลัพธ์โทเค็นที่ใช้โดย GPT API
คุณสามารถตรวจสอบแอพสาธิตสำหรับ iOS และ macOS จาก Swiftuichatgpt repo