使用 Slinc 进行 llama.cpp 的实验性Scala 3 绑定。
将llm4s
添加到您的build.sbt
中:
libraryDependencies + = " com.donderom " %% " llm4s " % " 0.11.0 "
对于 JDK 17,在项目根目录中添加.jvmopts
文件:
--add-modules=jdk.incubator.foreign
--enable-native-access=ALL-UNNAMED
版本兼容性:
LLM4S | 斯卡拉 | JDK | llama.cpp(提交哈希) |
---|---|---|---|
0.11+ | 3.3.0 | 17、19 | 229ffff(2024 年 5 月 8 日) |
LLM4S | 斯卡拉 | JDK | llama.cpp(提交哈希) |
---|---|---|---|
0.10+ | 3.3.0 | 17、19 | 49e7cb5(2023 年 7 月 31 日) |
0.6+ | --- | --- | 49e7cb5(2023 年 7 月 31 日) |
0.4+ | --- | --- | 70d26ac(2023 年 7 月 23 日) |
0.3+ | --- | --- | a6803ca(2023 年 7 月 14 日) |
0.1+ | 3.3.0-RC3 | 17、19 | 447ccbe(2023 年 6 月 25 日) |
import java . nio . file . Paths
import com . donderom . llm4s . *
// Path to the llama.cpp shared library
System .load( " llama.cpp/libllama.so " )
// Path to the model supported by llama.cpp
val model = Paths .get( " models/llama-7b-v2/llama-2-7b.Q4_K_M.gguf " )
val prompt = " Large Language Model is "
val llm = Llm (model)
// To print generation as it goes
llm(prompt).foreach : stream =>
stream.foreach : token =>
print(token)
// Or build a string
llm(prompt).foreach(stream => println(stream.mkString))
llm.close()
val llm = Llm (model)
llm.embeddings(prompt).foreach : embeddings =>
embeddings.foreach : embd =>
print(embd)
print( ' ' )
llm.close()