SwiftLlama

这基本上是 llama.cpp 包的一个封装,本仓库的目的是为 Swift 开发者提供一个更 Swift 化的 API。

安装

.package(url: "https://github.com/ShenghaiWang/SwiftLlama.git", from: "0.3.0")

用法

1 使用模型路径初始化 swiftLlama。

let swiftLlama = try SwiftLlama(modelPath: path))

2 调用它

不使用流式传输的调用

let response: String = try await swiftLlama.start(for: prompt)

使用 AsyncStream 进行流式传输

for try await value in await swiftLlama.start(for: prompt) {
    result += value
}

使用 Combine publisher 进行流式传输

await swiftLlama.start(for: prompt)
    .sink { _ in

    } receiveValue: {[weak self] value in
        self?.result += value
    }.store(in: &cancallable)

测试项目

这个视频 展示了使用 Llama 3 模型运行的命令行应用程序。

如果想在 iOS 或 MacOS 应用程序中使用它,请参考 TestProjects 文件夹。

支持的模型

理论上,它应该支持 llama.cpp 支持的所有模型。但是,对于某些模型,可能需要更新提示格式。

如果您想快速测试一下,请使用此模型 codellama-7b-instruct.Q4_K_S.gguf

欢迎贡献!!!