GenKit es una biblioteca que abstrae todas las diferencias entre las plataformas de IA generativa. Es una especie de LangChain ligero para Swift. ¡El objetivo es hacer que el desarrollo nativo de Swift con IA generativa sea rápido, fácil y divertido!
...
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 " ) ,
]
) ,
] ,
...
Establece el servicio y modelo que deseas utilizar:
let service = AnthropicService ( configuration : . init ( token : " ANTHROPIC_API_TOKEN " ) )
let model = Model ( id : " claude-3-5-sonnet-20240620 " )
Un ejemplo de finalización de chat que solo genera una única respuesta:
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 ejemplo de sesión de streaming que puede realizar varias generaciones en un bucle si hay herramientas presentes:
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 )
}
El calor es un buen ejemplo de cómo se puede utilizar GenKit.
Las sesiones son el nivel más alto de abstracción y las más fáciles de usar. Se ejecutan en un bucle y llaman a las herramientas según sea necesario y envían respuestas de las herramientas al modelo hasta que completa su trabajo.
Los servicios son una interfaz común para trabajar en muchas plataformas. Le permiten cambiar sin problemas la plataforma subyacente sin cambiar ningún código.
Los paquetes de proveedores son interfaces rápidas que se comunican directamente con las API REST del proveedor de modelos. Puede usarlos directamente, pero sus API varían ligeramente.