GenKit est une bibliothèque qui résume toutes les différences entre les plates-formes d'IA générative. C'est un peu comme un LangChain léger pour Swift. L’objectif est de rendre le développement Swift natif avec l’IA générative rapide, facile et amusant !
...
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 " ) ,
]
) ,
] ,
...
Définissez le service et le modèle que vous souhaitez utiliser :
let service = AnthropicService ( configuration : . init ( token : " ANTHROPIC_API_TOKEN " ) )
let model = Model ( id : " claude-3-5-sonnet-20240620 " )
Un exemple de complétion de chat qui génère simplement une seule réponse :
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 )
Un exemple de session de streaming pouvant effectuer plusieurs générations en boucle si des outils sont présents :
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 est un bon exemple de la façon dont GenKit peut être utilisé.
Les sessions représentent le plus haut niveau d’abstraction et les plus simples à utiliser. Ils fonctionnent en boucle et appellent les outils selon les besoins et renvoient les réponses des outils au modèle jusqu'à ce qu'il termine son travail.
Les services constituent une interface commune permettant de travailler sur de nombreuses plateformes. Ils vous permettent de changer de manière transparente la plate-forme sous-jacente sans modifier aucun code.
Les packages de fournisseur sont des interfaces rapides qui communiquent directement avec les API REST du fournisseur de modèles. Vous pouvez les utiliser directement mais leurs API varient légèrement.