GenKit adalah perpustakaan yang mengabstraksi semua perbedaan di seluruh platform AI generatif. Ini seperti LangChain ringan untuk Swift. Tujuannya adalah menjadikan pengembangan Swift asli dengan AI generatif menjadi cepat, mudah, dan menyenangkan!
...
dependencies: [
. package ( url : " https://github.com/nathanborror/swift-gen-kit " , branch : " main " ) ,
] ,
targets: [
. target (
name : " YOUR_TARGET " ,
dependencies : [
. product ( name : " GenKit " , package : " swift-gen-kit " ) ,
]
) ,
] ,
...
Tetapkan layanan dan model yang ingin Anda gunakan:
let service = AnthropicService ( configuration : . init ( token : " ANTHROPIC_API_TOKEN " ) )
let model = Model ( id : " claude-3-5-sonnet-20240620 " )
Contoh penyelesaian obrolan yang hanya menghasilkan satu respons:
let request = ChatServiceRequest (
model : model ,
messages : [
. system ( content : " You are a helpful assistant. " ) ,
. user ( content : " Hello! " ) ,
]
)
let message = try await service . completion ( request )
print ( message )
Contoh sesi streaming yang dapat menjalankan beberapa generasi dalam satu lingkaran jika ada alat:
var request = ChatSessionRequest ( service : service , model : model )
request . with ( system : " You are a helpful assistant. " )
request . with ( history : [ . user ( content : " Hello! " ) ] )
let stream = ChatSession . shared . stream ( request )
for try await message in stream {
print ( message . content )
}
Heat adalah contoh bagus bagaimana GenKit dapat digunakan.
Sesi adalah tingkat abstraksi tertinggi dan paling mudah digunakan. Mereka berjalan dalam satu lingkaran dan memanggil alat sesuai kebutuhan dan mengirimkan respons alat kembali ke model hingga alat tersebut menyelesaikan pekerjaannya.
Layanan adalah antarmuka umum untuk bekerja di banyak platform. Mereka memungkinkan Anda mengganti platform yang mendasarinya dengan lancar tanpa mengubah kode apa pun.
Paket penyedia adalah antarmuka cepat yang berkomunikasi langsung dengan REST API penyedia model. Anda dapat menggunakannya secara langsung tetapi API-nya sedikit berbeda.