54 lines
1.2 KiB
Nix
54 lines
1.2 KiB
Nix
{ lib }:
|
|
let
|
|
inherit (lib)
|
|
mapAttrs
|
|
filterAttrs
|
|
any
|
|
flatten
|
|
listToAttrs
|
|
nameValuePair
|
|
;
|
|
in
|
|
{
|
|
# Convert llama-swap models to opencode format
|
|
toOpencodeModels =
|
|
llamaSwapConfig:
|
|
let
|
|
textGenModels = filterAttrs
|
|
(
|
|
name: model: any (t: t == "text-generation") (model.metadata.type or [ ])
|
|
)
|
|
(llamaSwapConfig.models or { });
|
|
|
|
localModels = mapAttrs
|
|
(
|
|
name: model:
|
|
{
|
|
inherit (model) name;
|
|
}
|
|
// (
|
|
if model.macros.ctx or null != null then
|
|
{
|
|
limit = {
|
|
context = lib.toInt model.macros.ctx;
|
|
input = lib.toInt model.macros.ctx;
|
|
output = lib.toInt model.macros.ctx;
|
|
};
|
|
}
|
|
else
|
|
{ }
|
|
)
|
|
)
|
|
textGenModels;
|
|
|
|
peerModels = listToAttrs (
|
|
flatten (
|
|
map (peer: map (modelName: nameValuePair modelName { name = modelName; }) peer.models) (
|
|
builtins.attrValues (llamaSwapConfig.peers or { })
|
|
)
|
|
)
|
|
);
|
|
in
|
|
localModels // peerModels;
|
|
}
|