CleverBird
adalah Paket Swift yang menyediakan cara mudah untuk berinteraksi dengan API obrolan OpenAI dan melakukan berbagai tugas, termasuk penghitungan dan pengkodean token. Paket ini dirancang untuk memberikan Pengalaman Pengembang (DX) yang unggul dengan menjadikan rangkaian obrolan sebagai pusat interaksi.
CleverBird
menyertakan dukungan untuk penyematan dokumen dan kueri kesamaan. Hal ini menjadikannya alat serbaguna untuk berbagai aplikasi, terutama ketika perintah obrolan memerlukan memori kontekstual yang ditingkatkan.
CleverBird
berfokus secara sempit pada interaksi berbasis obrolan, dan menjadikannya luar biasa.
Harap dicatat bahwa CleverBird
adalah paket tidak resmi , tidak disediakan oleh OpenAI sendiri.
TokenEncoder
.EmbeddedDocumentStore
untuk mengelola dan menanyakan kesamaan dokumen. Impor paket CleverBird
:
import CleverBird
Inisialisasi OpenAIAPIConnection
dengan kunci API Anda. Harap perhatikan bahwa kunci API harus selalu dimuat dari variabel lingkungan, dan tidak dikodekan ke dalam sumber Anda. Setelah Anda memuat kunci API, teruskan ke penginisialisasi koneksi:
let openAIAPIConnection = OpenAIAPIConnection ( apiKey : < OPENAI_API_KEY > )
Buat instance ChatThread
dan tambahkan pesan sistem, pengguna, atau asisten ke thread chat:
let chatThread = ChatThread ( )
. addSystemMessage ( content : " You are a helpful assistant. " )
. addUserMessage ( content : " Who won the world series in 2020? " )
Hasilkan penyelesaian menggunakan utas obrolan dan meneruskan koneksi API:
let completion = try await chatThread . complete ( using : openAIAPIConnection )
Metode complete(using:)
juga mencakup berbagai parameter opsional:
let completion = chatThread . complete (
using : openAIAPIConnection ,
model : . gpt4o ,
temperature : 0.7 ,
maxTokens : 500
)
Pada contoh di atas, kami membuat penyelesaian menggunakan model tertentu, suhu, dan jumlah token maksimum. Semua parameter kecuali connection
bersifat opsional. Daftar lengkap parameternya adalah sebagai berikut:
connection
: Objek koneksi API (wajib).model
: Model yang akan digunakan untuk penyelesaian.temperature
: Mengontrol keacakan. Nilai yang lebih tinggi (hingga 1) menghasilkan keluaran yang lebih acak, sedangkan nilai yang lebih rendah menghasilkan keluaran yang lebih deterministik.topP
: Parameter pengambilan sampel inti. Ini menentukan massa probabilitas yang akan dicakup dengan prediksi.stop
: Array string. Model akan berhenti menghasilkan ketika menemukan salah satu string ini.maxTokens
: Jumlah maksimum token yang akan dihasilkan.presencePenalty
: Penalti untuk penggunaan token yang sudah digunakan.frequencyPenalty
: Penalti karena sering menggunakan token.functions
: Fungsi alat (alias "tindakan") untuk tersedia bagi model.functionCallMode
: Mode pemanggilan fungsi: .auto
, .none
, atau .specific
.Pesan respons secara otomatis ditambahkan ke thread, sehingga Anda dapat terus berinteraksi dengannya hanya dengan menambahkan pesan pengguna baru dan meminta penyelesaian tambahan.
Anda dapat menyesuaikan setiap panggilan untuk complete(using:)
dengan nilai berbeda untuk parameter yang sama pada panggilan berikutnya di thread yang sama, jika Anda ingin:
let completion = try await chatThread . complete (
using : openAIAPIConnection ,
model : . gpt35Turbo ,
temperature : 0.5 ,
maxTokens : 300
)
Hasilkan penyelesaian streaming menggunakan versi streaming thread obrolan:
let chatThread = ChatThread ( ) . withStreaming ( )
let completionStream = try await chatThread . complete ( using : openAIAPIConnection )
for try await messageChunk in completionStream {
print ( " Received message chunk: ( messageChunk ) " )
}
Sama seperti penyelesaian non-streaming, pesan akan secara otomatis ditambahkan ke thread setelah selesai streaming, namun streaming memungkinkan Anda melihatnya saat pesan masuk.
Untuk menyertakan penggunaan (jumlah token yang digunakan dalam prompt dan penyelesaian), tambahkan set streamOptions
dalam metode complete
. Penggunaan tersedia sebagai properti StreamableChatThread
setelah streaming selesai.
let chatThread = ChatThread ( ) . withStreaming ( )
let completionStream = try await chatThread . complete ( using : openAIAPIConnection , includeUsage : true )
for try await messageChunk in completionStream {
print ( " Received message chunk: ( messageChunk ) " )
}
if let usage = completionStream . usage {
print ( " Usage: ( usage ) " )
}
Hitung jumlah token untuk pesan di rangkaian obrolan:
let tokenCount = try chatThread . tokenCount ( )
Jika Anda perlu menghitung token atau menyandikan/mendekode teks di luar thread obrolan, gunakan kelas TokenEncoder
:
let tokenEncoder = try TokenEncoder ( model : . gpt3 )
let encodedTokens = try tokenEncoder . encode ( text : " Hello, world! " )
let decodedText = try tokenEncoder . decode ( tokens : encodedTokens )
CleverBird
mendukung Panggilan Fungsi. Fitur canggih ini memungkinkan pengembang untuk menentukan perintah khusus mereka sendiri, sehingga lebih mudah untuk mengontrol perilaku AI. Panggilan Fungsi dapat disertakan dalam ChatThread
dan digunakan dalam metode complete()
.
Pertama, tentukan parameter fungsi Anda dan fungsi itu sendiri. Kelas Function.Parameters
digunakan untuk mengatur properti dan parameter yang diperlukan dari fungsi Anda.
let getCurrentWeatherParameters = Function . Parameters (
properties : [
" location " : Function . Parameters . Property ( type : . string ,
description : " The city and state, e.g. San Francisco, CA " ) ,
" format " : Function . Parameters . Property ( type : . string ,
description : " The temperature unit to use. Infer this from the user's location. " ,
enumCases : [ " celsius " , " fahrenheit " ] )
] ,
required : [ " location " , " format " ] )
let getCurrentWeather = Function ( name : " get_current_weather " ,
description : " Get the current weather " ,
parameters : getCurrentWeatherParameters )
Kemudian, inisialisasi ChatThread
Anda dengan koneksi API dan serangkaian fungsi:
let chatThread = ChatThread ( functions : [ getCurrentWeather ] )
. addSystemMessage ( content : " You are a helpful assistant. " )
Terakhir, panggil fungsi complete(using:)
untuk menghasilkan respons. Jika asisten perlu menjalankan suatu fungsi selama percakapan, asisten akan menggunakan definisi fungsi yang Anda berikan.
Harap diperhatikan bahwa saat ini fungsi hanya didukung pada penyelesaian non-streaming.
Kelas EmbeddedDocumentStore
menyediakan cara mudah untuk mengelola dan menanyakan kumpulan dokumen berdasarkan kesamaannya. Kelas ini memungkinkan Anda untuk:
Pertama, tambahkan instance EmbeddedDocumentStore
ke kode Anda:
let openAIAPIConnection = OpenAIAPIConnection ( apiKey : " your_api_key_here " )
let embeddedDocumentStore = EmbeddedDocumentStore ( connection : connection )
Anda dapat menambahkan satu dokumen atau sekumpulan dokumen ke penyimpanan.
let singleDocument = " My single document "
try await embeddedDocumentStore . embedAndStore ( singleDocument )
let documentCollection = [ " First document " , " Second document " , " Third document " ]
try await embeddedDocumentStore . embedAndStore ( documentCollection )
Anda dapat menanyakan toko untuk dokumen yang mirip dengan dokumen masukan.
let similarityResults = try await embeddedDocumentStore . queryDocumentSimilarity ( " Query text here " )
let mostSimilarResult = similarityResults . first ? . document ?? " No result returned "
Penyimpanan dapat disimpan dan dimuat dari file (diwakili dalam format JSON) untuk penyimpanan persisten.
embeddedDocumentStore . save ( to : fileURL )
embeddedDocumentStore . load ( from : fileURL )
CleverBird
ditulis oleh BT Franklin (@btfranklin) mulai tahun 2023 dan seterusnya dan dilisensikan di bawah lisensi MIT. Lihat LISENSI.md.