node-llama-cpp 3.4.3 → 3.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/ChatWrapper.js +45 -0
- package/dist/ChatWrapper.js.map +1 -1
- package/dist/bindings/utils/compileLLamaCpp.js +2 -0
- package/dist/bindings/utils/compileLLamaCpp.js.map +1 -1
- package/dist/chatWrappers/DeepSeekChatWrapper.d.ts +37 -0
- package/dist/chatWrappers/DeepSeekChatWrapper.js +294 -0
- package/dist/chatWrappers/DeepSeekChatWrapper.js.map +1 -0
- package/dist/chatWrappers/FunctionaryChatWrapper.js +39 -13
- package/dist/chatWrappers/FunctionaryChatWrapper.js.map +1 -1
- package/dist/chatWrappers/Llama3_1ChatWrapper.d.ts +0 -3
- package/dist/chatWrappers/Llama3_1ChatWrapper.js +5 -4
- package/dist/chatWrappers/Llama3_1ChatWrapper.js.map +1 -1
- package/dist/chatWrappers/Llama3_2LightweightChatWrapper.js +1 -1
- package/dist/chatWrappers/Llama3_2LightweightChatWrapper.js.map +1 -1
- package/dist/chatWrappers/generic/JinjaTemplateChatWrapper.d.ts +10 -1
- package/dist/chatWrappers/generic/JinjaTemplateChatWrapper.js +8 -2
- package/dist/chatWrappers/generic/JinjaTemplateChatWrapper.js.map +1 -1
- package/dist/chatWrappers/generic/TemplateChatWrapper.d.ts +17 -1
- package/dist/chatWrappers/generic/TemplateChatWrapper.js +10 -2
- package/dist/chatWrappers/generic/TemplateChatWrapper.js.map +1 -1
- package/dist/chatWrappers/generic/utils/templateSegmentOptionsToChatWrapperSettings.d.ts +22 -0
- package/dist/chatWrappers/generic/utils/templateSegmentOptionsToChatWrapperSettings.js +28 -0
- package/dist/chatWrappers/generic/utils/templateSegmentOptionsToChatWrapperSettings.js.map +1 -0
- package/dist/chatWrappers/utils/resolveChatWrapper.d.ts +46 -3
- package/dist/chatWrappers/utils/resolveChatWrapper.js +6 -2
- package/dist/chatWrappers/utils/resolveChatWrapper.js.map +1 -1
- package/dist/cli/commands/ChatCommand.js +38 -7
- package/dist/cli/commands/ChatCommand.js.map +1 -1
- package/dist/cli/commands/PullCommand.js +2 -1
- package/dist/cli/commands/PullCommand.js.map +1 -1
- package/dist/cli/commands/inspect/commands/InspectEstimateCommand.js +18 -5
- package/dist/cli/commands/inspect/commands/InspectEstimateCommand.js.map +1 -1
- package/dist/cli/commands/inspect/commands/InspectGgufCommand.js +16 -5
- package/dist/cli/commands/inspect/commands/InspectGgufCommand.js.map +1 -1
- package/dist/cli/recommendedModels.js +137 -67
- package/dist/cli/recommendedModels.js.map +1 -1
- package/dist/cli/utils/resolveCommandGgufPath.d.ts +8 -0
- package/dist/cli/utils/resolveCommandGgufPath.js +45 -1
- package/dist/cli/utils/resolveCommandGgufPath.js.map +1 -1
- package/dist/cli/utils/resolveModelRecommendationFileOptions.d.ts +2 -2
- package/dist/cli/utils/resolveModelRecommendationFileOptions.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/evaluator/LlamaChat/LlamaChat.d.ts +87 -5
- package/dist/evaluator/LlamaChat/LlamaChat.js +770 -194
- package/dist/evaluator/LlamaChat/LlamaChat.js.map +1 -1
- package/dist/evaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.js +55 -1
- package/dist/evaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.js.map +1 -1
- package/dist/evaluator/LlamaChatSession/LlamaChatSession.d.ts +22 -7
- package/dist/evaluator/LlamaChatSession/LlamaChatSession.js +28 -8
- package/dist/evaluator/LlamaChatSession/LlamaChatSession.js.map +1 -1
- package/dist/evaluator/LlamaChatSession/utils/LlamaChatSessionPromptCompletionEngine.js +1 -1
- package/dist/evaluator/LlamaChatSession/utils/LlamaChatSessionPromptCompletionEngine.js.map +1 -1
- package/dist/evaluator/LlamaChatSession/utils/defineChatSessionFunction.d.ts +9 -2
- package/dist/evaluator/LlamaChatSession/utils/defineChatSessionFunction.js.map +1 -1
- package/dist/evaluator/LlamaCompletion.js +61 -48
- package/dist/evaluator/LlamaCompletion.js.map +1 -1
- package/dist/evaluator/LlamaGrammar.d.ts +2 -2
- package/dist/evaluator/LlamaGrammar.js +2 -2
- package/dist/evaluator/LlamaModel/LlamaModel.d.ts +1 -1
- package/dist/evaluator/LlamaModel/LlamaModel.js +1 -1
- package/dist/gguf/readGgufFileInfo.js +7 -4
- package/dist/gguf/readGgufFileInfo.js.map +1 -1
- package/dist/gguf/types/GgufMetadataTypes.d.ts +2 -2
- package/dist/gguf/types/GgufMetadataTypes.js +2 -2
- package/dist/gguf/types/GgufMetadataTypes.js.map +1 -1
- package/dist/gguf/utils/getGgufFileTypeName.d.ts +1 -1
- package/dist/gguf/utils/ggufQuantNames.d.ts +2 -0
- package/dist/gguf/utils/ggufQuantNames.js +40 -0
- package/dist/gguf/utils/ggufQuantNames.js.map +1 -0
- package/dist/gguf/utils/normalizeGgufDownloadUrl.js +1 -1
- package/dist/gguf/utils/normalizeGgufDownloadUrl.js.map +1 -1
- package/dist/gguf/utils/resolveBinarySplitGgufPartUrls.js +1 -2
- package/dist/gguf/utils/resolveBinarySplitGgufPartUrls.js.map +1 -1
- package/dist/index.d.ts +7 -5
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types.d.ts +32 -2
- package/dist/types.js +7 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/LlamaText.js +8 -9
- package/dist/utils/LlamaText.js.map +1 -1
- package/dist/utils/TokenStreamRegulator.d.ts +2 -0
- package/dist/utils/TokenStreamRegulator.js +12 -0
- package/dist/utils/TokenStreamRegulator.js.map +1 -1
- package/dist/utils/createModelDownloader.d.ts +21 -4
- package/dist/utils/createModelDownloader.js +83 -36
- package/dist/utils/createModelDownloader.js.map +1 -1
- package/dist/utils/getChatWrapperSegmentDefinition.d.ts +2 -0
- package/dist/utils/getChatWrapperSegmentDefinition.js +7 -0
- package/dist/utils/getChatWrapperSegmentDefinition.js.map +1 -0
- package/dist/utils/modelFileAccesTokens.js +1 -1
- package/dist/utils/modelFileAccesTokens.js.map +1 -1
- package/dist/utils/parseModelFileName.d.ts +5 -0
- package/dist/utils/parseModelFileName.js +63 -4
- package/dist/utils/parseModelFileName.js.map +1 -1
- package/dist/utils/parseModelUri.d.ts +30 -2
- package/dist/utils/parseModelUri.js +199 -24
- package/dist/utils/parseModelUri.js.map +1 -1
- package/dist/utils/resolveModelDestination.d.ts +4 -3
- package/dist/utils/resolveModelDestination.js +25 -2
- package/dist/utils/resolveModelDestination.js.map +1 -1
- package/dist/utils/resolveModelFile.d.ts +1 -1
- package/dist/utils/resolveModelFile.js +61 -20
- package/dist/utils/resolveModelFile.js.map +1 -1
- package/llama/binariesGithubRelease.json +1 -1
- package/llama/gitRelease.bundle +0 -0
- package/llama/grammars/README.md +4 -4
- package/llama/llama.cpp.info.json +2 -2
- package/package.json +36 -35
- package/templates/packed/electron-typescript-react.json +1 -1
- package/templates/packed/node-typescript.json +1 -1
|
@@ -1,17 +1,43 @@
|
|
|
1
1
|
import filenamify from "filenamify";
|
|
2
2
|
import { normalizeGgufDownloadUrl } from "../gguf/utils/normalizeGgufDownloadUrl.js";
|
|
3
3
|
import { getFilenameForBinarySplitGgufPartUrls, resolveBinarySplitGgufPartUrls } from "../gguf/utils/resolveBinarySplitGgufPartUrls.js";
|
|
4
|
-
import { getGgufSplitPartsInfo } from "../gguf/utils/resolveSplitGgufParts.js";
|
|
4
|
+
import { createSplitPartFilename, getGgufSplitPartsInfo } from "../gguf/utils/resolveSplitGgufParts.js";
|
|
5
|
+
import { ggufQuantNames } from "../gguf/utils/ggufQuantNames.js";
|
|
5
6
|
import { isUrl } from "./isUrl.js";
|
|
7
|
+
import { resolveModelFileAccessTokensTryHeaders } from "./modelFileAccesTokens.js";
|
|
8
|
+
import { parseModelFileName } from "./parseModelFileName.js";
|
|
6
9
|
const defaultHuggingFaceBranch = "main";
|
|
10
|
+
const defaultHuggingFaceFileQuantization = "Q4_K_M";
|
|
11
|
+
export const genericFilePartNumber = "{:\n{number}\n:}";
|
|
7
12
|
export function parseModelUri(urlOrUri, convertUrlToSupportedUri = false) {
|
|
8
|
-
if (urlOrUri.startsWith("hf
|
|
9
|
-
return parseHuggingFaceUriContent(urlOrUri.slice("hf
|
|
13
|
+
if (urlOrUri.startsWith("hf://"))
|
|
14
|
+
return parseHuggingFaceUriContent(urlOrUri.slice("hf://".length), urlOrUri);
|
|
15
|
+
else if (urlOrUri.startsWith("huggingface://"))
|
|
16
|
+
return parseHuggingFaceUriContent(urlOrUri.slice("huggingface://".length), urlOrUri);
|
|
17
|
+
else if (urlOrUri.startsWith("hf:"))
|
|
18
|
+
return parseHuggingFaceUriContent(urlOrUri.slice("hf:".length), urlOrUri);
|
|
10
19
|
else if (urlOrUri.startsWith("huggingface:"))
|
|
11
|
-
return parseHuggingFaceUriContent(urlOrUri.slice("huggingface:".length));
|
|
20
|
+
return parseHuggingFaceUriContent(urlOrUri.slice("huggingface:".length), urlOrUri);
|
|
21
|
+
else if (urlOrUri.startsWith("hf.co/"))
|
|
22
|
+
return parseHuggingFaceUriContent(urlOrUri.slice("hf.co/".length), urlOrUri);
|
|
23
|
+
else if (urlOrUri.startsWith("huggingface.co/"))
|
|
24
|
+
return parseHuggingFaceUriContent(urlOrUri.slice("huggingface.co/".length), urlOrUri);
|
|
25
|
+
if (isUrl(urlOrUri)) {
|
|
26
|
+
const parsedUrl = new URL(urlOrUri);
|
|
27
|
+
if (parsedUrl.hostname === "huggingface.co" || parsedUrl.hostname === "hf.co") {
|
|
28
|
+
const pathnameParts = parsedUrl.pathname.split("/");
|
|
29
|
+
const slashes = pathnameParts.length - 1;
|
|
30
|
+
const [, user, model] = pathnameParts;
|
|
31
|
+
if (slashes === 2 && user != null && model != null) {
|
|
32
|
+
return parseHuggingFaceUriContent([
|
|
33
|
+
decodeURIComponent(user), "/", decodeURIComponent(model)
|
|
34
|
+
].join(""), urlOrUri);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
12
38
|
if (convertUrlToSupportedUri && isUrl(urlOrUri)) {
|
|
13
39
|
const parsedUrl = new URL(normalizeGgufDownloadUrl(urlOrUri));
|
|
14
|
-
if (parsedUrl.hostname === "huggingface.co") {
|
|
40
|
+
if (parsedUrl.hostname === "huggingface.co" || parsedUrl.hostname === "hf.co") {
|
|
15
41
|
const pathnameParts = parsedUrl.pathname.split("/");
|
|
16
42
|
const [, user, model, resolve, branch, ...pathParts] = pathnameParts;
|
|
17
43
|
const filePath = pathParts.join("/");
|
|
@@ -26,7 +52,7 @@ export function parseModelUri(urlOrUri, convertUrlToSupportedUri = false) {
|
|
|
26
52
|
branch !== defaultHuggingFaceBranch
|
|
27
53
|
? `#${decodeURIComponent(branch)}`
|
|
28
54
|
: ""
|
|
29
|
-
].join(""));
|
|
55
|
+
].join(""), urlOrUri);
|
|
30
56
|
}
|
|
31
57
|
}
|
|
32
58
|
}
|
|
@@ -40,9 +66,157 @@ export function isModelUri(modelUri) {
|
|
|
40
66
|
return false;
|
|
41
67
|
}
|
|
42
68
|
}
|
|
43
|
-
function
|
|
69
|
+
export async function resolveParsedModelUri(modelUri, { tokens, signal, authorizationHeader } = {}) {
|
|
70
|
+
if (modelUri == null)
|
|
71
|
+
return modelUri;
|
|
72
|
+
if (modelUri.type === "resolved")
|
|
73
|
+
return modelUri;
|
|
74
|
+
if (modelUri.resolveDetails.type !== "hf")
|
|
75
|
+
throw new Error(`Unsupported model URI type: ${modelUri.resolveDetails.type}`);
|
|
76
|
+
const modelTag = modelUri.resolveDetails.tag || "latest";
|
|
77
|
+
const manifest = await fetchHuggingFaceModelManifest({
|
|
78
|
+
user: modelUri.resolveDetails.user,
|
|
79
|
+
model: modelUri.resolveDetails.model,
|
|
80
|
+
modelTag,
|
|
81
|
+
fullUri: modelUri.uri,
|
|
82
|
+
tokens,
|
|
83
|
+
signal,
|
|
84
|
+
authorizationHeader
|
|
85
|
+
});
|
|
86
|
+
const filename = manifest.rfilename;
|
|
87
|
+
const splitPartsInfo = getGgufSplitPartsInfo(filename);
|
|
88
|
+
function resolveQuantizationText() {
|
|
89
|
+
if (modelTag.toLowerCase() !== "latest")
|
|
90
|
+
return modelTag.toUpperCase();
|
|
91
|
+
if (filename.toLowerCase().includes(defaultHuggingFaceFileQuantization.toLowerCase()))
|
|
92
|
+
return defaultHuggingFaceFileQuantization;
|
|
93
|
+
const quantizationText = parseModelFileName(filename).quantization;
|
|
94
|
+
if (quantizationText != null && ggufQuantNames.has(quantizationText))
|
|
95
|
+
return quantizationText;
|
|
96
|
+
return "";
|
|
97
|
+
}
|
|
98
|
+
const quantizationText = resolveQuantizationText();
|
|
99
|
+
const resolvedBaseFilename = modelUri.baseFilename + (quantizationText !== "" ? ("." + quantizationText) : "") + ".gguf";
|
|
100
|
+
const resolvedFilename = splitPartsInfo != null
|
|
101
|
+
? createSplitPartFilename(resolvedBaseFilename, splitPartsInfo.part, splitPartsInfo.parts)
|
|
102
|
+
: resolvedBaseFilename;
|
|
103
|
+
const resolvedUrl = normalizeGgufDownloadUrl([
|
|
104
|
+
"https://huggingface.co/", encodeURIComponent(modelUri.resolveDetails.user),
|
|
105
|
+
"/", encodeURIComponent(modelUri.resolveDetails.model),
|
|
106
|
+
"/resolve/", encodeURIComponent(defaultHuggingFaceBranch), "/",
|
|
107
|
+
filename
|
|
108
|
+
.split("/")
|
|
109
|
+
.map((item) => encodeURIComponent(item))
|
|
110
|
+
.join("/"),
|
|
111
|
+
"?download=true"
|
|
112
|
+
].join(""));
|
|
113
|
+
return {
|
|
114
|
+
type: "resolved",
|
|
115
|
+
uri: modelUri.uri,
|
|
116
|
+
filePrefix: modelUri.filePrefix,
|
|
117
|
+
filename: resolvedFilename,
|
|
118
|
+
fullFilename: `${modelUri.filePrefix}${resolvedFilename}`,
|
|
119
|
+
resolvedUrl
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
export function getAuthorizationHeader(headers) {
|
|
123
|
+
return headers?.["Authorization"] || headers?.["authorization"];
|
|
124
|
+
}
|
|
125
|
+
async function fetchHuggingFaceModelManifest({ user, model, modelTag, fullUri, tokens, signal, authorizationHeader }) {
|
|
126
|
+
const manifestUrl = [
|
|
127
|
+
"https://huggingface.co/v2/", encodeURIComponent(user),
|
|
128
|
+
"/", encodeURIComponent(model),
|
|
129
|
+
"/manifests/", encodeURIComponent(modelTag)
|
|
130
|
+
].join("");
|
|
131
|
+
const headersToTry = [
|
|
132
|
+
{},
|
|
133
|
+
await resolveModelFileAccessTokensTryHeaders(manifestUrl, tokens)
|
|
134
|
+
];
|
|
135
|
+
while (headersToTry.length > 0) {
|
|
136
|
+
const headers = headersToTry.shift();
|
|
137
|
+
let response;
|
|
138
|
+
try {
|
|
139
|
+
response = await fetch(manifestUrl, {
|
|
140
|
+
headers: {
|
|
141
|
+
...(authorizationHeader != null ? { "Authorization": authorizationHeader } : {}),
|
|
142
|
+
...headers,
|
|
143
|
+
// we need this to get the `ggufFile` field in the response
|
|
144
|
+
// https://github.com/ggml-org/llama.cpp/pull/11195
|
|
145
|
+
"User-Agent": "llama-cpp"
|
|
146
|
+
},
|
|
147
|
+
signal
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
catch (err) {
|
|
151
|
+
throw new Error(`Failed to fetch manifest for resolving URI ${JSON.stringify(fullUri)}: ${err}`);
|
|
152
|
+
}
|
|
153
|
+
if ((response.status >= 500 || response.status === 429 || response.status === 401) && headersToTry.length > 0)
|
|
154
|
+
continue;
|
|
155
|
+
if (response.status === 400 || response.status === 404)
|
|
156
|
+
throw new Error(`Cannot get quantization "${modelTag}" for model "hf:${user}/${model}" or it does not exist`);
|
|
157
|
+
if (!response.ok)
|
|
158
|
+
throw new Error(`Failed to fetch manifest for ${JSON.stringify(fullUri)}: ${response.status} ${response.statusText}`);
|
|
159
|
+
try {
|
|
160
|
+
const json = await response.json();
|
|
161
|
+
if (json?.ggufFile?.rfilename == null)
|
|
162
|
+
throw new Error(`Invalid manifest for ${JSON.stringify(fullUri)}`);
|
|
163
|
+
return json.ggufFile;
|
|
164
|
+
}
|
|
165
|
+
catch (err) {
|
|
166
|
+
throw new Error(`Invalid manifest response for ${JSON.stringify(fullUri)}`);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
throw new Error(`Failed to fetch manifest for ${JSON.stringify(fullUri)}: no more headers to try`);
|
|
170
|
+
}
|
|
171
|
+
function parseHuggingFaceUriContent(uri, fullUri) {
|
|
44
172
|
const [user, model, ...pathParts] = uri.split("/");
|
|
45
173
|
let rest = pathParts.join("/");
|
|
174
|
+
if (user != null && model != null && (rest === "" || model.includes(":"))) {
|
|
175
|
+
const [actualModel, tag, ...tagParts] = model.split(":");
|
|
176
|
+
const actualTag = tagParts.length > 0
|
|
177
|
+
? [tag, ...tagParts].join(":").trimEnd()
|
|
178
|
+
: (tag ?? "").trimEnd();
|
|
179
|
+
const assumedQuant = ggufQuantNames.has(actualTag.toUpperCase())
|
|
180
|
+
? actualTag.toUpperCase()
|
|
181
|
+
: undefined;
|
|
182
|
+
const resolvedTag = assumedQuant != null
|
|
183
|
+
? assumedQuant
|
|
184
|
+
: actualTag;
|
|
185
|
+
if (actualModel == null || actualModel === "" || user === "")
|
|
186
|
+
throw new Error(`Invalid Hugging Face URI: ${fullUri}`);
|
|
187
|
+
const baseFilename = actualModel.toLowerCase().endsWith("-gguf")
|
|
188
|
+
? filenamify(actualModel.slice(0, -"-gguf".length))
|
|
189
|
+
: filenamify(actualModel);
|
|
190
|
+
const filePrefix = buildHuggingFaceFilePrefix(user, actualModel, defaultHuggingFaceBranch, [], baseFilename + ".gguf");
|
|
191
|
+
return {
|
|
192
|
+
type: "unresolved",
|
|
193
|
+
uri: `hf:${user}/${actualModel}${resolvedTag !== "" ? `:${resolvedTag}` : ""}`,
|
|
194
|
+
filePrefix,
|
|
195
|
+
baseFilename,
|
|
196
|
+
possibleFullFilenames: assumedQuant != null
|
|
197
|
+
? [
|
|
198
|
+
`${filePrefix}${baseFilename}.${assumedQuant}.gguf`,
|
|
199
|
+
`${filePrefix}${baseFilename}.${assumedQuant}-00001-of-${genericFilePartNumber}.gguf`
|
|
200
|
+
]
|
|
201
|
+
: (resolvedTag != null && resolvedTag !== "" && resolvedTag !== "latest")
|
|
202
|
+
? [
|
|
203
|
+
`${filePrefix}${baseFilename}.${resolvedTag.toUpperCase()}.gguf`,
|
|
204
|
+
`${filePrefix}${baseFilename}.${resolvedTag.toUpperCase()}-00001-of-${genericFilePartNumber}.gguf`
|
|
205
|
+
]
|
|
206
|
+
: [
|
|
207
|
+
`${filePrefix}${baseFilename}.${defaultHuggingFaceFileQuantization}.gguf`,
|
|
208
|
+
`${filePrefix}${baseFilename}.${defaultHuggingFaceFileQuantization}-00001-of-${genericFilePartNumber}.gguf`,
|
|
209
|
+
`${filePrefix}${baseFilename}.gguf`,
|
|
210
|
+
`${filePrefix}${baseFilename}-00001-of-${genericFilePartNumber}.gguf`
|
|
211
|
+
],
|
|
212
|
+
resolveDetails: {
|
|
213
|
+
type: "hf",
|
|
214
|
+
user,
|
|
215
|
+
model: actualModel,
|
|
216
|
+
tag: resolvedTag
|
|
217
|
+
}
|
|
218
|
+
};
|
|
219
|
+
}
|
|
46
220
|
const hashIndex = rest.indexOf("#");
|
|
47
221
|
let branch = defaultHuggingFaceBranch;
|
|
48
222
|
if (hashIndex >= 0) {
|
|
@@ -56,31 +230,17 @@ function parseHuggingFaceUriContent(uri) {
|
|
|
56
230
|
.map((part) => encodeURIComponent(part))
|
|
57
231
|
.join("/");
|
|
58
232
|
if (!user || !model || filePath === "")
|
|
59
|
-
throw new Error(`Invalid Hugging Face URI: ${
|
|
233
|
+
throw new Error(`Invalid Hugging Face URI: ${fullUri}`);
|
|
60
234
|
const resolvedUrl = normalizeGgufDownloadUrl([
|
|
61
235
|
"https://huggingface.co/", encodeURIComponent(user),
|
|
62
236
|
"/", encodeURIComponent(model),
|
|
63
237
|
"/resolve/", encodeURIComponent(branch),
|
|
64
238
|
"/", filePath, "?download=true"
|
|
65
239
|
].join(""));
|
|
66
|
-
function buildFilePrefix(user, model, branch, pathParts, filename) {
|
|
67
|
-
const res = ["hf"];
|
|
68
|
-
res.push(filenamify(user));
|
|
69
|
-
if (!doesFilenameMatchExactModelName(filename, model) || branch !== defaultHuggingFaceBranch)
|
|
70
|
-
res.push(filenamify(model));
|
|
71
|
-
if (branch !== defaultHuggingFaceBranch)
|
|
72
|
-
res.push(filenamify(branch));
|
|
73
|
-
if (pathParts.length > 0) {
|
|
74
|
-
if (doesFilenameMatchExactFolderName(filename, pathParts.at(-1)))
|
|
75
|
-
pathParts = pathParts.slice(0, -1);
|
|
76
|
-
if (pathParts.length > 0)
|
|
77
|
-
res.push(filenamify(pathParts.join("__")));
|
|
78
|
-
}
|
|
79
|
-
return res.join("_") + "_";
|
|
80
|
-
}
|
|
81
240
|
const filename = resolveModelFilenameFromUrl(resolvedUrl);
|
|
82
|
-
const filePrefix =
|
|
241
|
+
const filePrefix = buildHuggingFaceFilePrefix(user, model, branch, filePathParts.slice(0, -1), filename);
|
|
83
242
|
return {
|
|
243
|
+
type: "resolved",
|
|
84
244
|
uri: `hf:${user}/${model}/${filePathParts.join("/")}${branch !== defaultHuggingFaceBranch ? `#${branch}` : ""}`,
|
|
85
245
|
resolvedUrl,
|
|
86
246
|
filePrefix,
|
|
@@ -88,6 +248,21 @@ function parseHuggingFaceUriContent(uri) {
|
|
|
88
248
|
fullFilename: `${filePrefix}${filename}`
|
|
89
249
|
};
|
|
90
250
|
}
|
|
251
|
+
function buildHuggingFaceFilePrefix(user, model, branch, pathParts, filename) {
|
|
252
|
+
const res = ["hf"];
|
|
253
|
+
res.push(filenamify(user));
|
|
254
|
+
if (!doesFilenameMatchExactModelName(filename, model) || branch !== defaultHuggingFaceBranch)
|
|
255
|
+
res.push(filenamify(model));
|
|
256
|
+
if (branch !== defaultHuggingFaceBranch)
|
|
257
|
+
res.push(filenamify(branch));
|
|
258
|
+
if (pathParts.length > 0) {
|
|
259
|
+
if (doesFilenameMatchExactFolderName(filename, pathParts.at(-1)))
|
|
260
|
+
pathParts = pathParts.slice(0, -1);
|
|
261
|
+
if (pathParts.length > 0)
|
|
262
|
+
res.push(filenamify(pathParts.join("__")));
|
|
263
|
+
}
|
|
264
|
+
return res.join("_") + "_";
|
|
265
|
+
}
|
|
91
266
|
function resolveModelFilenameFromUrl(modelUrl) {
|
|
92
267
|
const binarySplitPartUrls = resolveBinarySplitGgufPartUrls(modelUrl);
|
|
93
268
|
if (binarySplitPartUrls instanceof Array)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseModelUri.js","sourceRoot":"","sources":["../../src/utils/parseModelUri.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parseModelUri.js","sourceRoot":"","sources":["../../src/utils/parseModelUri.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ParsedModelUri } from "./parseModelUri.js";
|
|
2
2
|
export type ResolveModelDestination = {
|
|
3
3
|
type: "url";
|
|
4
4
|
url: string;
|
|
5
5
|
} | {
|
|
6
6
|
type: "uri";
|
|
7
|
-
url
|
|
7
|
+
url?: string;
|
|
8
8
|
uri: string;
|
|
9
|
-
parsedUri:
|
|
9
|
+
parsedUri: ParsedModelUri;
|
|
10
10
|
} | {
|
|
11
11
|
type: "file";
|
|
12
12
|
path: string;
|
|
13
13
|
};
|
|
14
14
|
export declare function resolveModelDestination(modelDestination: string, convertUrlToUri?: boolean): ResolveModelDestination;
|
|
15
|
+
export declare function resolveModelArgToFilePathOrUrl(modelDestination: string, optionHeaders?: Record<string, string>): Promise<[resolvedModelDestination: ResolveModelDestination, filePathOrUrl: string]>;
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import path from "path";
|
|
2
2
|
import { normalizeGgufDownloadUrl } from "../gguf/utils/normalizeGgufDownloadUrl.js";
|
|
3
|
-
import { parseModelUri } from "./parseModelUri.js";
|
|
3
|
+
import { parseModelUri, resolveParsedModelUri, getAuthorizationHeader } from "./parseModelUri.js";
|
|
4
4
|
import { isUrl } from "./isUrl.js";
|
|
5
5
|
export function resolveModelDestination(modelDestination, convertUrlToUri = false) {
|
|
6
6
|
const parsedUri = parseModelUri(modelDestination, convertUrlToUri);
|
|
7
7
|
if (parsedUri != null) {
|
|
8
8
|
return {
|
|
9
9
|
type: "uri",
|
|
10
|
-
url: parsedUri.
|
|
10
|
+
url: parsedUri.type === "resolved"
|
|
11
|
+
? parsedUri.resolvedUrl
|
|
12
|
+
: undefined,
|
|
11
13
|
uri: parsedUri.uri,
|
|
12
14
|
parsedUri
|
|
13
15
|
};
|
|
@@ -28,4 +30,25 @@ export function resolveModelDestination(modelDestination, convertUrlToUri = fals
|
|
|
28
30
|
throw new Error(`Invalid path: ${modelDestination}`);
|
|
29
31
|
}
|
|
30
32
|
}
|
|
33
|
+
export async function resolveModelArgToFilePathOrUrl(modelDestination, optionHeaders) {
|
|
34
|
+
const resolvedModelDestination = resolveModelDestination(modelDestination);
|
|
35
|
+
if (resolvedModelDestination.type == "file")
|
|
36
|
+
return [resolvedModelDestination, resolvedModelDestination.path];
|
|
37
|
+
else if (resolvedModelDestination.type === "url")
|
|
38
|
+
return [resolvedModelDestination, resolvedModelDestination.url];
|
|
39
|
+
else if (resolvedModelDestination.parsedUri.type === "resolved")
|
|
40
|
+
return [resolvedModelDestination, resolvedModelDestination.parsedUri.resolvedUrl];
|
|
41
|
+
const resolvedModelUri = await resolveParsedModelUri(resolvedModelDestination.parsedUri, {
|
|
42
|
+
authorizationHeader: getAuthorizationHeader(optionHeaders)
|
|
43
|
+
});
|
|
44
|
+
return [
|
|
45
|
+
{
|
|
46
|
+
type: "uri",
|
|
47
|
+
url: resolvedModelUri.resolvedUrl,
|
|
48
|
+
uri: resolvedModelUri.uri,
|
|
49
|
+
parsedUri: resolvedModelUri
|
|
50
|
+
},
|
|
51
|
+
resolvedModelUri.resolvedUrl
|
|
52
|
+
];
|
|
53
|
+
}
|
|
31
54
|
//# sourceMappingURL=resolveModelDestination.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveModelDestination.js","sourceRoot":"","sources":["../../src/utils/resolveModelDestination.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAC,wBAAwB,EAAC,MAAM,2CAA2C,CAAC;AACnF,OAAO,
|
|
1
|
+
{"version":3,"file":"resolveModelDestination.js","sourceRoot":"","sources":["../../src/utils/resolveModelDestination.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAC,wBAAwB,EAAC,MAAM,2CAA2C,CAAC;AACnF,OAAO,EAAC,aAAa,EAAkB,qBAAqB,EAAE,sBAAsB,EAAC,MAAM,oBAAoB,CAAC;AAChH,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAC;AAejC,MAAM,UAAU,uBAAuB,CAAC,gBAAwB,EAAE,kBAA2B,KAAK;IAC9F,MAAM,SAAS,GAAG,aAAa,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;IAEnE,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;QACpB,OAAO;YACH,IAAI,EAAE,KAAK;YACX,GAAG,EAAE,SAAS,CAAC,IAAI,KAAK,UAAU;gBAC9B,CAAC,CAAC,SAAS,CAAC,WAAW;gBACvB,CAAC,CAAC,SAAS;YACf,GAAG,EAAE,SAAS,CAAC,GAAG;YAClB,SAAS;SACZ,CAAC;IACN,CAAC;SAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACjC,OAAO;YACH,IAAI,EAAE,KAAK;YACX,GAAG,EAAE,wBAAwB,CAAC,gBAAgB,CAAC;SAClD,CAAC;IACN,CAAC;IAED,IAAI,CAAC;QACD,OAAO;YACH,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC;SACtD,CAAC;IACN,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,iBAAiB,gBAAgB,EAAE,CAAC,CAAC;IACzD,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAChD,gBAAwB,EAAE,aAAsC;IAEhE,MAAM,wBAAwB,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,CAAC;IAE3E,IAAI,wBAAwB,CAAC,IAAI,IAAI,MAAM;QACvC,OAAO,CAAC,wBAAwB,EAAE,wBAAwB,CAAC,IAAI,CAAC,CAAC;SAChE,IAAI,wBAAwB,CAAC,IAAI,KAAK,KAAK;QAC5C,OAAO,CAAC,wBAAwB,EAAE,wBAAwB,CAAC,GAAG,CAAC,CAAC;SAC/D,IAAI,wBAAwB,CAAC,SAAS,CAAC,IAAI,KAAK,UAAU;QAC3D,OAAO,CAAC,wBAAwB,EAAE,wBAAwB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAEtF,MAAM,gBAAgB,GAAG,MAAM,qBAAqB,CAAC,wBAAwB,CAAC,SAAS,EAAE;QACrF,mBAAmB,EAAE,sBAAsB,CAAC,aAAa,CAAC;KAC7D,CAAC,CAAC;IACH,OAAO;QACH;YACI,IAAI,EAAE,KAAK;YACX,GAAG,EAAE,gBAAgB,CAAC,WAAW;YACjC,GAAG,EAAE,gBAAgB,CAAC,GAAG;YACzB,SAAS,EAAE,gBAAgB;SAC9B;QACD,gBAAgB,CAAC,WAAW;KAC/B,CAAC;AACN,CAAC"}
|
|
@@ -90,7 +90,7 @@ export type ResolveModelFileOptions = {
|
|
|
90
90
|
*
|
|
91
91
|
* // resolve a model from Hugging Face to the models directory
|
|
92
92
|
* const modelPath = await resolveModelFile(
|
|
93
|
-
* "hf:user/model
|
|
93
|
+
* "hf:user/model:quant",
|
|
94
94
|
* path.join(__dirname, "models")
|
|
95
95
|
* );
|
|
96
96
|
*
|
|
@@ -6,6 +6,9 @@ import { getReadablePath } from "../cli/utils/getReadablePath.js";
|
|
|
6
6
|
import { resolveSplitGgufParts } from "../gguf/utils/resolveSplitGgufParts.js";
|
|
7
7
|
import { resolveModelDestination } from "./resolveModelDestination.js";
|
|
8
8
|
import { createModelDownloader } from "./createModelDownloader.js";
|
|
9
|
+
import { genericFilePartNumber } from "./parseModelUri.js";
|
|
10
|
+
import { isFilePartText } from "./parseModelFileName.js";
|
|
11
|
+
import { pushAll } from "./pushAll.js";
|
|
9
12
|
/**
|
|
10
13
|
* Resolves a local model file path from a URI or file path, and downloads the necessary files first if needed.
|
|
11
14
|
*
|
|
@@ -28,7 +31,7 @@ import { createModelDownloader } from "./createModelDownloader.js";
|
|
|
28
31
|
*
|
|
29
32
|
* // resolve a model from Hugging Face to the models directory
|
|
30
33
|
* const modelPath = await resolveModelFile(
|
|
31
|
-
* "hf:user/model
|
|
34
|
+
* "hf:user/model:quant",
|
|
32
35
|
* path.join(__dirname, "models")
|
|
33
36
|
* );
|
|
34
37
|
*
|
|
@@ -87,20 +90,29 @@ export async function resolveModelFile(uriOrPath, optionsOrDirectory) {
|
|
|
87
90
|
return resolvedFilePath;
|
|
88
91
|
throw new Error(`No model file found at "${resolvedFilePath}"`);
|
|
89
92
|
}
|
|
90
|
-
|
|
91
|
-
?
|
|
92
|
-
:
|
|
93
|
-
if (
|
|
94
|
-
|
|
95
|
-
|
|
93
|
+
const expectedFileNames = fileName != null
|
|
94
|
+
? [fileName]
|
|
95
|
+
: [];
|
|
96
|
+
if (expectedFileNames.length === 0 && resolvedModelDestination.type === "uri") {
|
|
97
|
+
if (resolvedModelDestination.parsedUri.type === "resolved")
|
|
98
|
+
expectedFileNames.push(resolvedModelDestination.parsedUri.fullFilename);
|
|
99
|
+
else
|
|
100
|
+
pushAll(expectedFileNames, resolvedModelDestination.parsedUri.possibleFullFilenames);
|
|
101
|
+
}
|
|
102
|
+
else if (expectedFileNames.length === 0 && resolvedModelDestination.type === "url") {
|
|
96
103
|
const enforcedParsedUrl = resolveModelDestination(uriOrPath, true);
|
|
97
|
-
if (enforcedParsedUrl != null && enforcedParsedUrl.type === "uri")
|
|
98
|
-
|
|
104
|
+
if (enforcedParsedUrl != null && enforcedParsedUrl.type === "uri") {
|
|
105
|
+
if (enforcedParsedUrl.parsedUri.type === "resolved")
|
|
106
|
+
expectedFileNames.push(enforcedParsedUrl.parsedUri.fullFilename);
|
|
107
|
+
else
|
|
108
|
+
pushAll(expectedFileNames, enforcedParsedUrl.parsedUri.possibleFullFilenames);
|
|
109
|
+
}
|
|
99
110
|
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
111
|
+
const foundExpectedFilePath = await findMatchingFilesInDirectory(resolvedDirectory, expectedFileNames);
|
|
112
|
+
if (foundExpectedFilePath != null && !resolvedVerify) {
|
|
113
|
+
const allGgufParts = resolveSplitGgufParts(foundExpectedFilePath);
|
|
114
|
+
if (allGgufParts.length === 1 && allGgufParts[0] === foundExpectedFilePath)
|
|
115
|
+
return foundExpectedFilePath;
|
|
104
116
|
const allPartsExist = await Promise.all(allGgufParts.map((part) => fs.pathExists(part)));
|
|
105
117
|
if (allGgufParts.length > 0) {
|
|
106
118
|
if (allPartsExist.every((exists) => exists))
|
|
@@ -110,10 +122,12 @@ export async function resolveModelFile(uriOrPath, optionsOrDirectory) {
|
|
|
110
122
|
}
|
|
111
123
|
}
|
|
112
124
|
if (download === false) {
|
|
113
|
-
if (
|
|
114
|
-
throw new Error(`No model file found at "${
|
|
115
|
-
throw new Error(`No model file found for "${uriOrPath}" and download is disabled`);
|
|
125
|
+
if (expectedFileNames.length === 1)
|
|
126
|
+
throw new Error(`No model file found at "${path.join(resolvedDirectory, expectedFileNames[0])}" and download is disabled`);
|
|
127
|
+
throw new Error(`No model file found for "${uriOrPath}" at "${resolvedDirectory}" and download is disabled`);
|
|
116
128
|
}
|
|
129
|
+
if (signal?.aborted)
|
|
130
|
+
throw signal.reason;
|
|
117
131
|
const downloader = await createModelDownloader({
|
|
118
132
|
modelUri: resolvedModelDestination.type === "uri"
|
|
119
133
|
? resolvedModelDestination.uri
|
|
@@ -128,12 +142,11 @@ export async function resolveModelFile(uriOrPath, optionsOrDirectory) {
|
|
|
128
142
|
onProgress,
|
|
129
143
|
tokens
|
|
130
144
|
});
|
|
131
|
-
if (
|
|
132
|
-
const fileStats = await fs.stat(
|
|
145
|
+
if (foundExpectedFilePath != null && downloader.totalFiles === 1 && await fs.pathExists(downloader.entrypointFilePath)) {
|
|
146
|
+
const fileStats = await fs.stat(foundExpectedFilePath);
|
|
133
147
|
if (downloader.totalSize === fileStats.size) {
|
|
134
148
|
await downloader.cancel({ deleteTempFile: false });
|
|
135
|
-
|
|
136
|
-
return expectedFilePath;
|
|
149
|
+
return foundExpectedFilePath;
|
|
137
150
|
}
|
|
138
151
|
}
|
|
139
152
|
if (resolvedCli)
|
|
@@ -145,4 +158,32 @@ export async function resolveModelFile(uriOrPath, optionsOrDirectory) {
|
|
|
145
158
|
console.info(`Downloaded to ${chalk.yellow(getReadablePath(downloader.entrypointFilePath))}`);
|
|
146
159
|
return downloader.entrypointFilePath;
|
|
147
160
|
}
|
|
161
|
+
async function findMatchingFilesInDirectory(dirPath, fileNames) {
|
|
162
|
+
let directoryFileNames = undefined;
|
|
163
|
+
if (!(await fs.pathExists(dirPath)) || !(await fs.stat(dirPath)).isDirectory())
|
|
164
|
+
return undefined;
|
|
165
|
+
for (const expectedFileName of fileNames) {
|
|
166
|
+
if (expectedFileName.includes(genericFilePartNumber)) {
|
|
167
|
+
const [firstPart, ...restParts] = expectedFileName.split(genericFilePartNumber);
|
|
168
|
+
const resolvedFirstPart = firstPart || "";
|
|
169
|
+
const resolvedLastParts = restParts.join(genericFilePartNumber);
|
|
170
|
+
if (directoryFileNames == null)
|
|
171
|
+
directoryFileNames = (await fs.readdir(dirPath, { withFileTypes: true }))
|
|
172
|
+
.filter((item) => item.isFile())
|
|
173
|
+
.map((item) => item.name);
|
|
174
|
+
for (const directoryFileName of directoryFileNames) {
|
|
175
|
+
if (directoryFileName.startsWith(resolvedFirstPart) && directoryFileName.endsWith(resolvedLastParts)) {
|
|
176
|
+
const numberPart = directoryFileName.slice(resolvedFirstPart.length, -resolvedLastParts.length);
|
|
177
|
+
if (isFilePartText(numberPart))
|
|
178
|
+
return path.join(dirPath, directoryFileName);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
const testPath = path.join(dirPath, expectedFileName);
|
|
184
|
+
if (await fs.pathExists(testPath))
|
|
185
|
+
return testPath;
|
|
186
|
+
}
|
|
187
|
+
return undefined;
|
|
188
|
+
}
|
|
148
189
|
//# sourceMappingURL=resolveModelFile.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveModelFile.js","sourceRoot":"","sources":["../../src/utils/resolveModelFile.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,kBAAkB,EAAC,MAAM,cAAc,CAAC;AAChD,OAAO,EAAC,eAAe,EAAC,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAC,qBAAqB,EAAC,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAC,uBAAuB,EAAC,MAAM,8BAA8B,CAAC;AAErE,OAAO,EAAC,qBAAqB,EAAC,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"resolveModelFile.js","sourceRoot":"","sources":["../../src/utils/resolveModelFile.ts"],"names":[],"mappings":"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"}
|
package/llama/gitRelease.bundle
CHANGED
|
Binary file
|
package/llama/grammars/README.md
CHANGED
|
@@ -98,7 +98,7 @@ This guide provides a brief overview. Check out the GBNF files in this directory
|
|
|
98
98
|
|
|
99
99
|
## Troubleshooting
|
|
100
100
|
|
|
101
|
-
Grammars currently have performance gotchas (see https://github.com/
|
|
101
|
+
Grammars currently have performance gotchas (see https://github.com/ggml-org/llama.cpp/issues/4218).
|
|
102
102
|
|
|
103
103
|
### Efficient optional repetitions
|
|
104
104
|
|
|
@@ -126,7 +126,7 @@ You can use GBNF grammars:
|
|
|
126
126
|
- in CLI, with [examples/json_schema_to_grammar.py](../examples/json_schema_to_grammar.py)
|
|
127
127
|
- in JavaScript with [json-schema-to-grammar.mjs](../examples/server/public_legacy/json-schema-to-grammar.mjs) (this is used by the [server](../examples/server)'s Web UI)
|
|
128
128
|
|
|
129
|
-
Take a look at [tests](../tests/test-json-schema-to-grammar.cpp) to see which features are likely supported (you'll also find usage examples in https://github.com/
|
|
129
|
+
Take a look at [tests](../tests/test-json-schema-to-grammar.cpp) to see which features are likely supported (you'll also find usage examples in https://github.com/ggml-org/llama.cpp/pull/5978, https://github.com/ggml-org/llama.cpp/pull/6659 & https://github.com/ggml-org/llama.cpp/pull/6555).
|
|
130
130
|
|
|
131
131
|
```bash
|
|
132
132
|
llama-cli \
|
|
@@ -185,10 +185,10 @@ Here is also a list of known limitations (contributions welcome):
|
|
|
185
185
|
- `additionalProperties` defaults to `false` (produces faster grammars + reduces hallucinations).
|
|
186
186
|
- `"additionalProperties": true` may produce keys that contain unescaped newlines.
|
|
187
187
|
- Unsupported features are skipped silently. It is currently advised to use the command-line Python converter (see above) to see any warnings, and to inspect the resulting grammar / test it w/ [llama-gbnf-validator](../examples/gbnf-validator/gbnf-validator.cpp).
|
|
188
|
-
- Can't mix `properties` w/ `anyOf` / `oneOf` in the same type (https://github.com/
|
|
188
|
+
- Can't mix `properties` w/ `anyOf` / `oneOf` in the same type (https://github.com/ggml-org/llama.cpp/issues/7703)
|
|
189
189
|
- [prefixItems](https://json-schema.org/draft/2020-12/json-schema-core#name-prefixitems) is broken (but [items](https://json-schema.org/draft/2020-12/json-schema-core#name-items) works)
|
|
190
190
|
- `minimum`, `exclusiveMinimum`, `maximum`, `exclusiveMaximum`: only supported for `"type": "integer"` for now, not `number`
|
|
191
|
-
- Nested `$ref`s are broken (https://github.com/
|
|
191
|
+
- Nested `$ref`s are broken (https://github.com/ggml-org/llama.cpp/issues/8073)
|
|
192
192
|
- [pattern](https://json-schema.org/draft/2020-12/json-schema-validation#name-pattern)s must start with `^` and end with `$`
|
|
193
193
|
- Remote `$ref`s not supported in the C++ version (Python & JavaScript versions fetch https refs)
|
|
194
194
|
- `string` [formats](https://json-schema.org/draft/2020-12/json-schema-validation#name-defined-formats) lack `uri`, `email`
|