@shenghuabi/llama 1.0.2 → 1.0.4

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/index.mjs.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../packages/llama/llama-swap.service.ts", "../../packages/llama/token.ts", "../../packages/llama/define/index.ts", "../../packages/llama/define/llama-server.define.ts", "../../packages/llama/define/common.define.ts", "../../packages/llama/define/example-specific.define.ts", "../../packages/llama/define/sampling.define.ts", "../../packages/llama/define/llama-swap.define.ts", "../../packages/llama/util/file-name-by-version.ts", "../../packages/llama/download/get-model-manifest.ts", "../../packages/llama/download/get-gguf-file.ts", "../../packages/llama/ollama-model/ollama-manifests.ts", "../../packages/llama/download/get-ollama-gguf-file.ts", "../../packages/llama/download/auto-check-vendor.ts"],
4
- "sourcesContent": ["import {\n DownloadConfigToken,\n ExternalCallBaseService,\n HUGGINGFACE_TOKEN_TOKEN,\n HUGGINGFACE_URL_TOKEN,\n} from '@cyia/external-call';\nimport { computed, inject, Injector, signal } from 'static-injector';\nimport { path } from '@cyia/vfs2';\nimport { LLamaConfigToken, OLLAMA_MODEL_URL_TOKEN } from './token';\nimport * as v from 'valibot';\nimport {\n DefaultCommonConfig,\n ExampleSpecificType,\n LlamaConfigDefine,\n LlamaConfigInputType,\n LlamaServerSwapItemDefine,\n LlamaServerSwapItemInputType,\n LlamaServerType,\n} from './define';\nimport * as fs from 'fs';\nimport { parse, stringify } from 'yaml';\nimport {\n llamaFileNameByVersion,\n llamaSwapFileNameByVersion,\n} from './util/file-name-by-version';\nimport { downloadFile, DownloadFileOptions } from '@cyia/dl';\nimport { getGgufFile } from './download/get-gguf-file';\nimport { getOllamaModel } from './ollama-model/ollama-manifests';\nimport { dirname } from 'path';\nimport { getOllamaGgufFile } from './download/get-ollama-gguf-file';\nimport { differenceBy } from 'es-toolkit';\nimport { autoCheckVendor } from './download/auto-check-vendor';\nconst SysMap = { win32: 'win', linux: 'ubuntu' };\nconst LlamaPlatform = (SysMap as any)[process.platform];\nconst remoteArgs = ['hf-repo', 'hf-file', 'model-url'];\n/**\n * 先写入配置,然后再初始化\n */\nexport class LlamaSwapService extends ExternalCallBaseService {\n override logName = 'llama.cpp';\n #config = inject(LLamaConfigToken);\n #llamaSwapPath$$ = computed(() =>\n path.join(this.#config().dir, 'llama-swap.config.yml'),\n );\n start$ = signal(false);\n llamaDir$$ = computed(() => {\n const fullPath = path.join(this.#config().dir, 'llama');\n if (this.#config().useRelConfigPath) {\n return path.relative(this.#config().cwd!, fullPath);\n }\n return fullPath;\n });\n llamaSwapDir$$ = computed(() => path.join(this.#config().dir, 'llama-swap'));\n #ollamaModelUrl$$ = inject(OLLAMA_MODEL_URL_TOKEN);\n #hgModelUrl$$ = inject(HUGGINGFACE_URL_TOKEN);\n #downloadConfig$$ = inject(DownloadConfigToken);\n #hgtoken$$ = inject(HUGGINGFACE_TOKEN_TOKEN);\n override startPath$$ = computed(() =>\n path.join(\n this.llamaSwapDir$$(),\n process.platform === 'win32' ? 'llama-swap.exe' : 'llama-swap',\n ),\n );\n override execPath$$ = this.startPath$$;\n override checkFilePath$$ = this.startPath$$;\n configExist$ = signal(false);\n checkConfigExist() {\n const result = fs.existsSync(this.#llamaSwapPath$$());\n if (!result) {\n this.log?.info(`初始化:等待配置文件[${this.#llamaSwapPath$$()}]创建`);\n }\n this.configExist$.set(result);\n }\n override async checkExist(): Promise<void> {\n await super.checkExist();\n this.checkConfigExist();\n }\n #injector = inject(Injector);\n #startFinished$?: Promise<ReturnType<typeof this.exec>>;\n\n override init(): void {\n if (this.start$()) {\n return;\n }\n this.startup();\n }\n async startup() {\n const exist = await this.exist();\n if (!exist) {\n return undefined;\n }\n if (!this.#startFinished$) {\n this.#startFinished$ = this.#startupLLamaSwap();\n }\n return this.#startFinished$;\n }\n #startupLLamaSwap() {\n return new Promise<any>((resolve, reject) => {\n this.log?.info('初始化:准备启动');\n const instance = this.exec(this.startPath$$(), [\n '-config',\n this.#llamaSwapPath$$(),\n '-listen',\n `${this.#config().listen}`,\n '-watch-config',\n ]);\n this.instanceSnapshot = [instance.instance];\n let isStart = false;\n instance.instance.stdout.on('data', (data) => {\n const content = data.toString() as string;\n if (!isStart && content.includes('listening on')) {\n this.start$.set(true);\n resolve(instance);\n isStart = true;\n }\n\n this.log?.info(content);\n });\n instance.instance.stderr.on('data', (data) => {\n const content = data.toString() as string;\n this.log?.info(content);\n });\n });\n }\n async convertOllamaModel(\n originList: any[],\n llamaVersion: string,\n OLLAMA_MODELS?: string,\n ) {\n const ollamaList = (await getOllamaModel(OLLAMA_MODELS)).map((item) => ({\n config: {\n common: {\n model: {\n enable: true,\n value: [item.value],\n },\n ...DefaultCommonConfig,\n },\n },\n exec: {\n version: llamaVersion,\n device: 'vulkan',\n },\n model: item.name,\n }));\n const result: { config: LlamaServerType }[] = differenceBy(\n originList,\n ollamaList,\n (item: any) => item.config?.common?.model?.value?.[0],\n );\n for (let index = 0; index < result.length; index++) {\n const item = result[index];\n if (\n item.config?.common?.model?.enable &&\n item.config.common.model.value?.[0]\n ) {\n if (!fs.existsSync(item.config.common.model.value![0])) {\n result.splice(index, 1);\n index--;\n }\n }\n }\n return [...result, ...ollamaList];\n }\n override stop() {\n try {\n super.stop();\n } catch (error) {\n this.log?.error(error);\n } finally {\n this.#startFinished$ = undefined;\n this.start$.set(false);\n }\n }\n #configToCmdOptions(config: LlamaServerType) {\n const list = [];\n // 去除远程参数,假如有本地的话\n let removeRemoteArgs = false;\n if (config.common?.model?.enable && config.common?.model?.value?.[0]) {\n removeRemoteArgs = true;\n }\n for (const item of [\n config.common,\n config.exampleSpecific,\n config.sampling,\n ]) {\n if (!item) {\n continue;\n }\n\n for (const [key, value] of Object.entries(item)) {\n if (removeRemoteArgs) {\n if (remoteArgs.includes(key)) {\n continue;\n }\n }\n if (value.enable) {\n list.push(`--${key}`);\n if ('value' in value && value.value) {\n list.push(...value.value);\n }\n }\n }\n }\n return list;\n }\n async writeConfig(config: LlamaConfigInputType) {\n this.log?.info(`准备写入llamaSwap配置`);\n const parsedConfig = v.parse(LlamaConfigDefine, config);\n const { list, global } = parsedConfig.server;\n const swapConfig = { models: {} as any, ...parsedConfig.swap };\n for (const serverItem of list) {\n const config = { ...global?.config, ...serverItem.config };\n if (global) {\n delete (global as any).config;\n }\n delete (serverItem as any).config;\n const commonConfig = { ...global, ...serverItem };\n if (commonConfig.env) {\n commonConfig.env = Object.entries(commonConfig.env).map(\n ([key, value]) => `${key}=${value}`,\n );\n }\n const cmdOptions = this.#configToCmdOptions(config);\n let exec;\n if (typeof commonConfig.exec === 'string') {\n exec = commonConfig.exec;\n } else {\n const exeDirName = llamaFileNameByVersion(\n commonConfig.exec!.version,\n commonConfig.exec!.device,\n );\n exec = path.join(\n this.llamaDir$$(),\n exeDirName,\n process.platform === 'win32'\n ? 'llama-server.exe'\n : 'build/bin/llama-server',\n );\n await this.checkOrDownloadLlama(\n exeDirName,\n commonConfig.exec!.version,\n commonConfig.exec!.device,\n );\n }\n if (process.platform === 'linux') {\n commonConfig.env = [\n ...((commonConfig.env as any) ?? []),\n `LD_LIBRARY_PATH=${dirname(exec)}`,\n ];\n }\n const cmd = `${exec} ${cmdOptions.join(' ')}`;\n const model = commonConfig.model;\n delete (commonConfig as any).model;\n delete (commonConfig as any).exec;\n\n swapConfig.models[model!] = {\n proxy: this.#getProxy(config.exampleSpecific),\n cmd,\n ...commonConfig,\n };\n }\n this.log?.info(`准备写入 ${this.#llamaSwapPath$$()}`);\n await fs.promises.writeFile(this.#llamaSwapPath$$(), stringify(swapConfig));\n this.log?.info(`写入完成`);\n await this.checkExist();\n }\n async downloadExec(\n version: string,\n options?: { progressMessage?: DownloadFileOptions['message'] },\n ) {\n this.stop();\n const result = await this.githubRepoDownload(\n {\n prefix: 'mostlygeek/llama-swap',\n version: version,\n fileName: llamaSwapFileNameByVersion(version),\n },\n {\n output: this.llamaSwapDir$$(),\n progressMessage: options?.progressMessage,\n },\n );\n await this.checkExist();\n }\n async downloadModel(\n modelOptions: {\n url?: string;\n repo?: string;\n token?: string;\n fileName?: string;\n vendor?: 'ollama';\n },\n options?: { progressMessage?: DownloadFileOptions['message'] },\n ) {\n let url;\n let savePath;\n let directory;\n const dir = path.join(this.#config().dir, 'models');\n if (modelOptions.repo) {\n if (modelOptions.vendor) {\n this.log?.info('使用厂商:', modelOptions.vendor);\n }\n const resolveResult = await (modelOptions.vendor === 'ollama'\n ? getOllamaGgufFile(modelOptions.repo, {\n ...modelOptions,\n endpoint: this.#ollamaModelUrl$$(),\n token: modelOptions.token || this.#hgtoken$$(),\n })\n : getGgufFile(modelOptions.repo, {\n ...modelOptions,\n endpoint: this.#hgModelUrl$$(),\n token: modelOptions.token || this.#hgtoken$$(),\n }));\n this.log?.info('模型文件:', resolveResult);\n const filePath = path.join(dir, resolveResult.fileName);\n if (fs.existsSync(filePath)) {\n this.log?.info('模型已存在');\n return filePath;\n }\n url = resolveResult.fileList;\n savePath = filePath;\n } else if (modelOptions.url) {\n url = modelOptions.url;\n directory = dir;\n } else {\n throw new Error(`url/repo not found`);\n }\n return downloadFile(url, {\n message: options?.progressMessage,\n savePath: savePath,\n directory: directory,\n headers: {\n 'software-bbs': 'bbs.shenghuabi.site',\n },\n ...this.#downloadConfig$$(),\n }).then((result) => {\n const filePath = result?.getFilePath();\n this.log?.info(`下载完成: ${filePath}`);\n return filePath;\n });\n }\n async checkOrDownloadLlama(\n dirName: string,\n version: string,\n device: string,\n options?: { progressMessage?: DownloadFileOptions['message'] },\n ) {\n this.log?.info(`检查 ${dirName} 文件夹是否存在`);\n const dir = path.join(this.llamaDir$$(), dirName);\n if (fs.existsSync(dir)) {\n this.log?.info(`已存在,跳过下载`);\n return;\n }\n this.log?.info(`准备下载 ${dirName}`);\n await this.downloadLlama(dirName, version, device, options);\n this.log?.info(`下载完成`);\n }\n async downloadLlama(\n dirName: string,\n version: string,\n device: string,\n options?: { progressMessage?: DownloadFileOptions['message'] },\n ) {\n await this.githubRepoDownload(\n {\n prefix: 'ggml-org/llama.cpp',\n version: version,\n fileName: llamaFileNameByVersion(version, device) + '.zip',\n },\n {\n output: path.join(this.llamaDir$$(), dirName),\n progressMessage: options?.progressMessage,\n },\n );\n }\n async createModelConfig(\n model: string,\n options?: { progressMessage?: DownloadFileOptions['message'] },\n ) {\n const vendor = await autoCheckVendor(model, {\n endpoint: `https://${this.#hgModelUrl$$()}/`,\n token: this.#hgtoken$$(),\n });\n const downloadFilePath = await this.downloadModel(\n {\n repo: model,\n vendor: vendor,\n },\n options,\n );\n const result = v.parse(LlamaServerSwapItemDefine, {\n config: {\n common: {\n ...DefaultCommonConfig,\n model: {\n enable: true,\n value: [downloadFilePath!],\n },\n },\n },\n // 缺少可执行部分,需要返回后设置\n model: model,\n } as LlamaServerSwapItemInputType);\n return result;\n }\n override async getVersion(): Promise<string | undefined> {\n await this.checkExist();\n if (!this.exist$() || !this.start$()) {\n return undefined;\n }\n\n const { instance } = this.exec(this.execPath$$(), ['--version']);\n const regexp = /version:\\s+(\\d+)/;\n const matchResult = regexp.exec((await instance).stdout);\n if (matchResult) {\n return matchResult[1];\n }\n return undefined;\n }\n #getProxy(config?: ExampleSpecificType) {\n let hostStr;\n if (config?.host?.enable && config?.host.value?.[0]) {\n hostStr = config?.host.value[0];\n } else {\n hostStr = '127.0.0.1';\n }\n let portStr;\n if (config?.port?.enable && config?.port.value?.[0]) {\n portStr = config?.port.value[0];\n } else {\n portStr = '8080';\n }\n return `http://${hostStr}:${portStr}`;\n }\n async getLlamaSwapConfig() {\n const isExists = fs.existsSync(this.#llamaSwapPath$$());\n if (!isExists) {\n return undefined;\n }\n return parse(\n await fs.promises.readFile(this.#llamaSwapPath$$(), {\n encoding: 'utf-8',\n }),\n );\n }\n override destroy() {\n this.stop();\n }\n}\n", "import { InjectionToken, Signal } from 'static-injector';\nexport interface LLamaConfig {\n dir: string;\n listen: string;\n useRelConfigPath?: boolean;\n /** 配合相对路径使用 */\n cwd?: string;\n}\nexport const LLamaConfigToken = new InjectionToken<Signal<LLamaConfig>>(\n 'LLamaConfig',\n);\nexport const OLLAMA_MODEL_URL_TOKEN = new InjectionToken<Signal<string>>(\n 'OLLAMA_MODEL_URL',\n);\n", "import * as v from 'valibot';\nimport { LlamaServerSwapItemDefine } from './llama-server.define';\nimport { LlamaSwapDefine } from './llama-swap.define';\nimport { ExampleSpecificDefine } from './example-specific.define';\nexport * from './llama-server.define';\nexport * from './common.define';\nexport * from './example-specific.define';\nexport * from './sampling.define';\nimport { CommonDefine } from './common.define';\n\nexport const LlamaConfigDefine = v.object({\n server: v.object({\n global: v.optional(LlamaServerSwapItemDefine),\n list: v.array(LlamaServerSwapItemDefine),\n }),\n swap: v.optional(LlamaSwapDefine),\n});\n\nexport type ExampleSpecificType = v.InferOutput<typeof ExampleSpecificDefine>;\nexport type LlamaConfigInputType = v.InferInput<typeof LlamaConfigDefine>;\n\nexport type LLamaCommonType = v.InferInput<typeof CommonDefine>;\n\nexport const DefaultCommonConfig: LLamaCommonType = {\n 'gpu-layers': {\n enable: true,\n value: [999],\n },\n 'flash-attn': {\n enable: true,\n value: ['on'],\n },\n};\n", "import * as v from 'valibot';\nimport { CommonDefine } from './common.define';\nimport { ExampleSpecificDefine } from './example-specific.define';\nimport { SamplingDefine } from './sampling.define';\n\nexport const LlamaServerDefine = v.object({\n common: v.optional(CommonDefine),\n exampleSpecific: v.optional(ExampleSpecificDefine),\n sampling: v.optional(SamplingDefine),\n});\nexport type LlamaServerType = v.InferOutput<typeof LlamaServerDefine>;\nexport const ExecDefine = v.object({\n version: v.pipe(\n v.string(),\n v.title('llama.cpp 版本号'),\n v.description(\n 'llama.cpp的版本号,可以从 https://github.com/ggerganov/llama.cpp/releases 获得',\n ),\n ),\n device: v.pipe(\n v.picklist(['cpu', 'cuda12.4', 'hip-radeon', 'sycl', 'vulkan']),\n\n v.title('llama.cpp 使用设备'),\n ),\n});\n\nexport const LlamaServerSwapItemDefine = v.object({\n // url: v.pipe(v.optional(v.string()), v.description(`访问地址,默认不需要改,如果`)),\n config: v.optional(LlamaServerDefine),\n aliases: v.optional(v.array(v.string())),\n env: v.optional(v.record(v.string(), v.any())),\n ttl: v.optional(v.number()),\n checkEndpoint: v.optional(v.string()),\n useModelName: v.optional(v.string()),\n exec: v.optional(v.union([v.string(), ExecDefine])),\n model: v.optional(v.string()),\n proxy: v.pipe(\n v.optional(v.string()),\n v.description('正常情况下无需配置会自动生成'),\n ),\n});\n\nexport type LlamaServerSwapItemType = v.InferOutput<\n typeof LlamaServerSwapItemDefine\n>;\nexport type LlamaServerSwapItemInputType = v.InferInput<\n typeof LlamaServerSwapItemDefine\n>;\n", "import * as v from 'valibot';\nconst STR_SCHEMA = v.pipe(v.string(), v.trim());\nexport const CommonDefine = v.object({\n 'verbose-prompt': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 在生成前打印详细提示(默认:false)\\n- print a verbose prompt before generation (default: false)',\n ),\n ),\n threads: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 生成期间使用的线程数(默认:-1)\\n- number of threads to use during generation (default: -1) (env: LLAMA_ARG_THREADS)',\n ),\n ),\n 'threads-batch': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 批量和提示处理期间使用的线程数(默认:与--threads相同)\\n- number of threads to use during batch and prompt processing (default: same as --threads)',\n ),\n ),\n 'cpu-mask': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('M'))])),\n ),\n }),\n ),\n v.description(\n '- CPU亲和力掩码:任意长度的十六进制数。补充cpu-range(默认:\"\")\\n- CPU affinity mask: arbitrarily long hex. Complements cpu-range (default: \"\")',\n ),\n ),\n 'cpu-range': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('lo-hi'))])),\n ),\n }),\n ),\n v.description(\n '- CPU范围用于亲和力。补充--cpu-mask\\n- range of CPUs for affinity. Complements --cpu-mask',\n ),\n ),\n 'cpu-strict': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(v.optional(v.tuple([v.picklist(['0', '1'])]))),\n }),\n ),\n v.description(\n '- 使用严格CPU放置(默认:0)\\n- use strict CPU placement (default: 0)',\n ),\n ),\n prio: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(v.optional(v.tuple([v.picklist([0, 1, 2, 3])]))),\n }),\n ),\n v.description(\n '- 设置进程/线程优先级:低(-1)、正常(0)、中等(1)、高(2)、实时(3)(默认值:0)\\n- set process/thread priority : low(-1), normal(0), medium(1), high(2), realtime(3) (default: 0)',\n ),\n ),\n poll: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('<0...100>'))])),\n ),\n }),\n ),\n v.description(\n '- 使用轮询级别等待工作 (0 - 无轮询,默认: 50)\\n- use polling level to wait for work (0 - no polling, default: 50)',\n ),\n ),\n 'cpu-mask-batch': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('M'))])),\n ),\n }),\n ),\n v.description(\n '- CPU亲和力掩码:任意长度的十六进制数。补充cpu-range-batch(默认:与--cpu-mask相同)\\n- CPU affinity mask: arbitrarily long hex. Complements cpu-range-batch (default: same as --cpu-mask)',\n ),\n ),\n 'cpu-range-batch': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('lo-hi'))])),\n ),\n }),\n ),\n v.description(\n '- CPU亲和力的范围。补充--cpu-mask-batch\\n- ranges of CPUs for affinity. Complements --cpu-mask-batch',\n ),\n ),\n 'cpu-strict-batch': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(v.optional(v.tuple([v.picklist(['0', '1'])]))),\n }),\n ),\n v.description(\n '- 使用严格的CPU放置(默认:与--cpu-strict相同)\\n- use strict CPU placement (default: same as --cpu-strict)',\n ),\n ),\n 'prio-batch': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(v.optional(v.tuple([v.picklist([0, 1, 2, 3])]))),\n }),\n ),\n v.description(\n '- 设置进程/线程优先级 : 0-正常, 1-中等, 2-高, 3-实时 (默认: 0)\\n- set process/thread priority : 0-normal, 1-medium, 2-high, 3-realtime (default: 0)',\n ),\n ),\n 'poll-batch': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(v.optional(v.tuple([v.picklist(['0', '1'])]))),\n }),\n ),\n v.description(\n '- 使用轮询等待工作(默认:与--poll相同)\\n- use polling to wait for work (default: same as --poll)',\n ),\n ),\n 'ctx-size': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 提示上下文的大小(默认:4096,0 = 从模型加载)\\n- size of the prompt context (default: 4096, 0 = loaded from model) (env: LLAMA_ARG_CTX_SIZE)',\n ),\n ),\n predict: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 预测的token数量(默认:-1,-1 = 无限)\\n- number of tokens to predict (default: -1, -1 = infinity) (env: LLAMA_ARG_N_PREDICT)',\n ),\n ),\n 'batch-size': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 逻辑最大批处理大小(默认:2048)\\n- logical maximum batch size (default: 2048) (env: LLAMA_ARG_BATCH)',\n ),\n ),\n 'ubatch-size': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 物理最大批处理大小(默认:512)\\n- physical maximum batch size (default: 512) (env: LLAMA_ARG_UBATCH)',\n ),\n ),\n keep: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 保留初始提示中的令牌数量(默认:0,-1 = 所有)\\n- number of tokens to keep from the initial prompt (default: 0, -1 = all)',\n ),\n ),\n 'swa-full': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 使用全尺寸SWA缓存(默认:false) [更多信息](https://github.com/ggml-org/llama.cpp/pull/13194#issuecomment-2868343055)\\n- use full-size SWA cache (default: false) [(more info)](https://github.com/ggml-org/llama.cpp/pull/13194#issuecomment-2868343055) (env: LLAMA_ARG_SWA_FULL)',\n ),\n ),\n 'kv-unified': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 为所有序列的 KV 缓存使用一个统一的 KV 缓冲区(默认值为 `false`):[更多信息](https://github.com/ggml-org/llama.cpp/pull/14363)(环境变量:`LLAMA_ARG_KV_SPLIT`)\\n- use single unified KV buffer for the KV cache of all sequences (default: false) [(more info)](https://github.com/ggml-org/llama.cpp/pull/14363) (env: LLAMA_ARG_KV_SPLIT)',\n ),\n ),\n 'flash-attn': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(v.optional(v.tuple([v.picklist(['on', 'off', 'auto'])]))),\n }),\n ),\n v.description(\n \"- 启用 Flash 注意力(默认:禁用)\\n- set Flash Attention use ('on', 'off', or 'auto', default: 'auto') (env: LLAMA_ARG_FLASH_ATTN)\",\n ),\n ),\n 'no-perf': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 禁用内部libllama性能计时(默认:false)\\n- disable internal libllama performance timings (default: false) (env: LLAMA_ARG_NO_PERF)',\n ),\n ),\n escape: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 处理转义序列(\\\\n, \\\\r, \\\\t, \\\\\", \\\\\\\\)(默认:true)\\n- process escapes sequences (\\\\n, \\\\r, \\\\t, \\\\\\', \\\\\", \\\\\\\\) (default: true)',\n ),\n ),\n 'no-escape': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description('- 不要处理转义序列\\n- do not process escape sequences'),\n ),\n 'rope-scaling': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.picklist(['none', 'linear', 'yarn'])])),\n ),\n }),\n ),\n v.description(\n '- RoPE频率缩放方法,除非模型指定,默认为线性\\n- RoPE frequency scaling method, defaults to linear unless specified by the model (env: LLAMA_ARG_ROPE_SCALING_TYPE)',\n ),\n ),\n 'rope-scale': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- RoPE上下文缩放因子,将上下文扩展N倍\\n- RoPE context scaling factor, expands context by a factor of N (env: LLAMA_ARG_ROPE_SCALE)',\n ),\n ),\n 'rope-freq-base': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- RoPE基频,用于NTK感知缩放(默认:从模型加载)\\n- RoPE base frequency, used by NTK-aware scaling (default: loaded from model) (env: LLAMA_ARG_ROPE_FREQ_BASE)',\n ),\n ),\n 'rope-freq-scale': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- RoPE频率缩放因子,通过因子1/N扩展上下文\\n- RoPE frequency scaling factor, expands context by a factor of 1/N (env: LLAMA_ARG_ROPE_FREQ_SCALE)',\n ),\n ),\n 'yarn-orig-ctx': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- YaRN: 原始上下文大小(默认:0 = 模型训练上下文大小)\\n- YaRN: original context size of model (default: 0 = model training context size) (env: LLAMA_ARG_YARN_ORIG_CTX)',\n ),\n ),\n 'yarn-ext-factor': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- YaRN: 插值混合因子(默认:-1.0,0.0 = 完全插值)\\n- YaRN: extrapolation mix factor (default: -1.0, 0.0 = full interpolation) (env: LLAMA_ARG_YARN_EXT_FACTOR)',\n ),\n ),\n 'yarn-attn-factor': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- YaRN: 缩放 sqrt(t) 或注意力幅度(默认:-1.0)\\n- YaRN: scale sqrt(t) or attention magnitude (default: -1.0) (env: LLAMA_ARG_YARN_ATTN_FACTOR)',\n ),\n ),\n 'yarn-beta-slow': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- YaRN: 高校正维度或alpha(默认:-1.0)\\n- YaRN: high correction dim or alpha (default: -1.0) (env: LLAMA_ARG_YARN_BETA_SLOW)',\n ),\n ),\n 'yarn-beta-fast': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- YaRN: 低校正维或beta(默认:-1)\\n- YaRN: low correction dim or beta (default: -1.0) (env: LLAMA_ARG_YARN_BETA_FAST)',\n ),\n ),\n 'no-kv-offload': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 禁用KV卸载\\n- disable KV offload (env: LLAMA_ARG_NO_KV_OFFLOAD)',\n ),\n ),\n 'no-repack': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 禁用重量重新打包功能\\n- disable weight repacking (env: LLAMA_ARG_NO_REPACK)',\n ),\n ),\n 'cache-type-k': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([\n v.picklist([\n 'f32',\n 'f16',\n 'bf16',\n 'q8_0',\n 'q4_0',\n 'q4_1',\n 'iq4_nl',\n 'q5_0',\n 'q5_1',\n ]),\n ]),\n ),\n ),\n }),\n ),\n v.description(\n '- KV缓存数据类型用于K 允许的值: f32, f16, bf16, q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1 (默认: f16)\\n- KV cache data type for K allowed values: f32, f16, bf16, q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1 (default: f16) (env: LLAMA_ARG_CACHE_TYPE_K)',\n ),\n ),\n 'cache-type-v': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([\n v.picklist([\n 'f32',\n 'f16',\n 'bf16',\n 'q8_0',\n 'q4_0',\n 'q4_1',\n 'iq4_nl',\n 'q5_0',\n 'q5_1',\n ]),\n ]),\n ),\n ),\n }),\n ),\n v.description(\n '- KV缓存数据类型用于V,允许的值:f32, f16, bf16, q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1(默认:f16)\\n- KV cache data type for V allowed values: f32, f16, bf16, q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1 (default: f16) (env: LLAMA_ARG_CACHE_TYPE_V)',\n ),\n ),\n 'defrag-thold': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- KV缓存碎片化阈值(默认:0.1,<0-禁用)\\n- KV cache defragmentation threshold (DEPRECATED) (env: LLAMA_ARG_DEFRAG_THOLD)',\n ),\n ),\n parallel: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 并行解码序列的数量(默认:1)\\n- number of parallel sequences to decode (default: 1) (env: LLAMA_ARG_N_PARALLEL)',\n ),\n ),\n mlock: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 强制系统将模型保留在RAM中而不是交换或压缩\\n- force system to keep model in RAM rather than swapping or compressing (env: LLAMA_ARG_MLOCK)',\n ),\n ),\n 'no-mmap': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 不要内存映射模型(加载速度较慢,但可能减少页面丢失,如果未使用mlock)\\n- do not memory-map model (slower load but may reduce pageouts if not using mlock) (env: LLAMA_ARG_NO_MMAP)',\n ),\n ),\n numa: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([\n v.pipe(\n v.picklist(['distribute', 'isolate', 'numactl']),\n v.metadata({\n enumOptions: [\n {\n label: 'distribute',\n value: 'distribute',\n description: '将执行均匀分布在所有节点上',\n },\n {\n label: 'isolate',\n value: 'isolate',\n description: '仅在执行开始的节点的CPU上生成线程',\n },\n {\n label: 'numactl',\n value: 'numactl',\n description: '使用numactl提供的CPU映射',\n },\n ],\n }),\n ),\n ]),\n ),\n ),\n }),\n ),\n v.description(\n '- 尝试在某些NUMA系统上进行优化 - distribute:将执行均匀分布在所有节点上 - isolate:仅在执行开始的节点的CPU上生成线程 - numactl:使用numactl提供的CPU映射 如果之前未运行过此操作,请在使用此功能前删除系统页面缓存 详见 https://github.com/ggml-org/llama.cpp/issues/1437\\n- attempt optimizations that help on some NUMA systems - distribute: spread execution evenly over all nodes - isolate: only spawn threads on CPUs on the node that execution started on - numactl: use the CPU map provided by numactl if run without this previously, it is recommended to drop the system page cache before using this see https://github.com/ggml-org/llama.cpp/issues/1437 (env: LLAMA_ARG_NUMA)',\n ),\n ),\n device: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([v.pipe(STR_SCHEMA, v.description('<dev1,dev2,..>'))]),\n ),\n ),\n }),\n ),\n v.description(\n \"- 逗号分隔的设备列表,用于卸载(none = 不卸载)使用 --list-devices 查看可用设备列表\\n- comma-separated list of devices to use for offloading (none = don't offload) use --list-devices to see a list of available devices (env: LLAMA_ARG_DEVICE)\",\n ),\n ),\n 'override-tensor': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([\n v.pipe(\n STR_SCHEMA,\n v.description('<tensor name pattern>=<buffer type>,...'),\n ),\n ]),\n ),\n ),\n }),\n ),\n v.description(\n '- 将所有专家组合(Mixture of Experts, MoE)的权重数据存储在 CPU 中。\\n- override tensor buffer type',\n ),\n ),\n 'cpu-moe': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 将前 N 层的“专家混合”(Expert Mixing, MoE)权重数据保留在 CPU 中。\\n- keep all Mixture of Experts (MoE) weights in the CPU (env: LLAMA_ARG_CPU_MOE)',\n ),\n ),\n 'n-cpu-moe': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 覆盖张量缓冲区类型\\n- keep the Mixture of Experts (MoE) weights of the first N layers in the CPU (env: LLAMA_ARG_N_CPU_MOE)',\n ),\n ),\n 'gpu-layers': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 存储在VRAM中的图层数量\\n- max. number of layers to store in VRAM (default: -1) (env: LLAMA_ARG_N_GPU_LAYERS)',\n ),\n ),\n 'split-mode': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([\n v.pipe(\n v.picklist(['none', 'layer', 'row']),\n v.metadata({\n enumOptions: [\n {\n label: 'none',\n value: 'none',\n description: '仅使用一个GPU',\n },\n {\n label: 'layer',\n value: 'layer',\n description: '分割层和KV跨GPU',\n },\n { label: 'row', value: 'row', description: '分割行跨GPU' },\n ],\n }),\n ),\n ]),\n ),\n ),\n }),\n ),\n v.description(\n '- 如何将模型分布在多个GPU上,可选:- none: 仅使用一个GPU - layer (默认): 分割层和KV跨GPU - row: 分割行跨GPU\\n- how to split the model across multiple GPUs, one of: - none: use one GPU only - layer (default): split layers and KV across GPUs - row: split rows across GPUs (env: LLAMA_ARG_SPLIT_MODE)',\n ),\n ),\n 'tensor-split': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([v.pipe(STR_SCHEMA, v.description('N0,N1,N2,...'))]),\n ),\n ),\n }),\n ),\n v.description(\n '- 将模型分片到每个GPU的分数,逗号分隔的比例列表,例如3,1\\n- fraction of the model to offload to each GPU, comma-separated list of proportions, e.g. 3,1 (env: LLAMA_ARG_TENSOR_SPLIT)',\n ),\n ),\n 'main-gpu': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('INDEX'))])),\n ),\n }),\n ),\n v.description(\n '- 用于模型(split-mode = none)或中间结果和KV(split-mode = row)的GPU(默认:0)\\n- the GPU to use for the model (with split-mode = none), or for intermediate results and KV (with split-mode = row) (default: 0) (env: LLAMA_ARG_MAIN_GPU)',\n ),\n ),\n 'check-tensors': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 检查模型张量数据中的无效值(默认:false)\\n- check model tensor data for invalid values (default: false)',\n ),\n ),\n 'override-kv': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([v.pipe(STR_SCHEMA, v.description('KEY=TYPE:VALUE'))]),\n ),\n ),\n }),\n ),\n v.description(\n '- 用于通过键覆盖模型元数据的高级选项。可以多次指定。类型:int、float、bool、str。示例:--override-kv tokenizer.ggml.add_bos_token=bool:false\\n- advanced option to override model metadata by key. may be specified multiple times. types: int, float, bool, str. example: --override-kv tokenizer.ggml.add_bos_token=bool:false',\n ),\n ),\n 'no-op-offload': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 禁用将主机张量操作卸载到设备(默认:false)\\n- disable offloading host tensor operations to device (default: false)',\n ),\n ),\n lora: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('FNAME'))])),\n ),\n }),\n ),\n v.description(\n '- LoRA适配器路径(可以重复使用多个适配器)\\n- path to LoRA adapter (can be repeated to use multiple adapters)',\n ),\n ),\n 'lora-scaled': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([\n v.pipe(STR_SCHEMA, v.description('FNAME')),\n v.pipe(v.number(), v.description('SCALE')),\n ]),\n ),\n ),\n }),\n ),\n v.description(\n '- LoRA适配器路径,带用户定义的缩放(可重复使用多个适配器)\\n- path to LoRA adapter with user defined scaling (can be repeated to use multiple adapters)',\n ),\n ),\n 'control-vector': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('FNAME'))])),\n ),\n }),\n ),\n v.description(\n '- 添加控制向量 请注意:此参数可以重复以添加多个控制向量\\n- add a control vector note: this argument can be repeated to add multiple control vectors',\n ),\n ),\n 'control-vector-scaled': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([\n v.pipe(STR_SCHEMA, v.description('FNAME')),\n v.pipe(v.number(), v.description('SCALE')),\n ]),\n ),\n ),\n }),\n ),\n v.description(\n '- 添加一个带用户定义缩放 SCALE 的控制向量 注意: 此参数可以重复以添加多个缩放的控制向量\\n- add a control vector with user defined scaling SCALE note: this argument can be repeated to add multiple scaled control vectors',\n ),\n ),\n 'control-vector-layer-range': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([\n v.pipe(STR_SCHEMA, v.description('START')),\n v.pipe(STR_SCHEMA, v.description('END')),\n ]),\n ),\n ),\n }),\n ),\n v.description(\n '- 应用控制向量的图层范围,起始和结束值(包含)\\n- layer range to apply the control vector(s) to, start and end inclusive',\n ),\n ),\n model: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('FNAME'))])),\n ),\n }),\n ),\n v.description(\n '- 模型路径 (默认: `models/$filename` 与 `--hf-file` 或 `--model-url` 的文件名,否则 models/7B/ggml-model-f16.gguf)\\n- model path (default: `models/$filename` with filename from `--hf-file` or `--model-url` if set, otherwise models/7B/ggml-model-f16.gguf) (env: LLAMA_ARG_MODEL)',\n ),\n ),\n 'model-url': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('MODEL_URL'))])),\n ),\n }),\n ),\n v.description(\n '- Docker Hub 模型仓库:该仓库是可选的,默认值为 `ai/`;`quant` 参数也是可选的,默认值为 `:latest`。例如:`gemma3`(默认值:未使用)。\\n- model download url (default: unused) (env: LLAMA_ARG_MODEL_URL)',\n ),\n ),\n 'docker-repo': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.picklist(['<repo>/]<model>[:quant'])])),\n ),\n }),\n ),\n v.description(\n '- 模型下载地址(默认:未使用)\\n- Docker Hub model repository. repo is optional, default to ai/. quant is optional, default to :latest. example: gemma3 (default: unused) (env: LLAMA_ARG_DOCKER_REPO)',\n ),\n ),\n 'hf-repo': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([\n v.pipe(STR_SCHEMA, v.description('<user>/<model>[:quant]')),\n ]),\n ),\n ),\n }),\n ),\n v.description(\n \"- Hugging Face 模型仓库; quant 是可选的,不区分大小写,默认为 Q4_K_M,如果不存在 Q4_K_M 则回退到仓库中的第一个文件。如果可用还会自动下载 mmproj。要禁用,添加 --no-mmproj 示例:unsloth/phi-4-GGUF:q4_k_m (默认:未使用)\\n- Hugging Face model repository; quant is optional, case-insensitive, default to Q4_K_M, or falls back to the first file in the repo if Q4_K_M doesn't exist. mmproj is also downloaded automatically if available. to disable, add --no-mmproj example: unsloth/phi-4-GGUF:q4_k_m (default: unused) (env: LLAMA_ARG_HF_REPO)\",\n ),\n ),\n 'hf-repo-draft': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([\n v.pipe(STR_SCHEMA, v.description('<user>/<model>[:quant]')),\n ]),\n ),\n ),\n }),\n ),\n v.description(\n '- 与--hf-repo相同,但用于草稿模型(默认:未使用)\\n- Same as --hf-repo, but for the draft model (default: unused) (env: LLAMA_ARG_HFD_REPO)',\n ),\n ),\n 'hf-file': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('FILE'))])),\n ),\n }),\n ),\n v.description(\n '- Hugging Face模型文件。如果指定了,将覆盖--hf-repo中的量化(默认:未使用)\\n- Hugging Face model file. If specified, it will override the quant in --hf-repo (default: unused) (env: LLAMA_ARG_HF_FILE)',\n ),\n ),\n 'hf-repo-v': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([\n v.pipe(STR_SCHEMA, v.description('<user>/<model>[:quant]')),\n ]),\n ),\n ),\n }),\n ),\n v.description(\n '- Hugging Face vocoder模型仓库(默认:未使用)\\n- Hugging Face model repository for the vocoder model (default: unused) (env: LLAMA_ARG_HF_REPO_V)',\n ),\n ),\n 'hf-file-v': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('FILE'))])),\n ),\n }),\n ),\n v.description(\n '- Hugging Face模型文件用于声码器模型(默认:未使用)\\n- Hugging Face model file for the vocoder model (default: unused) (env: LLAMA_ARG_HF_FILE_V)',\n ),\n ),\n 'hf-token': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('TOKEN'))])),\n ),\n }),\n ),\n v.description(\n '- Hugging Face访问令牌(默认:来自HF_TOKEN环境变量的值)\\n- Hugging Face access token (default: value from HF_TOKEN environment variable) (env: HF_TOKEN)',\n ),\n ),\n 'log-disable': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description('- 日志禁用\\n- Log disable'),\n ),\n 'log-file': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('FNAME'))])),\n ),\n }),\n ),\n v.description('- 日志记录到文件\\n- Log to file'),\n ),\n 'log-colors': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(v.optional(v.tuple([v.picklist(['on', 'off', 'auto'])]))),\n }),\n ),\n v.description(\n \"- 启用彩色日志记录\\n- Set colored logging ('on', 'off', or 'auto', default: 'auto') 'auto' enables colors when output is to a terminal (env: LLAMA_LOG_COLORS)\",\n ),\n ),\n verbose: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 设置 verbosity 级别为无穷大(即记录所有消息,用于调试)\\n- Set verbosity level to infinity (i.e. log all messages, useful for debugging)',\n ),\n ),\n offline: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 离线模式:强制使用缓存,阻止网络访问\\n- Offline mode: forces use of cache, prevents network access (env: LLAMA_OFFLINE)',\n ),\n ),\n verbosity: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 设置日志的详细程度阈值。消息的详细程度越高,将被忽略。\\n- Set the verbosity threshold. Messages with a higher verbosity will be ignored. (env: LLAMA_LOG_VERBOSITY)',\n ),\n ),\n 'log-prefix': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 启用日志消息中的前缀\\n- Enable prefix in log messages (env: LLAMA_LOG_PREFIX)',\n ),\n ),\n 'log-timestamps': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 启用日志消息中的时间戳\\n- Enable timestamps in log messages (env: LLAMA_LOG_TIMESTAMPS)',\n ),\n ),\n 'cache-type-k-draft': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('TYPE'))])),\n ),\n }),\n ),\n v.description(\n '- KV缓存中用于草稿模型的K的数据类型,允许的值包括:f32、f16、bf16、q8_0、q4_0、q4_1、iq4_nl、q5_0、q5_1(默认值:f16)\\n- KV cache data type for K for the draft model allowed values: f32, f16, bf16, q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1 (default: f16) (env: LLAMA_ARG_CACHE_TYPE_K_DRAFT)',\n ),\n ),\n 'cache-type-v-draft': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('TYPE'))])),\n ),\n }),\n ),\n v.description(\n '- KV缓存中用于草稿模型的V的数据类型,允许的值包括:f32、f16、bf16、q8_0、q4_0、q4_1、iq4_nl、q5_0、q5_1(默认值:f16)\\n- KV cache data type for V for the draft model allowed values: f32, f16, bf16, q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1 (default: f16) (env: LLAMA_ARG_CACHE_TYPE_V_DRAFT)',\n ),\n ),\n});\n", "import * as v from 'valibot';\nconst STR_SCHEMA = v.pipe(v.string(), v.trim());\nexport const ExampleSpecificDefine = v.object({\n 'swa-checkpoints': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 每个时间槽内可创建的 SWA 检查点最大数量(默认值:3):[更多信息](https://github.com/ggml-org/llama.cpp/pull/15293)\\n- max number of SWA checkpoints per slot to create (default: 3) [(more info)](https://github.com/ggml-org/llama.cpp/pull/15293) (env: LLAMA_ARG_SWA_CHECKPOINTS)',\n ),\n ),\n 'no-context-shift': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 禁用无限文本生成中的上下文转换(默认:禁用)\\n- disables context shift on infinite text generation (default: enabled) (env: LLAMA_ARG_NO_CONTEXT_SHIFT)',\n ),\n ),\n 'context-shift': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 该功能允许在无限文本生成过程中实现上下文切换(默认设置为禁用状态)。\\n- enables context shift on infinite text generation (default: disabled) (env: LLAMA_ARG_CONTEXT_SHIFT)',\n ),\n ),\n 'reverse-prompt': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('PROMPT'))])),\n ),\n }),\n ),\n v.description(\n '- 在 PROMPT 状态下停止程序的执行,然后以交互模式恢复程序的控制权。\\n- halt generation at PROMPT, return control in interactive mode',\n ),\n ),\n special: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 特殊标记输出启用(默认:false)\\n- special tokens output enabled (default: false)',\n ),\n ),\n 'no-warmup': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- skip warming up the model with an empty run\\n- skip warming up the model with an empty run',\n ),\n ),\n 'spm-infill': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 使用后缀/前缀/中间模式进行填充(代替前缀/后缀/中间)\\n- use Suffix/Prefix/Middle pattern for infill (instead of Prefix/Suffix/Middle) as some models prefer this. (default: disabled)',\n ),\n ),\n pooling: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([v.picklist(['none', 'mean', 'cls', 'last', 'rank'])]),\n ),\n ),\n }),\n ),\n v.description(\n '- 嵌入的池化类型,如果未指定则使用模型默认值\\n- pooling type for embeddings, use model default if unspecified (env: LLAMA_ARG_POOLING)',\n ),\n ),\n 'cont-batching': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 启用连续批处理(又名动态批处理)(默认:启用)\\n- enable continuous batching (a.k.a dynamic batching) (default: enabled) (env: LLAMA_ARG_CONT_BATCHING)',\n ),\n ),\n 'no-cont-batching': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- disable continuous batching\\n- disable continuous batching (env: LLAMA_ARG_NO_CONT_BATCHING)',\n ),\n ),\n mmproj: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('FILE'))])),\n ),\n }),\n ),\n v.description(\n '- 多模态投影文件路径。参见tools/mtmd/README.md 说明:如果使用-hf参数,可以省略此参数\\n- path to a multimodal projector file. see tools/mtmd/README.md note: if -hf is used, this argument can be omitted (env: LLAMA_ARG_MMPROJ)',\n ),\n ),\n 'mmproj-url': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('URL'))])),\n ),\n }),\n ),\n v.description(\n '- 多模态投影文件的URL。参见tools/mtmd/README.md\\n- URL to a multimodal projector file. see tools/mtmd/README.md (env: LLAMA_ARG_MMPROJ_URL)',\n ),\n ),\n 'no-mmproj': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 显式禁用多模态投影器,适用于使用 -hf 时\\n- explicitly disable multimodal projector, useful when using -hf (env: LLAMA_ARG_NO_MMPROJ)',\n ),\n ),\n 'no-mmproj-offload': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 不要将多模态投影器卸载到GPU\\n- do not offload multimodal projector to GPU (env: LLAMA_ARG_NO_MMPROJ_OFFLOAD)',\n ),\n ),\n 'override-tensor-draft': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([\n v.pipe(\n STR_SCHEMA,\n v.description('<tensor name pattern>=<buffer type>,...'),\n ),\n ]),\n ),\n ),\n }),\n ),\n v.description(\n '- 为草图模型覆盖张量缓冲区的类型\\n- override tensor buffer type for draft model',\n ),\n ),\n 'cpu-moe-draft': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 将所有专家组合(Mixture of Experts, MoE)的权重都存储在 CPU 中,以便用于模型的训练过程。\\n- keep all Mixture of Experts (MoE) weights in the CPU for the draft model (env: LLAMA_ARG_CPU_MOE_DRAFT)',\n ),\n ),\n 'n-cpu-moe-draft': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 将前 N 层的专家组合(Expert Combination, MoE)权重存储在 CPU 中,以用于初步模型的训练。\\n- keep the Mixture of Experts (MoE) weights of the first N layers in the CPU for the draft model (env: LLAMA_ARG_N_CPU_MOE_DRAFT)',\n ),\n ),\n alias: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('STRING'))])),\n ),\n }),\n ),\n v.description(\n '- 设置模型名称的别名(用于REST API)\\n- set alias for model name (to be used by REST API) (env: LLAMA_ARG_ALIAS)',\n ),\n ),\n host: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('HOST'))])),\n ),\n }),\n ),\n v.description(\n '- 监听的IP地址,或以.sock结尾的UNIX套接字路径(默认:127.0.0.1)\\n- ip address to listen, or bind to an UNIX socket if the address ends with .sock (default: 127.0.0.1) (env: LLAMA_ARG_HOST)',\n ),\n ),\n port: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('PORT'))])),\n ),\n }),\n ),\n v.description(\n '- 端口监听 (默认: 8080)\\n- port to listen (default: 8080) (env: LLAMA_ARG_PORT)',\n ),\n ),\n path: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('PATH'))])),\n ),\n }),\n ),\n v.description(\n '- 路径以供静态文件服务(默认:)\\n- path to serve static files from (default: ) (env: LLAMA_ARG_STATIC_PATH)',\n ),\n ),\n 'api-prefix': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('PREFIX'))])),\n ),\n }),\n ),\n v.description(\n '- 服务器提供服务的路径前缀(不包括末尾的斜杠,默认:)。\\n- prefix path the server serves from, without the trailing slash (default: ) (env: LLAMA_ARG_API_PREFIX)',\n ),\n ),\n 'no-webui': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 禁用Web UI(默认:启用)\\n- Disable the Web UI (default: enabled) (env: LLAMA_ARG_NO_WEBUI)',\n ),\n ),\n embedding: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 限制仅支持嵌入用例; 仅与专用嵌入模型一起使用 (默认: 禁用)\\n- restrict to only support embedding use case; use only with dedicated embedding models (default: disabled) (env: LLAMA_ARG_EMBEDDINGS)',\n ),\n ),\n reranking: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 启用服务器上的重排序端点(默认:禁用)\\n- enable reranking endpoint on server (default: disabled) (env: LLAMA_ARG_RERANKING)',\n ),\n ),\n 'api-key': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('KEY'))])),\n ),\n }),\n ),\n v.description(\n '- API key to use for authentication (default: none)\\n- API key to use for authentication (default: none) (env: LLAMA_API_KEY)',\n ),\n ),\n 'api-key-file': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('FNAME'))])),\n ),\n }),\n ),\n v.description(\n '- 包含API密钥的文件路径(默认:无)\\n- path to file containing API keys (default: none)',\n ),\n ),\n 'ssl-key-file': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('FNAME'))])),\n ),\n }),\n ),\n v.description(\n '- PEM编码SSL私钥文件的路径\\n- path to file a PEM-encoded SSL private key (env: LLAMA_ARG_SSL_KEY_FILE)',\n ),\n ),\n 'ssl-cert-file': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('FNAME'))])),\n ),\n }),\n ),\n v.description(\n '- PEM编码SSL证书文件路径\\n- path to file a PEM-encoded SSL certificate (env: LLAMA_ARG_SSL_CERT_FILE)',\n ),\n ),\n 'chat-template-kwargs': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('STRING'))])),\n ),\n }),\n ),\n v.description(\n '- 为 JSON 模板解析器设置额外的参数\\n- sets additional params for the json template parser (env: LLAMA_CHAT_TEMPLATE_KWARGS)',\n ),\n ),\n timeout: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 服务器读/写超时时间(秒),默认:600\\n- server read/write timeout in seconds (default: 600) (env: LLAMA_ARG_TIMEOUT)',\n ),\n ),\n 'threads-http': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 用于处理HTTP请求的线程数(默认:-1)\\n- number of threads used to process HTTP requests (default: -1) (env: LLAMA_ARG_THREADS_HTTP)',\n ),\n ),\n 'cache-reuse': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 最小块大小以尝试通过KV移动从缓存中重用 (默认: 0) [(card)](https://ggml.ai/f0.png)\\n- min chunk size to attempt reusing from the cache via KV shifting (default: 0) [(card)](https://ggml.ai/f0.png) (env: LLAMA_ARG_CACHE_REUSE)',\n ),\n ),\n metrics: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 启用 prometheus 兼容的 metrics 端点 (默认: 禁用)\\n- enable prometheus compatible metrics endpoint (default: disabled) (env: LLAMA_ARG_ENDPOINT_METRICS)',\n ),\n ),\n props: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 启用通过POST /props更改全局属性(默认:禁用)\\n- enable changing global properties via POST /props (default: disabled) (env: LLAMA_ARG_ENDPOINT_PROPS)',\n ),\n ),\n slots: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 启用插槽监控端点(默认:禁用)\\n- enable slots monitoring endpoint (default: enabled) (env: LLAMA_ARG_ENDPOINT_SLOTS)',\n ),\n ),\n 'no-slots': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 禁用插槽监控端点\\n- disables slots monitoring endpoint (env: LLAMA_ARG_NO_ENDPOINT_SLOTS)',\n ),\n ),\n 'slot-save-path': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('PATH'))])),\n ),\n }),\n ),\n v.description(\n '- 保存slot kv缓存的路径(默认:禁用)\\n- path to save slot kv cache (default: disabled)',\n ),\n ),\n jinja: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 使用jinja模板进行聊天(默认:禁用)\\n- use jinja template for chat (default: disabled) (env: LLAMA_ARG_JINJA)',\n ),\n ),\n 'reasoning-format': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(v.optional(v.tuple([v.picklist(['deepseek', 'none'])]))),\n }),\n ),\n v.description(\n \"- 控制是否允许并/或从响应中提取思维标签,以及以何种格式返回;可选值包括: \\\\n- none:将思维内容原样保留在 `message.content` 中 \\\\n- deepseek:将思维内容放入 `message.reasoning_content`(在流式模式下行为与 none 相同) \\\\n(默认值:deepseek)\\n- controls whether thought tags are allowed and/or extracted from the response, and in which format they're returned; one of: - none: leaves thoughts unparsed in `message.content` - deepseek: puts thoughts in `message.reasoning_content` (except in streaming mode, which behaves as `none`) (default: auto) (env: LLAMA_ARG_THINK)\",\n ),\n ),\n 'reasoning-budget': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 控制允许的思考量;目前只能选择以下选项之一:-1 表示无限制的思考预算,或 0 表示禁用思考(默认值:-1)\\n- controls the amount of thinking allowed; currently only one of: -1 for unrestricted thinking budget, or 0 to disable thinking (default: -1) (env: LLAMA_ARG_THINK_BUDGET)',\n ),\n ),\n 'chat-template': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([v.pipe(STR_SCHEMA, v.description('JINJA_TEMPLATE'))]),\n ),\n ),\n }),\n ),\n v.description(\n \"- 设置自定义的Jinja聊天模板(默认:从模型元数据中获取模板)如果指定了后缀/前缀,模板将被禁用 仅接受常用模板(除非在该标志之前设置了--jinja):内置模板列表:bailing, chatglm3, chatglm4, chatml, command-r, deepseek, deepseek2, deepseek3, exaone3, falcon3, gemma, gigachat, glmedge, granite, llama2, llama2-sys, llama2-sys-bos, llama2-sys-strip, llama3, llama4, megrez, minicpm, mistral-v1, mistral-v3, mistral-v3-tekken, mistral-v7, mistral-v7-0, mistral-v7-tekken, monarch, openchat, orion, phi3, phi4, rwkv-world, smolvlm, vicuna, vicuna-orca, yandex, zephyr\\n- set custom jinja chat template (default: template taken from model's metadata) if suffix/prefix are specified, template will be disabled only commonly used templates are accepted (unless --jinja is set before this flag): list of built-in templates: bailing, chatglm3, chatglm4, chatml, command-r, deepseek, deepseek2, deepseek3, exaone3, exaone4, falcon3, gemma, gigachat, glmedge, gpt-oss, granite, grok-2, hunyuan-dense, hunyuan-moe, kimi-k2, llama2, llama2-sys, llama2-sys-bos, llama2-sys-strip, llama3, llama4, megrez, minicpm, mistral-v1, mistral-v3, mistral-v3-tekken, mistral-v7, mistral-v7-tekken, monarch, openchat, orion, phi3, phi4, rwkv-world, seed_oss, smolvlm, vicuna, vicuna-orca, yandex, zephyr (env: LLAMA_ARG_CHAT_TEMPLATE)\",\n ),\n ),\n 'chat-template-file': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([v.pipe(STR_SCHEMA, v.description('JINJA_TEMPLATE_FILE'))]),\n ),\n ),\n }),\n ),\n v.description(\n \"- 设置自定义的Jinja聊天模板文件(默认:从模型元数据中获取模板)如果指定了后缀/前缀,模板将被禁用 仅接受常用模板(除非在该标志之前设置了--jinja):内置模板列表:bailing, chatglm3, chatglm4, chatml, command-r, deepseek, deepseek2, deepseek3, exaone3, falcon3, gemma, gigachat, glmedge, granite, llama2, llama2-sys, llama2-sys-bos, llama2-sys-strip, llama3, llama4, megrez, minicpm, mistral-v1, mistral-v3, mistral-v3-tekken, mistral-v7, mistral-v7-0, mistral-v7-tekken, monarch, openchat, orion, phi3, phi4, rwkv-world, smolvlm, vicuna, vicuna-orca, yandex, zephyr\\n- set custom jinja chat template file (default: template taken from model's metadata) if suffix/prefix are specified, template will be disabled only commonly used templates are accepted (unless --jinja is set before this flag): list of built-in templates: bailing, chatglm3, chatglm4, chatml, command-r, deepseek, deepseek2, deepseek3, exaone3, exaone4, falcon3, gemma, gigachat, glmedge, gpt-oss, granite, grok-2, hunyuan-dense, hunyuan-moe, kimi-k2, llama2, llama2-sys, llama2-sys-bos, llama2-sys-strip, llama3, llama4, megrez, minicpm, mistral-v1, mistral-v3, mistral-v3-tekken, mistral-v7, mistral-v7-tekken, monarch, openchat, orion, phi3, phi4, rwkv-world, seed_oss, smolvlm, vicuna, vicuna-orca, yandex, zephyr (env: LLAMA_ARG_CHAT_TEMPLATE_FILE)\",\n ),\n ),\n 'no-prefill-assistant': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n \"- 是否在最后一条消息是助手消息时预填充助手的响应(默认:预填充启用)当设置此标志时,如果最后一条消息是助手消息,则将其视为完整消息且不预填充\\n- whether to prefill the assistant's response if the last message is an assistant message (default: prefill enabled) when this flag is set, if the last message is an assistant message then it will be treated as a full message and not prefilled (env: LLAMA_ARG_NO_PREFILL_ASSISTANT)\",\n ),\n ),\n 'slot-prompt-similarity': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([v.pipe(STR_SCHEMA, v.description('SIMILARITY'))]),\n ),\n ),\n }),\n ),\n v.description(\n '- 提示必须与槽的提示匹配多少才能使用该槽(默认:0.50,0.0 = 禁用)\\n- how much the prompt of a request must match the prompt of a slot in order to use that slot (default: 0.10, 0.0 = disabled)',\n ),\n ),\n 'lora-init-without-apply': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 加载LoRA适配器而不应用它们(稍后通过POST /lora-adapters应用)(默认:禁用)\\n- load LoRA adapters without applying them (apply later via POST /lora-adapters) (default: disabled)',\n ),\n ),\n 'threads-draft': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 在生成过程中使用的线程数量(默认值:与 --threads 的值相同)\\n- number of threads to use during generation (default: same as --threads)',\n ),\n ),\n 'threads-batch-draft': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 在批量处理和即时处理过程中使用的线程数量(默认值:与 --threads-draft 的值相同)\\n- number of threads to use during batch and prompt processing (default: same as --threads-draft)',\n ),\n ),\n 'draft-max': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 用于推测解码的草稿令牌数量(默认:16)\\n- number of tokens to draft for speculative decoding (default: 16) (env: LLAMA_ARG_DRAFT_MAX)',\n ),\n ),\n 'draft-min': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 最小的草稿标记数,用于推测解码(默认:0)\\n- minimum number of draft tokens to use for speculative decoding (default: 0) (env: LLAMA_ARG_DRAFT_MIN)',\n ),\n ),\n 'draft-p-min': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('P'))])),\n ),\n }),\n ),\n v.description(\n '- 最小推测解码概率(贪心)(默认:0.8)\\n- minimum speculative decoding probability (greedy) (default: 0.8) (env: LLAMA_ARG_DRAFT_P_MIN)',\n ),\n ),\n 'ctx-size-draft': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 提示上下文的大小用于草稿模型(默认:0,0 = 从模型加载)\\n- size of the prompt context for the draft model (default: 0, 0 = loaded from model) (env: LLAMA_ARG_CTX_SIZE_DRAFT)',\n ),\n ),\n 'device-draft': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([v.pipe(STR_SCHEMA, v.description('<dev1,dev2,..>'))]),\n ),\n ),\n }),\n ),\n v.description(\n \"- 逗号分隔的设备列表,用于卸载草稿模型(none = 不卸载)使用--list-devices查看可用设备列表\\n- comma-separated list of devices to use for offloading the draft model (none = don't offload) use --list-devices to see a list of available devices\",\n ),\n ),\n 'gpu-layers-draft': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 存储在VRAM中的图层数量用于草稿模型\\n- number of layers to store in VRAM for the draft model (env: LLAMA_ARG_N_GPU_LAYERS_DRAFT)',\n ),\n ),\n 'model-draft': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('FNAME'))])),\n ),\n }),\n ),\n v.description(\n '- 用于推测解码的草稿模型(默认:未使用)\\n- draft model for speculative decoding (default: unused) (env: LLAMA_ARG_MODEL_DRAFT)',\n ),\n ),\n 'spec-replace': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([\n v.pipe(STR_SCHEMA, v.description('TARGET')),\n v.pipe(STR_SCHEMA, v.description('DRAFT')),\n ]),\n ),\n ),\n }),\n ),\n v.description(\n '- 如果草稿模型(Draft Model)与主模型(Main Model)不兼容,那么需要将目标字符串(Target String)转换为草稿格式(Draft Format)。\\n- translate the string in TARGET into DRAFT if the draft model and main model are not compatible',\n ),\n ),\n 'model-vocoder': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('FNAME'))])),\n ),\n }),\n ),\n v.description(\n '- 语音合成模型用于音频生成(默认:未使用)\\n- vocoder model for audio generation (default: unused)',\n ),\n ),\n 'tts-use-guide-tokens': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 使用引导标记以提高TTS单词回忆\\n- Use guide tokens to improve TTS word recall',\n ),\n ),\n 'embd-bge-small-en-default': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 使用默认的bge-small-en-v1.5模型(注意:可以从互联网下载权重)\\n- use default bge-small-en-v1.5 model (note: can download weights from the internet)',\n ),\n ),\n 'embd-e5-small-en-default': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 使用默认的e5-small-v2模型(注意:可以从互联网下载权重)\\n- use default e5-small-v2 model (note: can download weights from the internet)',\n ),\n ),\n 'embd-gte-small-default': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 使用默认的gte-small模型(注意:可以从互联网下载权重)\\n- use default gte-small model (note: can download weights from the internet)',\n ),\n ),\n 'fim-qwen-1.5b-default': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 使用默认的Qwen 2.5 Coder 1.5B\\n- use default Qwen 2.5 Coder 1.5B (note: can download weights from the internet)',\n ),\n ),\n 'fim-qwen-3b-default': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 使用默认的Qwen 2.5 Coder 3B(注意:可以从互联网下载权重)\\n- use default Qwen 2.5 Coder 3B (note: can download weights from the internet)',\n ),\n ),\n 'fim-qwen-7b-default': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 使用默认的Qwen 2.5 Coder 7B(注意:可以从互联网下载权重)\\n- use default Qwen 2.5 Coder 7B (note: can download weights from the internet)',\n ),\n ),\n 'fim-qwen-7b-spec': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 使用Qwen 2.5 Coder 7B + 0.5B draft进行推测解码(注意:可以从互联网下载权重)\\n- use Qwen 2.5 Coder 7B + 0.5B draft for speculative decoding (note: can download weights from the internet)',\n ),\n ),\n 'fim-qwen-14b-spec': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 使用Qwen 2.5 Coder 14B + 0.5B draft进行推测解码(注意:可以从互联网下载权重)\\n- use Qwen 2.5 Coder 14B + 0.5B draft for speculative decoding (note: can download weights from the internet)',\n ),\n ),\n 'fim-qwen-30b-default': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 使用默认的 Qwen 3 Coder 30B A3B Instruct;请注意:可以从互联网上下载相应的权重数据。\\n- use default Qwen 3 Coder 30B A3B Instruct (note: can download weights from the internet)',\n ),\n ),\n});\n", "import * as v from 'valibot';\nconst STR_SCHEMA = v.pipe(v.string(), v.trim());\nexport const SamplingDefine = v.object({\n samplers: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('SAMPLERS'))])),\n ),\n }),\n ),\n v.description(\n \"- samplers that will be used for generation in the order, separated by ';' (default: penalties;dry;top_n_sigma;top_k;typ_p;top_p;min_p;xtc;temperature)\\n- samplers that will be used for generation in the order, separated by ';' (default: penalties;dry;top_n_sigma;top_k;typ_p;top_p;min_p;xtc;temperature)\",\n ),\n ),\n seed: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('SEED'))])),\n ),\n }),\n ),\n v.description(\n '- RNG种子(默认:-1,使用随机种子)\\n- RNG seed (default: -1, use random seed for -1)',\n ),\n ),\n 'sampling-seq': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('SEQUENCE'))])),\n ),\n }),\n ),\n v.description(\n '- 简化的采样序列,用于采样器(默认:edskypmxt)\\n- simplified sequence for samplers that will be used (default: edskypmxt)',\n ),\n ),\n 'ignore-eos': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 忽略流结束标记并继续生成(隐含--logit-bias EOS-inf)\\n- ignore end of stream token and continue generating (implies --logit-bias EOS-inf)',\n ),\n ),\n temp: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description('- temperature (default: 0.8)\\n- temperature (default: 0.8)'),\n ),\n 'top-k': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- top-k 采样 (默认: 40, 0 = 禁用)\\n- top-k sampling (default: 40, 0 = disabled)',\n ),\n ),\n 'top-p': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- top-p 采样(默认:0.9,1.0 = 禁用)\\n- top-p sampling (default: 0.9, 1.0 = disabled)',\n ),\n ),\n 'min-p': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- min-p 采样 (默认: 0.1, 0.0 = 禁用)\\n- min-p sampling (default: 0.1, 0.0 = disabled)',\n ),\n ),\n 'top-nsigma': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- Top-N-Sigma抽样方法(默认值:-1.0;当两个参数都为-1.0时,该方法被禁用)\\n- top-n-sigma sampling (default: -1.0, -1.0 = disabled)',\n ),\n ),\n 'xtc-probability': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- xtc probability (默认: 0.0, 0.0 = 禁用)\\n- xtc probability (default: 0.0, 0.0 = disabled)',\n ),\n ),\n 'xtc-threshold': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- xtc threshold (默认: 0.1, 1.0 = 禁用)\\n- xtc threshold (default: 0.1, 1.0 = disabled)',\n ),\n ),\n typical: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 局部典型抽样,参数 p(默认:1.0,1.0 = 禁用)\\n- locally typical sampling, parameter p (default: 1.0, 1.0 = disabled)',\n ),\n ),\n 'repeat-last-n': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 用于惩罚的最后n个token(默认:64,0 = 禁用,-1 = 上下文大小)\\n- last n tokens to consider for penalize (default: 64, 0 = disabled, -1 = ctx_size)',\n ),\n ),\n 'repeat-penalty': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 惩罚重复的token序列(默认:1.0,1.0 = 禁用)\\n- penalize repeat sequence of tokens (default: 1.0, 1.0 = disabled)',\n ),\n ),\n 'presence-penalty': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 重复 alpha 存在惩罚(默认:0.0,0.0 = 禁用)\\n- repeat alpha presence penalty (default: 0.0, 0.0 = disabled)',\n ),\n ),\n 'frequency-penalty': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 重复 alpha 频率惩罚(默认:0.0,0.0 = 禁用)\\n- repeat alpha frequency penalty (default: 0.0, 0.0 = disabled)',\n ),\n ),\n 'dry-multiplier': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 设置 DRY 采样乘数(默认:0.0,0.0 = 禁用)\\n- set DRY sampling multiplier (default: 0.0, 0.0 = disabled)',\n ),\n ),\n 'dry-base': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 设置 DRY 采样基础值 (默认: 1.75)\\n- set DRY sampling base value (default: 1.75)',\n ),\n ),\n 'dry-allowed-length': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 设置DRY采样的允许长度(默认:2)\\n- set allowed length for DRY sampling (default: 2)',\n ),\n ),\n 'dry-penalty-last-n': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 设置最后n个token的DRY惩罚(默认:-1,0 = 禁用,-1 = 上下文大小)\\n- set DRY penalty for the last n tokens (default: -1, 0 = disable, -1 = context size)',\n ),\n ),\n 'dry-sequence-breaker': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('STRING'))])),\n ),\n }),\n ),\n v.description(\n \"- 添加序列破环器用于DRY抽样,清除默认的破环器('\\\\n', ':', '\\\"', '*');使用 \\\"none\\\" 不使用任何序列破环器\\n- add sequence breaker for DRY sampling, clearing out default breakers ('\\\\n', ':', '\\\"', '*') in the process; use \\\"none\\\" to not use any sequence breakers\",\n ),\n ),\n 'dynatemp-range': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 动态温度范围 (默认: 0.0, 0.0 = 禁用)\\n- dynamic temperature range (default: 0.0, 0.0 = disabled)',\n ),\n ),\n 'dynatemp-exp': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 动态温度指数(默认:1.0)\\n- dynamic temperature exponent (default: 1.0)',\n ),\n ),\n mirostat: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 使用Mirostat抽样。如果使用了Top K、Nucleus和Locally Typical抽样器,则会被忽略。(默认:0,0=禁用,1=Mirostat,2=Mirostat 2.0)\\n- use Mirostat sampling. Top K, Nucleus and Locally Typical samplers are ignored if used. (default: 0, 0 = disabled, 1 = Mirostat, 2 = Mirostat 2.0)',\n ),\n ),\n 'mirostat-lr': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- Mirostat学习率,参数eta(默认:0.1)\\n- Mirostat learning rate, parameter eta (default: 0.1)',\n ),\n ),\n 'mirostat-ent': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- Mirostat目标熵,参数tau(默认:5.0)\\n- Mirostat target entropy, parameter tau (default: 5.0)',\n ),\n ),\n 'logit-bias': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([v.pipe(STR_SCHEMA, v.description('TOKEN_ID(+/-)BIAS'))]),\n ),\n ),\n }),\n ),\n v.description(\n \"- 修改标记出现在完成中的可能性,例如:--logit-bias 15043+1 增加标记 ' Hello' 的可能性,或 --logit 15043-1 减少标记 ' Hello' 的可能性\\n- modifies the likelihood of token appearing in the completion, i.e. `--logit-bias 15043+1` to increase likelihood of token ' Hello', or `--logit-bias 15043-1` to decrease likelihood of token ' Hello'\",\n ),\n ),\n grammar: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('GRAMMAR'))])),\n ),\n }),\n ),\n v.description(\n \"- BNF类似语法约束生成(参见grammars目录中的示例)(默认:'')\\n- BNF-like grammar to constrain generations (see samples in grammars/ dir) (default: '')\",\n ),\n ),\n 'grammar-file': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('FNAME'))])),\n ),\n }),\n ),\n v.description('- 从文件读取语法\\n- file to read grammar from'),\n ),\n 'json-schema': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('SCHEMA'))])),\n ),\n }),\n ),\n v.description(\n '- JSON schema 用于约束生成(https://json-schema.org/),例如 `{}` 表示任何 JSON 对象。对于包含外部 $refs 的 schema,使用 --grammar + example/json_schema_to_grammar.py 代替\\n- JSON schema to constrain generations (https://json-schema.org/), e.g. `{}` for any JSON object For schemas w/ external $refs, use --grammar + example/json_schema_to_grammar.py instead',\n ),\n ),\n 'json-schema-file': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('FILE'))])),\n ),\n }),\n ),\n v.description(\n '- 包含用于约束生成的JSON架构的文件(https://json-schema.org/),例如{}表示任何JSON对象 对于具有外部$refs的架构,使用--grammar + example/json_schema_to_grammar.py代替\\n- File containing a JSON schema to constrain generations (https://json-schema.org/), e.g. `{}` for any JSON object For schemas w/ external $refs, use --grammar + example/json_schema_to_grammar.py instead',\n ),\n ),\n});\n", "import * as v from 'valibot';\nexport const LlamaSwapDefine = v.object({\n healthCheckTimeout: v.optional(v.number(), 120),\n logLevel: v.optional(v.picklist(['debug', 'info', 'warn', 'error'])),\n startPort: v.optional(v.number()),\n groups: v.optional(\n v.record(\n v.string(),\n v.object({\n swap: v.pipe(\n v.optional(v.boolean()),\n v.description(\n `- true : 仅允许一个模型同时运行\\n- false : 所有模型均可同时运行,无需切换`,\n ),\n ),\n exclusive: v.pipe(\n v.optional(v.boolean()),\n v.description(\n `- true:当此组运行模型时,会导致所有其他组卸载其模型\\n- false:不会影响其他组`,\n ),\n ),\n members: v.array(v.string()),\n persistent: v.optional(v.boolean()),\n }),\n ),\n ),\n});\n", "const SysMap: Record<string, string> = {\n win32: 'windows',\n linux: 'linux',\n};\nconst ArchMap: Record<string, string> = {\n x64: 'amd64',\n arm64: 'arm64',\n};\nconst ZipMap: Record<string, string> = {\n win32: 'zip',\n linux: 'tar.gz',\n};\nexport function llamaSwapFileNameByVersion(version: string) {\n return `llama-swap_${version.slice(1)}_${SysMap[process.platform]}_${ArchMap[process.arch]}.${ZipMap[process.platform]}`;\n}\nconst LlamaSysMap = { win32: 'win', linux: 'ubuntu' };\n\nconst LlamaPlatform = (LlamaSysMap as any)[process.platform];\n\nexport function llamaFileNameByVersion(version: string, device: string) {\n if (process.platform === 'linux' && device === 'cpu') {\n return `llama-${version}-bin-${LlamaPlatform}-x64`;\n }\n return `llama-${version}-bin-${LlamaPlatform}-${device}-x64`;\n}\n", "import path from 'node:path';\n\nexport function parseName(name: string) {\n const parts = name.replace(path.sep, '/').split('/');\n const fn = () => {\n switch (parts.length) {\n case 3: {\n let endpoint = parts[0];\n if (!endpoint.includes('://')) {\n endpoint = `https://${endpoint}`;\n }\n if (!endpoint.endsWith('/')) {\n endpoint = `${endpoint}/`;\n }\n return {\n endpoint: endpoint,\n namespace: parts[1],\n repo: parts[2],\n };\n }\n case 2:\n return {\n namespace: parts[0],\n repo: parts[1],\n };\n }\n throw new Error(`parse url failed: ${name}`);\n };\n const result = fn();\n\n const list = result.repo.split(':');\n return {\n ...result,\n repo: list[0],\n tag: list[1],\n };\n}\n\nexport async function getModelManifest(\n name: string,\n options: {\n endpoint: string;\n token?: string;\n },\n) {\n const result = parseName(name);\n const endpointList = [result.endpoint, options.endpoint].filter(Boolean);\n let lastError;\n // 因为hf-mirror似乎有问题,所以加入两个镜像验证,一个是url带的,一个是传入\n for (const endpoint of endpointList) {\n const manifestUrl = `${endpoint}v2/${result.namespace}/${result.repo}/manifests/${result.tag || 'latest'}`;\n const headers = {\n 'User-Agent': 'llama-cpp',\n 'software-bbs': 'bbs.shenghuabi.site',\n } as any;\n if (options?.token) {\n headers['Authorization'] = `Bearer ` + options.token;\n }\n try {\n const result = await fetch(manifestUrl, {\n headers,\n }).then(async (response) => {\n if (response.ok) {\n return response.json();\n }\n throw new Error(\n `${response.status}:${response.statusText ?? (await response.text())}`,\n );\n });\n return result as { layers: any[]; ggufFile: any };\n } catch (error) {\n lastError = error;\n }\n }\n throw lastError;\n}\n", "import { getModelManifest, parseName } from './get-model-manifest';\nimport MS from 'magic-string';\nexport async function getGgufFile(\n name: string,\n options: {\n endpoint: string;\n token?: string;\n fileName?: string;\n },\n) {\n const resultUrl = parseName(name);\n const endpoint = resultUrl.endpoint ?? `https://${options.endpoint}/`;\n const hff = `${resultUrl.namespace}/${resultUrl.repo}`;\n const result = await getModelManifest(name, {\n ...options,\n endpoint: `https://${options.endpoint}/`,\n });\n const rfilename = result.ggufFile.rfilename;\n const result2 = getGgufSplitPartsInfo(rfilename);\n\n if (options?.fileName) {\n const fileList = [`${endpoint}${hff}/resolve/main/${options.fileName}`];\n return {\n fileList: fileList,\n fileName: `${hff}-${options.fileName}`.replace(/\\//g, '-'),\n };\n }\n const fileList = result2.map(\n (item) => `${endpoint}${hff}/resolve/main/${item}`,\n );\n return {\n fileList: fileList,\n fileName: `${hff}-${result2[0]}`.replace(/\\//g, '-'),\n };\n}\n// export function isUrl(text: string, throwOnInvalidUrl: boolean = true) {\n// if (\n// text.toLowerCase().startsWith('http://') ||\n// text.toLowerCase().startsWith('https://')\n// ) {\n// try {\n// new URL(text);\n// return true;\n// } catch {\n// if (throwOnInvalidUrl) throw new Error(`Invalid URL: ${text}`);\n\n// return false;\n// }\n// }\n\n// return false;\n// }\n\nconst splitGgufPartRegex = /-(?<part>\\d{5})-of-(?<parts>\\d{5})\\.gguf$/d;\nexport function getGgufSplitPartsInfo(ggufPath: string) {\n const checkPath = ggufPath;\n\n const splitPartMatch = checkPath.match(splitGgufPartRegex);\n if (splitPartMatch != null) {\n const part = +splitPartMatch.groups!.part;\n const parts = +splitPartMatch.groups!.parts;\n const list = [];\n for (let i = part; i <= parts; i++) {\n const ms = new MS(checkPath);\n const partIndex = splitPartMatch.indices!.groups!['part'];\n ms.update(partIndex[0], partIndex[1], `${i}`);\n list.push(ms.toString());\n }\n return list;\n } else {\n return [checkPath];\n }\n}\n", "import * as fs from 'fs';\nimport path from 'path';\nimport { MainifestType } from './manifest.type';\nimport { homedir } from 'os';\nimport normalizePath from 'normalize-path';\nfunction getFilePath(dir: string, digest?: string) {\n return digest ? path.join(dir, digest.replace(/:/, '-')) : '';\n}\nasync function readDirectory(\n dir: string,\n blobsDir: string,\n prefix: string,\n): Promise<Record<string, any>> {\n const result: Record<string, any> = {};\n\n // 读取目录中的所有文件和子目录\n const files = await fs.promises.readdir(dir);\n\n for (const dirName of files) {\n const dirPath = path.join(dir, dirName);\n try {\n const stats = await fs.promises.stat(dirPath);\n if (stats.isDirectory()) {\n const fileList = await fs.promises.readdir(dirPath);\n for (const fileName of fileList) {\n const content = await fs.promises.readFile(\n path.join(dirPath, fileName),\n 'utf8',\n );\n const data = JSON.parse(content) as MainifestType;\n const layersObj = data.layers.reduce(\n (obj, item) => {\n obj[item.mediaType.replace(/.+\\.([^\\.]+)$/, '$1')] = getFilePath(\n blobsDir,\n item.digest,\n );\n return obj;\n },\n {} as Record<string, string>,\n );\n result[`${prefix}${dirName}:${fileName}`] = {\n config: getFilePath(blobsDir, data.config.digest),\n ...layersObj,\n };\n }\n }\n } catch (error) {}\n // result[file];\n }\n\n return result;\n}\nexport async function getOllamaModel(rootDir?: string) {\n if (!rootDir) {\n const envDir = process.env['OLLAMA_MODELS'];\n if (envDir) {\n rootDir = envDir;\n } else {\n rootDir = path.join(homedir(), '.ollama/models');\n }\n }\n\n const OFFICAL_LIB = normalizePath('registry.ollama.ai/library');\n const manifestsDir = path.join(rootDir, 'manifests');\n const dirExist = fs.existsSync(manifestsDir);\n if (!dirExist) {\n return [];\n }\n const blobsDir = path.join(rootDir, 'blobs');\n const list = await readDir2(manifestsDir, 2);\n let metadata = {};\n for (const item of list) {\n const relName = path.relative(manifestsDir, item);\n const prefixName = normalizePath(relName);\n const result = await readDirectory(\n item,\n blobsDir,\n prefixName === OFFICAL_LIB ? '' : `${prefixName}/`,\n );\n metadata = { ...metadata, ...result };\n }\n return Object.entries(metadata).map(([key, value]) => ({\n name: key,\n value: (value as any).model as string,\n }));\n}\n\nasync function readDir2(dir: string, level: number): Promise<string[]> {\n if (level === 0) {\n return [dir];\n }\n const list = await fs.promises.readdir(dir);\n return Promise.all(\n list.map((item) => readDir2(path.join(dir, item), level - 1)),\n ).then((list) => list.flat());\n}\n", "import { getModelManifest, parseName } from './get-model-manifest';\n//https://registry.ollama.ai/v2/library/qwen3/manifests/latest\nfunction getDownloadFileName(name: string) {\n return name;\n}\nexport async function getOllamaGgufFile(\n name: string,\n options: {\n endpoint: string;\n token?: string;\n },\n) {\n name = name.includes('/') ? name : `library/${name}`;\n const resultUrl = parseName(name);\n const endpoint = resultUrl.endpoint ?? `https://${options.endpoint}/`;\n const hff = `${resultUrl.namespace}/${resultUrl.repo}`;\n const result = await getModelManifest(name, {\n ...options,\n endpoint: endpoint,\n });\n const rfilename = result.layers.find(\n (item: any) => item.mediaType === `application/vnd.ollama.image.model`,\n ).digest;\n const result2 = getDownloadFileName(rfilename);\n\n const fileList = [`${endpoint}v2/${hff}/blobs/${result2}`];\n return {\n fileList: fileList,\n fileName: `ollama-${name}`.replace(/\\/|:/g, '-'),\n };\n}\n", "import { getModelManifest } from './get-model-manifest';\n\nexport async function autoCheckVendor(\n repo: string,\n options: {\n endpoint: string;\n token?: string;\n },\n) {\n try {\n await getModelManifest(repo, options);\n return undefined;\n } catch (error) {}\n return 'ollama' as const;\n}\n"],
5
- "mappings": "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",
3
+ "sources": ["../../packages/llama/llama-swap.service.ts", "../../packages/llama/token.ts", "../../packages/llama/define/index.ts", "../../packages/llama/define/llama-server.define.ts", "../../packages/llama/define/common.define.ts", "../../packages/llama/define/example-specific.define.ts", "../../packages/llama/define/sampling.define.ts", "../../packages/llama/define/llama-swap.define.ts", "../../packages/llama/util/file-name-by-version.ts", "../../packages/llama/download/get-model-manifest.ts", "../../packages/llama/download/get-gguf-file.ts", "../../packages/llama/ollama-model/ollama-manifests.ts"],
4
+ "sourcesContent": ["import {\n DownloadConfigToken,\n ExternalCallBaseService,\n HUGGINGFACE_TOKEN_TOKEN,\n HUGGINGFACE_URL_TOKEN,\n} from '@cyia/external-call';\nimport { computed, inject, Injector, signal } from 'static-injector';\nimport { path } from '@cyia/vfs2';\nimport { LLamaConfigToken } from './token';\nimport * as v from 'valibot';\nimport {\n DefaultCommonConfig,\n ExampleSpecificType,\n LlamaConfigDefine,\n LlamaConfigInputType,\n LlamaServerSwapItemDefine,\n LlamaServerSwapItemInputType,\n LlamaServerType,\n} from './define';\nimport * as fs from 'fs';\nimport { parse, stringify } from 'yaml';\nimport {\n llamaFileNameByVersion,\n llamaSwapFileNameByVersion,\n} from './util/file-name-by-version';\nimport { downloadFile, DownloadFileOptions } from '@cyia/dl';\nimport { getGgufFile } from './download/get-gguf-file';\nimport { getOllamaModel } from './ollama-model/ollama-manifests';\nimport { dirname } from 'path';\nimport { differenceBy } from 'es-toolkit';\nconst SysMap = { win32: 'win', linux: 'ubuntu' };\nconst LlamaPlatform = (SysMap as any)[process.platform];\nconst remoteArgs = ['hf-repo', 'hf-file', 'model-url'];\n/**\n * 先写入配置,然后再初始化\n */\nexport class LlamaSwapService extends ExternalCallBaseService {\n override logName = 'llama.cpp';\n #config = inject(LLamaConfigToken);\n #llamaSwapPath$$ = computed(() =>\n path.join(this.#config().dir, 'llama-swap.config.yml'),\n );\n start$ = signal(false);\n llamaDir$$ = computed(() => {\n const fullPath = path.join(this.#config().dir, 'llama');\n if (this.#config().useRelConfigPath) {\n return path.relative(this.#config().cwd!, fullPath);\n }\n return fullPath;\n });\n llamaSwapDir$$ = computed(() => path.join(this.#config().dir, 'llama-swap'));\n #hgModelUrl$$ = inject(HUGGINGFACE_URL_TOKEN);\n #downloadConfig$$ = inject(DownloadConfigToken);\n #hgtoken$$ = inject(HUGGINGFACE_TOKEN_TOKEN);\n override startPath$$ = computed(() =>\n path.join(\n this.llamaSwapDir$$(),\n process.platform === 'win32' ? 'llama-swap.exe' : 'llama-swap',\n ),\n );\n override execPath$$ = this.startPath$$;\n override checkFilePath$$ = this.startPath$$;\n configExist$ = signal(false);\n checkConfigExist() {\n const result = fs.existsSync(this.#llamaSwapPath$$());\n if (!result) {\n this.log?.info(`初始化:等待配置文件[${this.#llamaSwapPath$$()}]创建`);\n }\n this.configExist$.set(result);\n }\n override async checkExist(): Promise<void> {\n await super.checkExist();\n this.checkConfigExist();\n }\n #injector = inject(Injector);\n #startFinished$?: Promise<ReturnType<typeof this.exec>>;\n\n override init(): void {\n if (this.start$()) {\n return;\n }\n this.startup();\n }\n async startup() {\n const exist = await this.exist();\n if (!exist) {\n return undefined;\n }\n if (!this.#startFinished$) {\n this.#startFinished$ = this.#startupLLamaSwap();\n }\n return this.#startFinished$;\n }\n #startupLLamaSwap() {\n return new Promise<any>((resolve, reject) => {\n this.log?.info('初始化:准备启动');\n const instance = this.exec(this.startPath$$(), [\n '-config',\n this.#llamaSwapPath$$(),\n '-listen',\n `${this.#config().listen}`,\n '-watch-config',\n ]);\n this.instanceSnapshot = [instance.instance];\n let isStart = false;\n instance.instance.stdout.on('data', (data) => {\n const content = data.toString() as string;\n if (!isStart && content.includes('listening on')) {\n this.start$.set(true);\n resolve(instance);\n isStart = true;\n }\n\n this.log?.info(content);\n });\n instance.instance.stderr.on('data', (data) => {\n const content = data.toString() as string;\n this.log?.info(content);\n });\n });\n }\n async convertOllamaModel(\n originList: any[],\n llamaVersion: string,\n OLLAMA_MODELS?: string,\n ) {\n const ollamaList = (await getOllamaModel(OLLAMA_MODELS)).map((item) => ({\n config: {\n common: {\n model: {\n enable: true,\n value: [item.value],\n },\n ...DefaultCommonConfig,\n },\n },\n exec: {\n version: llamaVersion,\n device: 'vulkan',\n },\n model: item.name,\n }));\n const result: { config: LlamaServerType }[] = differenceBy(\n originList,\n ollamaList,\n (item: any) => item.config?.common?.model?.value?.[0],\n );\n for (let index = 0; index < result.length; index++) {\n const item = result[index];\n if (\n item.config?.common?.model?.enable &&\n item.config.common.model.value?.[0]\n ) {\n if (!fs.existsSync(item.config.common.model.value![0])) {\n result.splice(index, 1);\n index--;\n }\n }\n }\n return [...result, ...ollamaList];\n }\n override stop() {\n try {\n super.stop();\n } catch (error) {\n this.log?.error(error);\n } finally {\n this.#startFinished$ = undefined;\n this.start$.set(false);\n }\n }\n #configToCmdOptions(config: LlamaServerType) {\n const list = [];\n // 去除远程参数,假如有本地的话\n let removeRemoteArgs = false;\n if (config.common?.model?.enable && config.common?.model?.value?.[0]) {\n removeRemoteArgs = true;\n }\n for (const item of [\n config.common,\n config.exampleSpecific,\n config.sampling,\n ]) {\n if (!item) {\n continue;\n }\n\n for (const [key, value] of Object.entries(item)) {\n if (removeRemoteArgs) {\n if (remoteArgs.includes(key)) {\n continue;\n }\n }\n if (value.enable) {\n list.push(`--${key}`);\n if ('value' in value && value.value) {\n list.push(...value.value);\n }\n }\n }\n }\n return list;\n }\n async writeConfig(config: LlamaConfigInputType) {\n this.log?.info(`准备写入llamaSwap配置`);\n const parsedConfig = v.parse(LlamaConfigDefine, config);\n const { list, global } = parsedConfig.server;\n const swapConfig = { models: {} as any, ...parsedConfig.swap };\n for (const serverItem of list) {\n const config = { ...global?.config, ...serverItem.config };\n if (global) {\n delete (global as any).config;\n }\n delete (serverItem as any).config;\n const commonConfig = { ...global, ...serverItem };\n if (commonConfig.env) {\n commonConfig.env = Object.entries(commonConfig.env).map(\n ([key, value]) => `${key}=${value}`,\n );\n }\n const cmdOptions = this.#configToCmdOptions(config);\n let exec;\n if (typeof commonConfig.exec === 'string') {\n exec = commonConfig.exec;\n } else {\n const exeDirName = llamaFileNameByVersion(\n commonConfig.exec!.version,\n commonConfig.exec!.device,\n );\n exec = path.join(\n this.llamaDir$$(),\n exeDirName,\n process.platform === 'win32'\n ? 'llama-server.exe'\n : 'build/bin/llama-server',\n );\n await this.checkOrDownloadLlama(\n exeDirName,\n commonConfig.exec!.version,\n commonConfig.exec!.device,\n );\n }\n if (process.platform === 'linux') {\n commonConfig.env = [\n ...((commonConfig.env as any) ?? []),\n `LD_LIBRARY_PATH=${dirname(exec)}`,\n ];\n }\n const cmd = `${exec} ${cmdOptions.join(' ')}`;\n const model = commonConfig.model;\n delete (commonConfig as any).model;\n delete (commonConfig as any).exec;\n\n swapConfig.models[model!] = {\n proxy: this.#getProxy(config.exampleSpecific),\n cmd,\n ...commonConfig,\n };\n }\n this.log?.info(`准备写入 ${this.#llamaSwapPath$$()}`);\n await fs.promises.writeFile(this.#llamaSwapPath$$(), stringify(swapConfig));\n this.log?.info(`写入完成`);\n await this.checkExist();\n }\n async downloadExec(\n version: string,\n options?: { progressMessage?: DownloadFileOptions['message'] },\n ) {\n this.stop();\n const result = await this.githubRepoDownload(\n {\n prefix: 'mostlygeek/llama-swap',\n version: version,\n fileName: llamaSwapFileNameByVersion(version),\n },\n {\n output: this.llamaSwapDir$$(),\n progressMessage: options?.progressMessage,\n },\n );\n await this.checkExist();\n }\n async downloadModel(\n modelOptions: {\n url?: string;\n repo?: string;\n token?: string;\n fileName?: string;\n },\n options?: { progressMessage?: DownloadFileOptions['message'] },\n ) {\n let url;\n let savePath;\n let directory;\n const dir = path.join(this.#config().dir, 'models');\n if (modelOptions.repo) {\n const resolveResult = await getGgufFile(modelOptions.repo, {\n ...modelOptions,\n endpoint: this.#hgModelUrl$$(),\n token: modelOptions.token || this.#hgtoken$$(),\n });\n this.log?.info('模型文件:', resolveResult);\n const filePath = path.join(dir, resolveResult.fileName);\n if (fs.existsSync(filePath)) {\n this.log?.info('模型已存在');\n return filePath;\n }\n url = resolveResult.fileList;\n savePath = filePath;\n } else if (modelOptions.url) {\n url = modelOptions.url;\n directory = dir;\n } else {\n throw new Error(`url/repo not found`);\n }\n return downloadFile(url, {\n message: options?.progressMessage,\n savePath: savePath,\n directory: directory,\n headers: {\n 'software-bbs': 'bbs.shenghuabi.site',\n },\n ...this.#downloadConfig$$(),\n }).then((result) => {\n const filePath = result?.getFilePath();\n this.log?.info(`下载完成: ${filePath}`);\n return filePath;\n });\n }\n async checkOrDownloadLlama(\n dirName: string,\n version: string,\n device: string,\n options?: { progressMessage?: DownloadFileOptions['message'] },\n ) {\n this.log?.info(`检查 ${dirName} 文件夹是否存在`);\n const dir = path.join(this.llamaDir$$(), dirName);\n if (fs.existsSync(dir)) {\n this.log?.info(`已存在,跳过下载`);\n return;\n }\n this.log?.info(`准备下载 ${dirName}`);\n await this.downloadLlama(dirName, version, device, options);\n this.log?.info(`下载完成`);\n }\n async downloadLlama(\n dirName: string,\n version: string,\n device: string,\n options?: { progressMessage?: DownloadFileOptions['message'] },\n ) {\n await this.githubRepoDownload(\n {\n prefix: 'ggml-org/llama.cpp',\n version: version,\n fileName: llamaFileNameByVersion(version, device) + '.zip',\n },\n {\n output: path.join(this.llamaDir$$(), dirName),\n progressMessage: options?.progressMessage,\n },\n );\n }\n async createModelConfig(\n model: string,\n options?: { progressMessage?: DownloadFileOptions['message'] },\n ) {\n const downloadFilePath = await this.downloadModel(\n {\n repo: model,\n },\n options,\n );\n const result = v.parse(LlamaServerSwapItemDefine, {\n config: {\n common: {\n ...DefaultCommonConfig,\n model: {\n enable: true,\n value: [downloadFilePath!],\n },\n },\n },\n // 缺少可执行部分,需要返回后设置\n model: model,\n } as LlamaServerSwapItemInputType);\n return result;\n }\n override async getVersion(): Promise<string | undefined> {\n await this.checkExist();\n if (!this.exist$() || !this.start$()) {\n return undefined;\n }\n\n const { instance } = this.exec(this.execPath$$(), ['--version']);\n const regexp = /version:\\s+(\\d+)/;\n const matchResult = regexp.exec((await instance).stdout);\n if (matchResult) {\n return matchResult[1];\n }\n return undefined;\n }\n #getProxy(config?: ExampleSpecificType) {\n let hostStr;\n if (config?.host?.enable && config?.host.value?.[0]) {\n hostStr = config?.host.value[0];\n } else {\n hostStr = '127.0.0.1';\n }\n let portStr;\n if (config?.port?.enable && config?.port.value?.[0]) {\n portStr = config?.port.value[0];\n } else {\n portStr = '8080';\n }\n return `http://${hostStr}:${portStr}`;\n }\n async getLlamaSwapConfig() {\n const isExists = fs.existsSync(this.#llamaSwapPath$$());\n if (!isExists) {\n return undefined;\n }\n return parse(\n await fs.promises.readFile(this.#llamaSwapPath$$(), {\n encoding: 'utf-8',\n }),\n );\n }\n override destroy() {\n this.stop();\n }\n}\n", "import { InjectionToken, Signal } from 'static-injector';\nexport interface LLamaConfig {\n dir: string;\n listen: string;\n useRelConfigPath?: boolean;\n /** 配合相对路径使用 */\n cwd?: string;\n}\nexport const LLamaConfigToken = new InjectionToken<Signal<LLamaConfig>>(\n 'LLamaConfig',\n);\n", "import * as v from 'valibot';\nimport { LlamaServerSwapItemDefine } from './llama-server.define';\nimport { LlamaSwapDefine } from './llama-swap.define';\nimport { ExampleSpecificDefine } from './example-specific.define';\nexport * from './llama-server.define';\nexport * from './common.define';\nexport * from './example-specific.define';\nexport * from './sampling.define';\nimport { CommonDefine } from './common.define';\n\nexport const LlamaConfigDefine = v.object({\n server: v.object({\n global: v.optional(LlamaServerSwapItemDefine),\n list: v.array(LlamaServerSwapItemDefine),\n }),\n swap: v.optional(LlamaSwapDefine),\n});\n\nexport type ExampleSpecificType = v.InferOutput<typeof ExampleSpecificDefine>;\nexport type LlamaConfigInputType = v.InferInput<typeof LlamaConfigDefine>;\n\nexport type LLamaCommonType = v.InferInput<typeof CommonDefine>;\n\nexport const DefaultCommonConfig: LLamaCommonType = {\n 'gpu-layers': {\n enable: true,\n value: [999],\n },\n 'flash-attn': {\n enable: true,\n value: ['on'],\n },\n};\n", "import * as v from 'valibot';\nimport { CommonDefine } from './common.define';\nimport { ExampleSpecificDefine } from './example-specific.define';\nimport { SamplingDefine } from './sampling.define';\n\nexport const LlamaServerDefine = v.object({\n common: v.optional(CommonDefine),\n exampleSpecific: v.optional(ExampleSpecificDefine),\n sampling: v.optional(SamplingDefine),\n});\nexport type LlamaServerType = v.InferOutput<typeof LlamaServerDefine>;\nexport const ExecDefine = v.object({\n version: v.pipe(\n v.string(),\n v.title('llama.cpp 版本号'),\n v.description(\n 'llama.cpp的版本号,可以从 https://github.com/ggerganov/llama.cpp/releases 获得',\n ),\n ),\n device: v.pipe(\n v.picklist(['cpu', 'cuda12.4', 'hip-radeon', 'sycl', 'vulkan']),\n\n v.title('llama.cpp 使用设备'),\n ),\n});\n\nexport const LlamaServerSwapItemDefine = v.object({\n // url: v.pipe(v.optional(v.string()), v.description(`访问地址,默认不需要改,如果`)),\n config: v.optional(LlamaServerDefine),\n aliases: v.optional(v.array(v.string())),\n env: v.optional(v.record(v.string(), v.any())),\n ttl: v.optional(v.number()),\n checkEndpoint: v.optional(v.string()),\n useModelName: v.optional(v.string()),\n exec: v.optional(v.union([v.string(), ExecDefine])),\n model: v.optional(v.string()),\n proxy: v.pipe(\n v.optional(v.string()),\n v.description('正常情况下无需配置会自动生成'),\n ),\n});\n\nexport type LlamaServerSwapItemType = v.InferOutput<\n typeof LlamaServerSwapItemDefine\n>;\nexport type LlamaServerSwapItemInputType = v.InferInput<\n typeof LlamaServerSwapItemDefine\n>;\n", "import * as v from 'valibot';\nconst STR_SCHEMA = v.pipe(v.string(), v.trim());\nexport const CommonDefine = v.object({\n 'verbose-prompt': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 在生成前打印详细提示(默认:false)\\n- print a verbose prompt before generation (default: false)',\n ),\n ),\n threads: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 生成期间使用的线程数(默认:-1)\\n- number of threads to use during generation (default: -1) (env: LLAMA_ARG_THREADS)',\n ),\n ),\n 'threads-batch': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 批量和提示处理期间使用的线程数(默认:与--threads相同)\\n- number of threads to use during batch and prompt processing (default: same as --threads)',\n ),\n ),\n 'cpu-mask': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('M'))])),\n ),\n }),\n ),\n v.description(\n '- CPU亲和力掩码:任意长度的十六进制数。补充cpu-range(默认:\"\")\\n- CPU affinity mask: arbitrarily long hex. Complements cpu-range (default: \"\")',\n ),\n ),\n 'cpu-range': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('lo-hi'))])),\n ),\n }),\n ),\n v.description(\n '- CPU范围用于亲和力。补充--cpu-mask\\n- range of CPUs for affinity. Complements --cpu-mask',\n ),\n ),\n 'cpu-strict': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(v.optional(v.tuple([v.picklist(['0', '1'])]))),\n }),\n ),\n v.description(\n '- 使用严格CPU放置(默认:0)\\n- use strict CPU placement (default: 0)',\n ),\n ),\n prio: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(v.optional(v.tuple([v.picklist([0, 1, 2, 3])]))),\n }),\n ),\n v.description(\n '- 设置进程/线程优先级:低(-1)、正常(0)、中等(1)、高(2)、实时(3)(默认值:0)\\n- set process/thread priority : low(-1), normal(0), medium(1), high(2), realtime(3) (default: 0)',\n ),\n ),\n poll: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('<0...100>'))])),\n ),\n }),\n ),\n v.description(\n '- 使用轮询级别等待工作 (0 - 无轮询,默认: 50)\\n- use polling level to wait for work (0 - no polling, default: 50)',\n ),\n ),\n 'cpu-mask-batch': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('M'))])),\n ),\n }),\n ),\n v.description(\n '- CPU亲和力掩码:任意长度的十六进制数。补充cpu-range-batch(默认:与--cpu-mask相同)\\n- CPU affinity mask: arbitrarily long hex. Complements cpu-range-batch (default: same as --cpu-mask)',\n ),\n ),\n 'cpu-range-batch': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('lo-hi'))])),\n ),\n }),\n ),\n v.description(\n '- CPU亲和力的范围。补充--cpu-mask-batch\\n- ranges of CPUs for affinity. Complements --cpu-mask-batch',\n ),\n ),\n 'cpu-strict-batch': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(v.optional(v.tuple([v.picklist(['0', '1'])]))),\n }),\n ),\n v.description(\n '- 使用严格的CPU放置(默认:与--cpu-strict相同)\\n- use strict CPU placement (default: same as --cpu-strict)',\n ),\n ),\n 'prio-batch': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(v.optional(v.tuple([v.picklist([0, 1, 2, 3])]))),\n }),\n ),\n v.description(\n '- 设置进程/线程优先级 : 0-正常, 1-中等, 2-高, 3-实时 (默认: 0)\\n- set process/thread priority : 0-normal, 1-medium, 2-high, 3-realtime (default: 0)',\n ),\n ),\n 'poll-batch': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(v.optional(v.tuple([v.picklist(['0', '1'])]))),\n }),\n ),\n v.description(\n '- 使用轮询等待工作(默认:与--poll相同)\\n- use polling to wait for work (default: same as --poll)',\n ),\n ),\n 'ctx-size': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 提示上下文的大小(默认:4096,0 = 从模型加载)\\n- size of the prompt context (default: 4096, 0 = loaded from model) (env: LLAMA_ARG_CTX_SIZE)',\n ),\n ),\n predict: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 预测的token数量(默认:-1,-1 = 无限)\\n- number of tokens to predict (default: -1, -1 = infinity) (env: LLAMA_ARG_N_PREDICT)',\n ),\n ),\n 'batch-size': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 逻辑最大批处理大小(默认:2048)\\n- logical maximum batch size (default: 2048) (env: LLAMA_ARG_BATCH)',\n ),\n ),\n 'ubatch-size': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 物理最大批处理大小(默认:512)\\n- physical maximum batch size (default: 512) (env: LLAMA_ARG_UBATCH)',\n ),\n ),\n keep: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 保留初始提示中的令牌数量(默认:0,-1 = 所有)\\n- number of tokens to keep from the initial prompt (default: 0, -1 = all)',\n ),\n ),\n 'swa-full': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 使用全尺寸SWA缓存(默认:false) [更多信息](https://github.com/ggml-org/llama.cpp/pull/13194#issuecomment-2868343055)\\n- use full-size SWA cache (default: false) [(more info)](https://github.com/ggml-org/llama.cpp/pull/13194#issuecomment-2868343055) (env: LLAMA_ARG_SWA_FULL)',\n ),\n ),\n 'kv-unified': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 为所有序列的 KV 缓存使用一个统一的 KV 缓冲区(默认值为 `false`):[更多信息](https://github.com/ggml-org/llama.cpp/pull/14363)(环境变量:`LLAMA_ARG_KV_SPLIT`)\\n- use single unified KV buffer for the KV cache of all sequences (default: false) [(more info)](https://github.com/ggml-org/llama.cpp/pull/14363) (env: LLAMA_ARG_KV_SPLIT)',\n ),\n ),\n 'flash-attn': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(v.optional(v.tuple([v.picklist(['on', 'off', 'auto'])]))),\n }),\n ),\n v.description(\n \"- 启用 Flash 注意力(默认:禁用)\\n- set Flash Attention use ('on', 'off', or 'auto', default: 'auto') (env: LLAMA_ARG_FLASH_ATTN)\",\n ),\n ),\n 'no-perf': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 禁用内部libllama性能计时(默认:false)\\n- disable internal libllama performance timings (default: false) (env: LLAMA_ARG_NO_PERF)',\n ),\n ),\n escape: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 处理转义序列(\\\\n, \\\\r, \\\\t, \\\\\", \\\\\\\\)(默认:true)\\n- process escapes sequences (\\\\n, \\\\r, \\\\t, \\\\\\', \\\\\", \\\\\\\\) (default: true)',\n ),\n ),\n 'no-escape': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description('- 不要处理转义序列\\n- do not process escape sequences'),\n ),\n 'rope-scaling': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.picklist(['none', 'linear', 'yarn'])])),\n ),\n }),\n ),\n v.description(\n '- RoPE频率缩放方法,除非模型指定,默认为线性\\n- RoPE frequency scaling method, defaults to linear unless specified by the model (env: LLAMA_ARG_ROPE_SCALING_TYPE)',\n ),\n ),\n 'rope-scale': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- RoPE上下文缩放因子,将上下文扩展N倍\\n- RoPE context scaling factor, expands context by a factor of N (env: LLAMA_ARG_ROPE_SCALE)',\n ),\n ),\n 'rope-freq-base': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- RoPE基频,用于NTK感知缩放(默认:从模型加载)\\n- RoPE base frequency, used by NTK-aware scaling (default: loaded from model) (env: LLAMA_ARG_ROPE_FREQ_BASE)',\n ),\n ),\n 'rope-freq-scale': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- RoPE频率缩放因子,通过因子1/N扩展上下文\\n- RoPE frequency scaling factor, expands context by a factor of 1/N (env: LLAMA_ARG_ROPE_FREQ_SCALE)',\n ),\n ),\n 'yarn-orig-ctx': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- YaRN: 原始上下文大小(默认:0 = 模型训练上下文大小)\\n- YaRN: original context size of model (default: 0 = model training context size) (env: LLAMA_ARG_YARN_ORIG_CTX)',\n ),\n ),\n 'yarn-ext-factor': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- YaRN: 插值混合因子(默认:-1.0,0.0 = 完全插值)\\n- YaRN: extrapolation mix factor (default: -1.0, 0.0 = full interpolation) (env: LLAMA_ARG_YARN_EXT_FACTOR)',\n ),\n ),\n 'yarn-attn-factor': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- YaRN: 缩放 sqrt(t) 或注意力幅度(默认:-1.0)\\n- YaRN: scale sqrt(t) or attention magnitude (default: -1.0) (env: LLAMA_ARG_YARN_ATTN_FACTOR)',\n ),\n ),\n 'yarn-beta-slow': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- YaRN: 高校正维度或alpha(默认:-1.0)\\n- YaRN: high correction dim or alpha (default: -1.0) (env: LLAMA_ARG_YARN_BETA_SLOW)',\n ),\n ),\n 'yarn-beta-fast': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- YaRN: 低校正维或beta(默认:-1)\\n- YaRN: low correction dim or beta (default: -1.0) (env: LLAMA_ARG_YARN_BETA_FAST)',\n ),\n ),\n 'no-kv-offload': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 禁用KV卸载\\n- disable KV offload (env: LLAMA_ARG_NO_KV_OFFLOAD)',\n ),\n ),\n 'no-repack': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 禁用重量重新打包功能\\n- disable weight repacking (env: LLAMA_ARG_NO_REPACK)',\n ),\n ),\n 'cache-type-k': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([\n v.picklist([\n 'f32',\n 'f16',\n 'bf16',\n 'q8_0',\n 'q4_0',\n 'q4_1',\n 'iq4_nl',\n 'q5_0',\n 'q5_1',\n ]),\n ]),\n ),\n ),\n }),\n ),\n v.description(\n '- KV缓存数据类型用于K 允许的值: f32, f16, bf16, q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1 (默认: f16)\\n- KV cache data type for K allowed values: f32, f16, bf16, q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1 (default: f16) (env: LLAMA_ARG_CACHE_TYPE_K)',\n ),\n ),\n 'cache-type-v': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([\n v.picklist([\n 'f32',\n 'f16',\n 'bf16',\n 'q8_0',\n 'q4_0',\n 'q4_1',\n 'iq4_nl',\n 'q5_0',\n 'q5_1',\n ]),\n ]),\n ),\n ),\n }),\n ),\n v.description(\n '- KV缓存数据类型用于V,允许的值:f32, f16, bf16, q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1(默认:f16)\\n- KV cache data type for V allowed values: f32, f16, bf16, q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1 (default: f16) (env: LLAMA_ARG_CACHE_TYPE_V)',\n ),\n ),\n 'defrag-thold': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- KV缓存碎片化阈值(默认:0.1,<0-禁用)\\n- KV cache defragmentation threshold (DEPRECATED) (env: LLAMA_ARG_DEFRAG_THOLD)',\n ),\n ),\n parallel: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 并行解码序列的数量(默认:1)\\n- number of parallel sequences to decode (default: 1) (env: LLAMA_ARG_N_PARALLEL)',\n ),\n ),\n mlock: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 强制系统将模型保留在RAM中而不是交换或压缩\\n- force system to keep model in RAM rather than swapping or compressing (env: LLAMA_ARG_MLOCK)',\n ),\n ),\n 'no-mmap': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 不要内存映射模型(加载速度较慢,但可能减少页面丢失,如果未使用mlock)\\n- do not memory-map model (slower load but may reduce pageouts if not using mlock) (env: LLAMA_ARG_NO_MMAP)',\n ),\n ),\n numa: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([\n v.pipe(\n v.picklist(['distribute', 'isolate', 'numactl']),\n v.metadata({\n enumOptions: [\n {\n label: 'distribute',\n value: 'distribute',\n description: '将执行均匀分布在所有节点上',\n },\n {\n label: 'isolate',\n value: 'isolate',\n description: '仅在执行开始的节点的CPU上生成线程',\n },\n {\n label: 'numactl',\n value: 'numactl',\n description: '使用numactl提供的CPU映射',\n },\n ],\n }),\n ),\n ]),\n ),\n ),\n }),\n ),\n v.description(\n '- 尝试在某些NUMA系统上进行优化 - distribute:将执行均匀分布在所有节点上 - isolate:仅在执行开始的节点的CPU上生成线程 - numactl:使用numactl提供的CPU映射 如果之前未运行过此操作,请在使用此功能前删除系统页面缓存 详见 https://github.com/ggml-org/llama.cpp/issues/1437\\n- attempt optimizations that help on some NUMA systems - distribute: spread execution evenly over all nodes - isolate: only spawn threads on CPUs on the node that execution started on - numactl: use the CPU map provided by numactl if run without this previously, it is recommended to drop the system page cache before using this see https://github.com/ggml-org/llama.cpp/issues/1437 (env: LLAMA_ARG_NUMA)',\n ),\n ),\n device: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([v.pipe(STR_SCHEMA, v.description('<dev1,dev2,..>'))]),\n ),\n ),\n }),\n ),\n v.description(\n \"- 逗号分隔的设备列表,用于卸载(none = 不卸载)使用 --list-devices 查看可用设备列表\\n- comma-separated list of devices to use for offloading (none = don't offload) use --list-devices to see a list of available devices (env: LLAMA_ARG_DEVICE)\",\n ),\n ),\n 'override-tensor': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([\n v.pipe(\n STR_SCHEMA,\n v.description('<tensor name pattern>=<buffer type>,...'),\n ),\n ]),\n ),\n ),\n }),\n ),\n v.description(\n '- 将所有专家组合(Mixture of Experts, MoE)的权重数据存储在 CPU 中。\\n- override tensor buffer type',\n ),\n ),\n 'cpu-moe': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 将前 N 层的“专家混合”(Expert Mixing, MoE)权重数据保留在 CPU 中。\\n- keep all Mixture of Experts (MoE) weights in the CPU (env: LLAMA_ARG_CPU_MOE)',\n ),\n ),\n 'n-cpu-moe': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 覆盖张量缓冲区类型\\n- keep the Mixture of Experts (MoE) weights of the first N layers in the CPU (env: LLAMA_ARG_N_CPU_MOE)',\n ),\n ),\n 'gpu-layers': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 存储在VRAM中的图层数量\\n- max. number of layers to store in VRAM (default: -1) (env: LLAMA_ARG_N_GPU_LAYERS)',\n ),\n ),\n 'split-mode': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([\n v.pipe(\n v.picklist(['none', 'layer', 'row']),\n v.metadata({\n enumOptions: [\n {\n label: 'none',\n value: 'none',\n description: '仅使用一个GPU',\n },\n {\n label: 'layer',\n value: 'layer',\n description: '分割层和KV跨GPU',\n },\n { label: 'row', value: 'row', description: '分割行跨GPU' },\n ],\n }),\n ),\n ]),\n ),\n ),\n }),\n ),\n v.description(\n '- 如何将模型分布在多个GPU上,可选:- none: 仅使用一个GPU - layer (默认): 分割层和KV跨GPU - row: 分割行跨GPU\\n- how to split the model across multiple GPUs, one of: - none: use one GPU only - layer (default): split layers and KV across GPUs - row: split rows across GPUs (env: LLAMA_ARG_SPLIT_MODE)',\n ),\n ),\n 'tensor-split': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([v.pipe(STR_SCHEMA, v.description('N0,N1,N2,...'))]),\n ),\n ),\n }),\n ),\n v.description(\n '- 将模型分片到每个GPU的分数,逗号分隔的比例列表,例如3,1\\n- fraction of the model to offload to each GPU, comma-separated list of proportions, e.g. 3,1 (env: LLAMA_ARG_TENSOR_SPLIT)',\n ),\n ),\n 'main-gpu': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('INDEX'))])),\n ),\n }),\n ),\n v.description(\n '- 用于模型(split-mode = none)或中间结果和KV(split-mode = row)的GPU(默认:0)\\n- the GPU to use for the model (with split-mode = none), or for intermediate results and KV (with split-mode = row) (default: 0) (env: LLAMA_ARG_MAIN_GPU)',\n ),\n ),\n 'check-tensors': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 检查模型张量数据中的无效值(默认:false)\\n- check model tensor data for invalid values (default: false)',\n ),\n ),\n 'override-kv': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([v.pipe(STR_SCHEMA, v.description('KEY=TYPE:VALUE'))]),\n ),\n ),\n }),\n ),\n v.description(\n '- 用于通过键覆盖模型元数据的高级选项。可以多次指定。类型:int、float、bool、str。示例:--override-kv tokenizer.ggml.add_bos_token=bool:false\\n- advanced option to override model metadata by key. may be specified multiple times. types: int, float, bool, str. example: --override-kv tokenizer.ggml.add_bos_token=bool:false',\n ),\n ),\n 'no-op-offload': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 禁用将主机张量操作卸载到设备(默认:false)\\n- disable offloading host tensor operations to device (default: false)',\n ),\n ),\n lora: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('FNAME'))])),\n ),\n }),\n ),\n v.description(\n '- LoRA适配器路径(可以重复使用多个适配器)\\n- path to LoRA adapter (can be repeated to use multiple adapters)',\n ),\n ),\n 'lora-scaled': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([\n v.pipe(STR_SCHEMA, v.description('FNAME')),\n v.pipe(v.number(), v.description('SCALE')),\n ]),\n ),\n ),\n }),\n ),\n v.description(\n '- LoRA适配器路径,带用户定义的缩放(可重复使用多个适配器)\\n- path to LoRA adapter with user defined scaling (can be repeated to use multiple adapters)',\n ),\n ),\n 'control-vector': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('FNAME'))])),\n ),\n }),\n ),\n v.description(\n '- 添加控制向量 请注意:此参数可以重复以添加多个控制向量\\n- add a control vector note: this argument can be repeated to add multiple control vectors',\n ),\n ),\n 'control-vector-scaled': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([\n v.pipe(STR_SCHEMA, v.description('FNAME')),\n v.pipe(v.number(), v.description('SCALE')),\n ]),\n ),\n ),\n }),\n ),\n v.description(\n '- 添加一个带用户定义缩放 SCALE 的控制向量 注意: 此参数可以重复以添加多个缩放的控制向量\\n- add a control vector with user defined scaling SCALE note: this argument can be repeated to add multiple scaled control vectors',\n ),\n ),\n 'control-vector-layer-range': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([\n v.pipe(STR_SCHEMA, v.description('START')),\n v.pipe(STR_SCHEMA, v.description('END')),\n ]),\n ),\n ),\n }),\n ),\n v.description(\n '- 应用控制向量的图层范围,起始和结束值(包含)\\n- layer range to apply the control vector(s) to, start and end inclusive',\n ),\n ),\n model: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('FNAME'))])),\n ),\n }),\n ),\n v.description(\n '- 模型路径 (默认: `models/$filename` 与 `--hf-file` 或 `--model-url` 的文件名,否则 models/7B/ggml-model-f16.gguf)\\n- model path (default: `models/$filename` with filename from `--hf-file` or `--model-url` if set, otherwise models/7B/ggml-model-f16.gguf) (env: LLAMA_ARG_MODEL)',\n ),\n ),\n 'model-url': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('MODEL_URL'))])),\n ),\n }),\n ),\n v.description(\n '- Docker Hub 模型仓库:该仓库是可选的,默认值为 `ai/`;`quant` 参数也是可选的,默认值为 `:latest`。例如:`gemma3`(默认值:未使用)。\\n- model download url (default: unused) (env: LLAMA_ARG_MODEL_URL)',\n ),\n ),\n 'docker-repo': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.picklist(['<repo>/]<model>[:quant'])])),\n ),\n }),\n ),\n v.description(\n '- 模型下载地址(默认:未使用)\\n- Docker Hub model repository. repo is optional, default to ai/. quant is optional, default to :latest. example: gemma3 (default: unused) (env: LLAMA_ARG_DOCKER_REPO)',\n ),\n ),\n 'hf-repo': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([\n v.pipe(STR_SCHEMA, v.description('<user>/<model>[:quant]')),\n ]),\n ),\n ),\n }),\n ),\n v.description(\n \"- Hugging Face 模型仓库; quant 是可选的,不区分大小写,默认为 Q4_K_M,如果不存在 Q4_K_M 则回退到仓库中的第一个文件。如果可用还会自动下载 mmproj。要禁用,添加 --no-mmproj 示例:unsloth/phi-4-GGUF:q4_k_m (默认:未使用)\\n- Hugging Face model repository; quant is optional, case-insensitive, default to Q4_K_M, or falls back to the first file in the repo if Q4_K_M doesn't exist. mmproj is also downloaded automatically if available. to disable, add --no-mmproj example: unsloth/phi-4-GGUF:q4_k_m (default: unused) (env: LLAMA_ARG_HF_REPO)\",\n ),\n ),\n 'hf-repo-draft': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([\n v.pipe(STR_SCHEMA, v.description('<user>/<model>[:quant]')),\n ]),\n ),\n ),\n }),\n ),\n v.description(\n '- 与--hf-repo相同,但用于草稿模型(默认:未使用)\\n- Same as --hf-repo, but for the draft model (default: unused) (env: LLAMA_ARG_HFD_REPO)',\n ),\n ),\n 'hf-file': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('FILE'))])),\n ),\n }),\n ),\n v.description(\n '- Hugging Face模型文件。如果指定了,将覆盖--hf-repo中的量化(默认:未使用)\\n- Hugging Face model file. If specified, it will override the quant in --hf-repo (default: unused) (env: LLAMA_ARG_HF_FILE)',\n ),\n ),\n 'hf-repo-v': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([\n v.pipe(STR_SCHEMA, v.description('<user>/<model>[:quant]')),\n ]),\n ),\n ),\n }),\n ),\n v.description(\n '- Hugging Face vocoder模型仓库(默认:未使用)\\n- Hugging Face model repository for the vocoder model (default: unused) (env: LLAMA_ARG_HF_REPO_V)',\n ),\n ),\n 'hf-file-v': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('FILE'))])),\n ),\n }),\n ),\n v.description(\n '- Hugging Face模型文件用于声码器模型(默认:未使用)\\n- Hugging Face model file for the vocoder model (default: unused) (env: LLAMA_ARG_HF_FILE_V)',\n ),\n ),\n 'hf-token': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('TOKEN'))])),\n ),\n }),\n ),\n v.description(\n '- Hugging Face访问令牌(默认:来自HF_TOKEN环境变量的值)\\n- Hugging Face access token (default: value from HF_TOKEN environment variable) (env: HF_TOKEN)',\n ),\n ),\n 'log-disable': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description('- 日志禁用\\n- Log disable'),\n ),\n 'log-file': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('FNAME'))])),\n ),\n }),\n ),\n v.description('- 日志记录到文件\\n- Log to file'),\n ),\n 'log-colors': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(v.optional(v.tuple([v.picklist(['on', 'off', 'auto'])]))),\n }),\n ),\n v.description(\n \"- 启用彩色日志记录\\n- Set colored logging ('on', 'off', or 'auto', default: 'auto') 'auto' enables colors when output is to a terminal (env: LLAMA_LOG_COLORS)\",\n ),\n ),\n verbose: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 设置 verbosity 级别为无穷大(即记录所有消息,用于调试)\\n- Set verbosity level to infinity (i.e. log all messages, useful for debugging)',\n ),\n ),\n offline: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 离线模式:强制使用缓存,阻止网络访问\\n- Offline mode: forces use of cache, prevents network access (env: LLAMA_OFFLINE)',\n ),\n ),\n verbosity: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 设置日志的详细程度阈值。消息的详细程度越高,将被忽略。\\n- Set the verbosity threshold. Messages with a higher verbosity will be ignored. (env: LLAMA_LOG_VERBOSITY)',\n ),\n ),\n 'log-prefix': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 启用日志消息中的前缀\\n- Enable prefix in log messages (env: LLAMA_LOG_PREFIX)',\n ),\n ),\n 'log-timestamps': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 启用日志消息中的时间戳\\n- Enable timestamps in log messages (env: LLAMA_LOG_TIMESTAMPS)',\n ),\n ),\n 'cache-type-k-draft': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('TYPE'))])),\n ),\n }),\n ),\n v.description(\n '- KV缓存中用于草稿模型的K的数据类型,允许的值包括:f32、f16、bf16、q8_0、q4_0、q4_1、iq4_nl、q5_0、q5_1(默认值:f16)\\n- KV cache data type for K for the draft model allowed values: f32, f16, bf16, q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1 (default: f16) (env: LLAMA_ARG_CACHE_TYPE_K_DRAFT)',\n ),\n ),\n 'cache-type-v-draft': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('TYPE'))])),\n ),\n }),\n ),\n v.description(\n '- KV缓存中用于草稿模型的V的数据类型,允许的值包括:f32、f16、bf16、q8_0、q4_0、q4_1、iq4_nl、q5_0、q5_1(默认值:f16)\\n- KV cache data type for V for the draft model allowed values: f32, f16, bf16, q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1 (default: f16) (env: LLAMA_ARG_CACHE_TYPE_V_DRAFT)',\n ),\n ),\n});\n", "import * as v from 'valibot';\nconst STR_SCHEMA = v.pipe(v.string(), v.trim());\nexport const ExampleSpecificDefine = v.object({\n 'swa-checkpoints': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 每个时间槽内可创建的 SWA 检查点最大数量(默认值:3):[更多信息](https://github.com/ggml-org/llama.cpp/pull/15293)\\n- max number of SWA checkpoints per slot to create (default: 3) [(more info)](https://github.com/ggml-org/llama.cpp/pull/15293) (env: LLAMA_ARG_SWA_CHECKPOINTS)',\n ),\n ),\n 'no-context-shift': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 禁用无限文本生成中的上下文转换(默认:禁用)\\n- disables context shift on infinite text generation (default: enabled) (env: LLAMA_ARG_NO_CONTEXT_SHIFT)',\n ),\n ),\n 'context-shift': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 该功能允许在无限文本生成过程中实现上下文切换(默认设置为禁用状态)。\\n- enables context shift on infinite text generation (default: disabled) (env: LLAMA_ARG_CONTEXT_SHIFT)',\n ),\n ),\n 'reverse-prompt': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('PROMPT'))])),\n ),\n }),\n ),\n v.description(\n '- 在 PROMPT 状态下停止程序的执行,然后以交互模式恢复程序的控制权。\\n- halt generation at PROMPT, return control in interactive mode',\n ),\n ),\n special: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 特殊标记输出启用(默认:false)\\n- special tokens output enabled (default: false)',\n ),\n ),\n 'no-warmup': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- skip warming up the model with an empty run\\n- skip warming up the model with an empty run',\n ),\n ),\n 'spm-infill': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 使用后缀/前缀/中间模式进行填充(代替前缀/后缀/中间)\\n- use Suffix/Prefix/Middle pattern for infill (instead of Prefix/Suffix/Middle) as some models prefer this. (default: disabled)',\n ),\n ),\n pooling: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([v.picklist(['none', 'mean', 'cls', 'last', 'rank'])]),\n ),\n ),\n }),\n ),\n v.description(\n '- 嵌入的池化类型,如果未指定则使用模型默认值\\n- pooling type for embeddings, use model default if unspecified (env: LLAMA_ARG_POOLING)',\n ),\n ),\n 'cont-batching': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 启用连续批处理(又名动态批处理)(默认:启用)\\n- enable continuous batching (a.k.a dynamic batching) (default: enabled) (env: LLAMA_ARG_CONT_BATCHING)',\n ),\n ),\n 'no-cont-batching': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- disable continuous batching\\n- disable continuous batching (env: LLAMA_ARG_NO_CONT_BATCHING)',\n ),\n ),\n mmproj: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('FILE'))])),\n ),\n }),\n ),\n v.description(\n '- 多模态投影文件路径。参见tools/mtmd/README.md 说明:如果使用-hf参数,可以省略此参数\\n- path to a multimodal projector file. see tools/mtmd/README.md note: if -hf is used, this argument can be omitted (env: LLAMA_ARG_MMPROJ)',\n ),\n ),\n 'mmproj-url': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('URL'))])),\n ),\n }),\n ),\n v.description(\n '- 多模态投影文件的URL。参见tools/mtmd/README.md\\n- URL to a multimodal projector file. see tools/mtmd/README.md (env: LLAMA_ARG_MMPROJ_URL)',\n ),\n ),\n 'no-mmproj': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 显式禁用多模态投影器,适用于使用 -hf 时\\n- explicitly disable multimodal projector, useful when using -hf (env: LLAMA_ARG_NO_MMPROJ)',\n ),\n ),\n 'no-mmproj-offload': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 不要将多模态投影器卸载到GPU\\n- do not offload multimodal projector to GPU (env: LLAMA_ARG_NO_MMPROJ_OFFLOAD)',\n ),\n ),\n 'override-tensor-draft': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([\n v.pipe(\n STR_SCHEMA,\n v.description('<tensor name pattern>=<buffer type>,...'),\n ),\n ]),\n ),\n ),\n }),\n ),\n v.description(\n '- 为草图模型覆盖张量缓冲区的类型\\n- override tensor buffer type for draft model',\n ),\n ),\n 'cpu-moe-draft': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 将所有专家组合(Mixture of Experts, MoE)的权重都存储在 CPU 中,以便用于模型的训练过程。\\n- keep all Mixture of Experts (MoE) weights in the CPU for the draft model (env: LLAMA_ARG_CPU_MOE_DRAFT)',\n ),\n ),\n 'n-cpu-moe-draft': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 将前 N 层的专家组合(Expert Combination, MoE)权重存储在 CPU 中,以用于初步模型的训练。\\n- keep the Mixture of Experts (MoE) weights of the first N layers in the CPU for the draft model (env: LLAMA_ARG_N_CPU_MOE_DRAFT)',\n ),\n ),\n alias: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('STRING'))])),\n ),\n }),\n ),\n v.description(\n '- 设置模型名称的别名(用于REST API)\\n- set alias for model name (to be used by REST API) (env: LLAMA_ARG_ALIAS)',\n ),\n ),\n host: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('HOST'))])),\n ),\n }),\n ),\n v.description(\n '- 监听的IP地址,或以.sock结尾的UNIX套接字路径(默认:127.0.0.1)\\n- ip address to listen, or bind to an UNIX socket if the address ends with .sock (default: 127.0.0.1) (env: LLAMA_ARG_HOST)',\n ),\n ),\n port: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('PORT'))])),\n ),\n }),\n ),\n v.description(\n '- 端口监听 (默认: 8080)\\n- port to listen (default: 8080) (env: LLAMA_ARG_PORT)',\n ),\n ),\n path: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('PATH'))])),\n ),\n }),\n ),\n v.description(\n '- 路径以供静态文件服务(默认:)\\n- path to serve static files from (default: ) (env: LLAMA_ARG_STATIC_PATH)',\n ),\n ),\n 'api-prefix': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('PREFIX'))])),\n ),\n }),\n ),\n v.description(\n '- 服务器提供服务的路径前缀(不包括末尾的斜杠,默认:)。\\n- prefix path the server serves from, without the trailing slash (default: ) (env: LLAMA_ARG_API_PREFIX)',\n ),\n ),\n 'no-webui': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 禁用Web UI(默认:启用)\\n- Disable the Web UI (default: enabled) (env: LLAMA_ARG_NO_WEBUI)',\n ),\n ),\n embedding: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 限制仅支持嵌入用例; 仅与专用嵌入模型一起使用 (默认: 禁用)\\n- restrict to only support embedding use case; use only with dedicated embedding models (default: disabled) (env: LLAMA_ARG_EMBEDDINGS)',\n ),\n ),\n reranking: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 启用服务器上的重排序端点(默认:禁用)\\n- enable reranking endpoint on server (default: disabled) (env: LLAMA_ARG_RERANKING)',\n ),\n ),\n 'api-key': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('KEY'))])),\n ),\n }),\n ),\n v.description(\n '- API key to use for authentication (default: none)\\n- API key to use for authentication (default: none) (env: LLAMA_API_KEY)',\n ),\n ),\n 'api-key-file': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('FNAME'))])),\n ),\n }),\n ),\n v.description(\n '- 包含API密钥的文件路径(默认:无)\\n- path to file containing API keys (default: none)',\n ),\n ),\n 'ssl-key-file': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('FNAME'))])),\n ),\n }),\n ),\n v.description(\n '- PEM编码SSL私钥文件的路径\\n- path to file a PEM-encoded SSL private key (env: LLAMA_ARG_SSL_KEY_FILE)',\n ),\n ),\n 'ssl-cert-file': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('FNAME'))])),\n ),\n }),\n ),\n v.description(\n '- PEM编码SSL证书文件路径\\n- path to file a PEM-encoded SSL certificate (env: LLAMA_ARG_SSL_CERT_FILE)',\n ),\n ),\n 'chat-template-kwargs': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('STRING'))])),\n ),\n }),\n ),\n v.description(\n '- 为 JSON 模板解析器设置额外的参数\\n- sets additional params for the json template parser (env: LLAMA_CHAT_TEMPLATE_KWARGS)',\n ),\n ),\n timeout: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 服务器读/写超时时间(秒),默认:600\\n- server read/write timeout in seconds (default: 600) (env: LLAMA_ARG_TIMEOUT)',\n ),\n ),\n 'threads-http': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 用于处理HTTP请求的线程数(默认:-1)\\n- number of threads used to process HTTP requests (default: -1) (env: LLAMA_ARG_THREADS_HTTP)',\n ),\n ),\n 'cache-reuse': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 最小块大小以尝试通过KV移动从缓存中重用 (默认: 0) [(card)](https://ggml.ai/f0.png)\\n- min chunk size to attempt reusing from the cache via KV shifting (default: 0) [(card)](https://ggml.ai/f0.png) (env: LLAMA_ARG_CACHE_REUSE)',\n ),\n ),\n metrics: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 启用 prometheus 兼容的 metrics 端点 (默认: 禁用)\\n- enable prometheus compatible metrics endpoint (default: disabled) (env: LLAMA_ARG_ENDPOINT_METRICS)',\n ),\n ),\n props: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 启用通过POST /props更改全局属性(默认:禁用)\\n- enable changing global properties via POST /props (default: disabled) (env: LLAMA_ARG_ENDPOINT_PROPS)',\n ),\n ),\n slots: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 启用插槽监控端点(默认:禁用)\\n- enable slots monitoring endpoint (default: enabled) (env: LLAMA_ARG_ENDPOINT_SLOTS)',\n ),\n ),\n 'no-slots': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 禁用插槽监控端点\\n- disables slots monitoring endpoint (env: LLAMA_ARG_NO_ENDPOINT_SLOTS)',\n ),\n ),\n 'slot-save-path': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('PATH'))])),\n ),\n }),\n ),\n v.description(\n '- 保存slot kv缓存的路径(默认:禁用)\\n- path to save slot kv cache (default: disabled)',\n ),\n ),\n jinja: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 使用jinja模板进行聊天(默认:禁用)\\n- use jinja template for chat (default: disabled) (env: LLAMA_ARG_JINJA)',\n ),\n ),\n 'reasoning-format': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(v.optional(v.tuple([v.picklist(['deepseek', 'none'])]))),\n }),\n ),\n v.description(\n \"- 控制是否允许并/或从响应中提取思维标签,以及以何种格式返回;可选值包括: \\\\n- none:将思维内容原样保留在 `message.content` 中 \\\\n- deepseek:将思维内容放入 `message.reasoning_content`(在流式模式下行为与 none 相同) \\\\n(默认值:deepseek)\\n- controls whether thought tags are allowed and/or extracted from the response, and in which format they're returned; one of: - none: leaves thoughts unparsed in `message.content` - deepseek: puts thoughts in `message.reasoning_content` (except in streaming mode, which behaves as `none`) (default: auto) (env: LLAMA_ARG_THINK)\",\n ),\n ),\n 'reasoning-budget': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 控制允许的思考量;目前只能选择以下选项之一:-1 表示无限制的思考预算,或 0 表示禁用思考(默认值:-1)\\n- controls the amount of thinking allowed; currently only one of: -1 for unrestricted thinking budget, or 0 to disable thinking (default: -1) (env: LLAMA_ARG_THINK_BUDGET)',\n ),\n ),\n 'chat-template': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([v.pipe(STR_SCHEMA, v.description('JINJA_TEMPLATE'))]),\n ),\n ),\n }),\n ),\n v.description(\n \"- 设置自定义的Jinja聊天模板(默认:从模型元数据中获取模板)如果指定了后缀/前缀,模板将被禁用 仅接受常用模板(除非在该标志之前设置了--jinja):内置模板列表:bailing, chatglm3, chatglm4, chatml, command-r, deepseek, deepseek2, deepseek3, exaone3, falcon3, gemma, gigachat, glmedge, granite, llama2, llama2-sys, llama2-sys-bos, llama2-sys-strip, llama3, llama4, megrez, minicpm, mistral-v1, mistral-v3, mistral-v3-tekken, mistral-v7, mistral-v7-0, mistral-v7-tekken, monarch, openchat, orion, phi3, phi4, rwkv-world, smolvlm, vicuna, vicuna-orca, yandex, zephyr\\n- set custom jinja chat template (default: template taken from model's metadata) if suffix/prefix are specified, template will be disabled only commonly used templates are accepted (unless --jinja is set before this flag): list of built-in templates: bailing, chatglm3, chatglm4, chatml, command-r, deepseek, deepseek2, deepseek3, exaone3, exaone4, falcon3, gemma, gigachat, glmedge, gpt-oss, granite, grok-2, hunyuan-dense, hunyuan-moe, kimi-k2, llama2, llama2-sys, llama2-sys-bos, llama2-sys-strip, llama3, llama4, megrez, minicpm, mistral-v1, mistral-v3, mistral-v3-tekken, mistral-v7, mistral-v7-tekken, monarch, openchat, orion, phi3, phi4, rwkv-world, seed_oss, smolvlm, vicuna, vicuna-orca, yandex, zephyr (env: LLAMA_ARG_CHAT_TEMPLATE)\",\n ),\n ),\n 'chat-template-file': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([v.pipe(STR_SCHEMA, v.description('JINJA_TEMPLATE_FILE'))]),\n ),\n ),\n }),\n ),\n v.description(\n \"- 设置自定义的Jinja聊天模板文件(默认:从模型元数据中获取模板)如果指定了后缀/前缀,模板将被禁用 仅接受常用模板(除非在该标志之前设置了--jinja):内置模板列表:bailing, chatglm3, chatglm4, chatml, command-r, deepseek, deepseek2, deepseek3, exaone3, falcon3, gemma, gigachat, glmedge, granite, llama2, llama2-sys, llama2-sys-bos, llama2-sys-strip, llama3, llama4, megrez, minicpm, mistral-v1, mistral-v3, mistral-v3-tekken, mistral-v7, mistral-v7-0, mistral-v7-tekken, monarch, openchat, orion, phi3, phi4, rwkv-world, smolvlm, vicuna, vicuna-orca, yandex, zephyr\\n- set custom jinja chat template file (default: template taken from model's metadata) if suffix/prefix are specified, template will be disabled only commonly used templates are accepted (unless --jinja is set before this flag): list of built-in templates: bailing, chatglm3, chatglm4, chatml, command-r, deepseek, deepseek2, deepseek3, exaone3, exaone4, falcon3, gemma, gigachat, glmedge, gpt-oss, granite, grok-2, hunyuan-dense, hunyuan-moe, kimi-k2, llama2, llama2-sys, llama2-sys-bos, llama2-sys-strip, llama3, llama4, megrez, minicpm, mistral-v1, mistral-v3, mistral-v3-tekken, mistral-v7, mistral-v7-tekken, monarch, openchat, orion, phi3, phi4, rwkv-world, seed_oss, smolvlm, vicuna, vicuna-orca, yandex, zephyr (env: LLAMA_ARG_CHAT_TEMPLATE_FILE)\",\n ),\n ),\n 'no-prefill-assistant': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n \"- 是否在最后一条消息是助手消息时预填充助手的响应(默认:预填充启用)当设置此标志时,如果最后一条消息是助手消息,则将其视为完整消息且不预填充\\n- whether to prefill the assistant's response if the last message is an assistant message (default: prefill enabled) when this flag is set, if the last message is an assistant message then it will be treated as a full message and not prefilled (env: LLAMA_ARG_NO_PREFILL_ASSISTANT)\",\n ),\n ),\n 'slot-prompt-similarity': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([v.pipe(STR_SCHEMA, v.description('SIMILARITY'))]),\n ),\n ),\n }),\n ),\n v.description(\n '- 提示必须与槽的提示匹配多少才能使用该槽(默认:0.50,0.0 = 禁用)\\n- how much the prompt of a request must match the prompt of a slot in order to use that slot (default: 0.10, 0.0 = disabled)',\n ),\n ),\n 'lora-init-without-apply': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 加载LoRA适配器而不应用它们(稍后通过POST /lora-adapters应用)(默认:禁用)\\n- load LoRA adapters without applying them (apply later via POST /lora-adapters) (default: disabled)',\n ),\n ),\n 'threads-draft': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 在生成过程中使用的线程数量(默认值:与 --threads 的值相同)\\n- number of threads to use during generation (default: same as --threads)',\n ),\n ),\n 'threads-batch-draft': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 在批量处理和即时处理过程中使用的线程数量(默认值:与 --threads-draft 的值相同)\\n- number of threads to use during batch and prompt processing (default: same as --threads-draft)',\n ),\n ),\n 'draft-max': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 用于推测解码的草稿令牌数量(默认:16)\\n- number of tokens to draft for speculative decoding (default: 16) (env: LLAMA_ARG_DRAFT_MAX)',\n ),\n ),\n 'draft-min': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 最小的草稿标记数,用于推测解码(默认:0)\\n- minimum number of draft tokens to use for speculative decoding (default: 0) (env: LLAMA_ARG_DRAFT_MIN)',\n ),\n ),\n 'draft-p-min': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('P'))])),\n ),\n }),\n ),\n v.description(\n '- 最小推测解码概率(贪心)(默认:0.8)\\n- minimum speculative decoding probability (greedy) (default: 0.8) (env: LLAMA_ARG_DRAFT_P_MIN)',\n ),\n ),\n 'ctx-size-draft': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 提示上下文的大小用于草稿模型(默认:0,0 = 从模型加载)\\n- size of the prompt context for the draft model (default: 0, 0 = loaded from model) (env: LLAMA_ARG_CTX_SIZE_DRAFT)',\n ),\n ),\n 'device-draft': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([v.pipe(STR_SCHEMA, v.description('<dev1,dev2,..>'))]),\n ),\n ),\n }),\n ),\n v.description(\n \"- 逗号分隔的设备列表,用于卸载草稿模型(none = 不卸载)使用--list-devices查看可用设备列表\\n- comma-separated list of devices to use for offloading the draft model (none = don't offload) use --list-devices to see a list of available devices\",\n ),\n ),\n 'gpu-layers-draft': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 存储在VRAM中的图层数量用于草稿模型\\n- number of layers to store in VRAM for the draft model (env: LLAMA_ARG_N_GPU_LAYERS_DRAFT)',\n ),\n ),\n 'model-draft': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('FNAME'))])),\n ),\n }),\n ),\n v.description(\n '- 用于推测解码的草稿模型(默认:未使用)\\n- draft model for speculative decoding (default: unused) (env: LLAMA_ARG_MODEL_DRAFT)',\n ),\n ),\n 'spec-replace': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([\n v.pipe(STR_SCHEMA, v.description('TARGET')),\n v.pipe(STR_SCHEMA, v.description('DRAFT')),\n ]),\n ),\n ),\n }),\n ),\n v.description(\n '- 如果草稿模型(Draft Model)与主模型(Main Model)不兼容,那么需要将目标字符串(Target String)转换为草稿格式(Draft Format)。\\n- translate the string in TARGET into DRAFT if the draft model and main model are not compatible',\n ),\n ),\n 'model-vocoder': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('FNAME'))])),\n ),\n }),\n ),\n v.description(\n '- 语音合成模型用于音频生成(默认:未使用)\\n- vocoder model for audio generation (default: unused)',\n ),\n ),\n 'tts-use-guide-tokens': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 使用引导标记以提高TTS单词回忆\\n- Use guide tokens to improve TTS word recall',\n ),\n ),\n 'embd-bge-small-en-default': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 使用默认的bge-small-en-v1.5模型(注意:可以从互联网下载权重)\\n- use default bge-small-en-v1.5 model (note: can download weights from the internet)',\n ),\n ),\n 'embd-e5-small-en-default': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 使用默认的e5-small-v2模型(注意:可以从互联网下载权重)\\n- use default e5-small-v2 model (note: can download weights from the internet)',\n ),\n ),\n 'embd-gte-small-default': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 使用默认的gte-small模型(注意:可以从互联网下载权重)\\n- use default gte-small model (note: can download weights from the internet)',\n ),\n ),\n 'fim-qwen-1.5b-default': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 使用默认的Qwen 2.5 Coder 1.5B\\n- use default Qwen 2.5 Coder 1.5B (note: can download weights from the internet)',\n ),\n ),\n 'fim-qwen-3b-default': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 使用默认的Qwen 2.5 Coder 3B(注意:可以从互联网下载权重)\\n- use default Qwen 2.5 Coder 3B (note: can download weights from the internet)',\n ),\n ),\n 'fim-qwen-7b-default': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 使用默认的Qwen 2.5 Coder 7B(注意:可以从互联网下载权重)\\n- use default Qwen 2.5 Coder 7B (note: can download weights from the internet)',\n ),\n ),\n 'fim-qwen-7b-spec': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 使用Qwen 2.5 Coder 7B + 0.5B draft进行推测解码(注意:可以从互联网下载权重)\\n- use Qwen 2.5 Coder 7B + 0.5B draft for speculative decoding (note: can download weights from the internet)',\n ),\n ),\n 'fim-qwen-14b-spec': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 使用Qwen 2.5 Coder 14B + 0.5B draft进行推测解码(注意:可以从互联网下载权重)\\n- use Qwen 2.5 Coder 14B + 0.5B draft for speculative decoding (note: can download weights from the internet)',\n ),\n ),\n 'fim-qwen-30b-default': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 使用默认的 Qwen 3 Coder 30B A3B Instruct;请注意:可以从互联网上下载相应的权重数据。\\n- use default Qwen 3 Coder 30B A3B Instruct (note: can download weights from the internet)',\n ),\n ),\n});\n", "import * as v from 'valibot';\nconst STR_SCHEMA = v.pipe(v.string(), v.trim());\nexport const SamplingDefine = v.object({\n samplers: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('SAMPLERS'))])),\n ),\n }),\n ),\n v.description(\n \"- samplers that will be used for generation in the order, separated by ';' (default: penalties;dry;top_n_sigma;top_k;typ_p;top_p;min_p;xtc;temperature)\\n- samplers that will be used for generation in the order, separated by ';' (default: penalties;dry;top_n_sigma;top_k;typ_p;top_p;min_p;xtc;temperature)\",\n ),\n ),\n seed: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('SEED'))])),\n ),\n }),\n ),\n v.description(\n '- RNG种子(默认:-1,使用随机种子)\\n- RNG seed (default: -1, use random seed for -1)',\n ),\n ),\n 'sampling-seq': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('SEQUENCE'))])),\n ),\n }),\n ),\n v.description(\n '- 简化的采样序列,用于采样器(默认:edskypmxt)\\n- simplified sequence for samplers that will be used (default: edskypmxt)',\n ),\n ),\n 'ignore-eos': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n }),\n ),\n v.description(\n '- 忽略流结束标记并继续生成(隐含--logit-bias EOS-inf)\\n- ignore end of stream token and continue generating (implies --logit-bias EOS-inf)',\n ),\n ),\n temp: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description('- temperature (default: 0.8)\\n- temperature (default: 0.8)'),\n ),\n 'top-k': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- top-k 采样 (默认: 40, 0 = 禁用)\\n- top-k sampling (default: 40, 0 = disabled)',\n ),\n ),\n 'top-p': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- top-p 采样(默认:0.9,1.0 = 禁用)\\n- top-p sampling (default: 0.9, 1.0 = disabled)',\n ),\n ),\n 'min-p': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- min-p 采样 (默认: 0.1, 0.0 = 禁用)\\n- min-p sampling (default: 0.1, 0.0 = disabled)',\n ),\n ),\n 'top-nsigma': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- Top-N-Sigma抽样方法(默认值:-1.0;当两个参数都为-1.0时,该方法被禁用)\\n- top-n-sigma sampling (default: -1.0, -1.0 = disabled)',\n ),\n ),\n 'xtc-probability': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- xtc probability (默认: 0.0, 0.0 = 禁用)\\n- xtc probability (default: 0.0, 0.0 = disabled)',\n ),\n ),\n 'xtc-threshold': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- xtc threshold (默认: 0.1, 1.0 = 禁用)\\n- xtc threshold (default: 0.1, 1.0 = disabled)',\n ),\n ),\n typical: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 局部典型抽样,参数 p(默认:1.0,1.0 = 禁用)\\n- locally typical sampling, parameter p (default: 1.0, 1.0 = disabled)',\n ),\n ),\n 'repeat-last-n': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 用于惩罚的最后n个token(默认:64,0 = 禁用,-1 = 上下文大小)\\n- last n tokens to consider for penalize (default: 64, 0 = disabled, -1 = ctx_size)',\n ),\n ),\n 'repeat-penalty': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 惩罚重复的token序列(默认:1.0,1.0 = 禁用)\\n- penalize repeat sequence of tokens (default: 1.0, 1.0 = disabled)',\n ),\n ),\n 'presence-penalty': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 重复 alpha 存在惩罚(默认:0.0,0.0 = 禁用)\\n- repeat alpha presence penalty (default: 0.0, 0.0 = disabled)',\n ),\n ),\n 'frequency-penalty': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 重复 alpha 频率惩罚(默认:0.0,0.0 = 禁用)\\n- repeat alpha frequency penalty (default: 0.0, 0.0 = disabled)',\n ),\n ),\n 'dry-multiplier': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 设置 DRY 采样乘数(默认:0.0,0.0 = 禁用)\\n- set DRY sampling multiplier (default: 0.0, 0.0 = disabled)',\n ),\n ),\n 'dry-base': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 设置 DRY 采样基础值 (默认: 1.75)\\n- set DRY sampling base value (default: 1.75)',\n ),\n ),\n 'dry-allowed-length': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 设置DRY采样的允许长度(默认:2)\\n- set allowed length for DRY sampling (default: 2)',\n ),\n ),\n 'dry-penalty-last-n': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 设置最后n个token的DRY惩罚(默认:-1,0 = 禁用,-1 = 上下文大小)\\n- set DRY penalty for the last n tokens (default: -1, 0 = disable, -1 = context size)',\n ),\n ),\n 'dry-sequence-breaker': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('STRING'))])),\n ),\n }),\n ),\n v.description(\n \"- 添加序列破环器用于DRY抽样,清除默认的破环器('\\\\n', ':', '\\\"', '*');使用 \\\"none\\\" 不使用任何序列破环器\\n- add sequence breaker for DRY sampling, clearing out default breakers ('\\\\n', ':', '\\\"', '*') in the process; use \\\"none\\\" to not use any sequence breakers\",\n ),\n ),\n 'dynatemp-range': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 动态温度范围 (默认: 0.0, 0.0 = 禁用)\\n- dynamic temperature range (default: 0.0, 0.0 = disabled)',\n ),\n ),\n 'dynatemp-exp': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 动态温度指数(默认:1.0)\\n- dynamic temperature exponent (default: 1.0)',\n ),\n ),\n mirostat: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- 使用Mirostat抽样。如果使用了Top K、Nucleus和Locally Typical抽样器,则会被忽略。(默认:0,0=禁用,1=Mirostat,2=Mirostat 2.0)\\n- use Mirostat sampling. Top K, Nucleus and Locally Typical samplers are ignored if used. (default: 0, 0 = disabled, 1 = Mirostat, 2 = Mirostat 2.0)',\n ),\n ),\n 'mirostat-lr': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- Mirostat学习率,参数eta(默认:0.1)\\n- Mirostat learning rate, parameter eta (default: 0.1)',\n ),\n ),\n 'mirostat-ent': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(v.number(), v.description('N'))])),\n ),\n }),\n ),\n v.description(\n '- Mirostat目标熵,参数tau(默认:5.0)\\n- Mirostat target entropy, parameter tau (default: 5.0)',\n ),\n ),\n 'logit-bias': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(\n v.tuple([v.pipe(STR_SCHEMA, v.description('TOKEN_ID(+/-)BIAS'))]),\n ),\n ),\n }),\n ),\n v.description(\n \"- 修改标记出现在完成中的可能性,例如:--logit-bias 15043+1 增加标记 ' Hello' 的可能性,或 --logit 15043-1 减少标记 ' Hello' 的可能性\\n- modifies the likelihood of token appearing in the completion, i.e. `--logit-bias 15043+1` to increase likelihood of token ' Hello', or `--logit-bias 15043-1` to decrease likelihood of token ' Hello'\",\n ),\n ),\n grammar: v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('GRAMMAR'))])),\n ),\n }),\n ),\n v.description(\n \"- BNF类似语法约束生成(参见grammars目录中的示例)(默认:'')\\n- BNF-like grammar to constrain generations (see samples in grammars/ dir) (default: '')\",\n ),\n ),\n 'grammar-file': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('FNAME'))])),\n ),\n }),\n ),\n v.description('- 从文件读取语法\\n- file to read grammar from'),\n ),\n 'json-schema': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('SCHEMA'))])),\n ),\n }),\n ),\n v.description(\n '- JSON schema 用于约束生成(https://json-schema.org/),例如 `{}` 表示任何 JSON 对象。对于包含外部 $refs 的 schema,使用 --grammar + example/json_schema_to_grammar.py 代替\\n- JSON schema to constrain generations (https://json-schema.org/), e.g. `{}` for any JSON object For schemas w/ external $refs, use --grammar + example/json_schema_to_grammar.py instead',\n ),\n ),\n 'json-schema-file': v.pipe(\n v.optional(\n v.object({\n enable: v.optional(v.boolean(), false),\n value: v.pipe(\n v.optional(v.tuple([v.pipe(STR_SCHEMA, v.description('FILE'))])),\n ),\n }),\n ),\n v.description(\n '- 包含用于约束生成的JSON架构的文件(https://json-schema.org/),例如{}表示任何JSON对象 对于具有外部$refs的架构,使用--grammar + example/json_schema_to_grammar.py代替\\n- File containing a JSON schema to constrain generations (https://json-schema.org/), e.g. `{}` for any JSON object For schemas w/ external $refs, use --grammar + example/json_schema_to_grammar.py instead',\n ),\n ),\n});\n", "import * as v from 'valibot';\nexport const LlamaSwapDefine = v.object({\n healthCheckTimeout: v.optional(v.number(), 120),\n logLevel: v.optional(v.picklist(['debug', 'info', 'warn', 'error'])),\n startPort: v.optional(v.number()),\n groups: v.optional(\n v.record(\n v.string(),\n v.object({\n swap: v.pipe(\n v.optional(v.boolean()),\n v.description(\n `- true : 仅允许一个模型同时运行\\n- false : 所有模型均可同时运行,无需切换`,\n ),\n ),\n exclusive: v.pipe(\n v.optional(v.boolean()),\n v.description(\n `- true:当此组运行模型时,会导致所有其他组卸载其模型\\n- false:不会影响其他组`,\n ),\n ),\n members: v.array(v.string()),\n persistent: v.optional(v.boolean()),\n }),\n ),\n ),\n});\n", "const SysMap: Record<string, string> = {\n win32: 'windows',\n linux: 'linux',\n};\nconst ArchMap: Record<string, string> = {\n x64: 'amd64',\n arm64: 'arm64',\n};\nconst ZipMap: Record<string, string> = {\n win32: 'zip',\n linux: 'tar.gz',\n};\nexport function llamaSwapFileNameByVersion(version: string) {\n return `llama-swap_${version.slice(1)}_${SysMap[process.platform]}_${ArchMap[process.arch]}.${ZipMap[process.platform]}`;\n}\nconst LlamaSysMap = { win32: 'win', linux: 'ubuntu' };\n\nconst LlamaPlatform = (LlamaSysMap as any)[process.platform];\n\nexport function llamaFileNameByVersion(version: string, device: string) {\n if (process.platform === 'linux' && device === 'cpu') {\n return `llama-${version}-bin-${LlamaPlatform}-x64`;\n }\n return `llama-${version}-bin-${LlamaPlatform}-${device}-x64`;\n}\n", "import path from 'node:path';\n\nexport function parseName(name: string) {\n const parts = name.replace(path.sep, '/').split('/');\n const fn = () => {\n switch (parts.length) {\n case 3: {\n let endpoint = parts[0];\n if (!endpoint.includes('://')) {\n endpoint = `https://${endpoint}`;\n }\n if (!endpoint.endsWith('/')) {\n endpoint = `${endpoint}/`;\n }\n return {\n endpoint: endpoint,\n namespace: parts[1],\n repo: parts[2],\n };\n }\n case 2:\n return {\n namespace: parts[0],\n repo: parts[1],\n };\n }\n throw new Error(`parse url failed: ${name}`);\n };\n const result = fn();\n\n const list = result.repo.split(':');\n return {\n ...result,\n repo: list[0],\n tag: list[1],\n };\n}\n\nexport async function getModelManifest(\n name: string,\n options: {\n endpoint: string;\n token?: string;\n },\n) {\n const result = parseName(name);\n const endpointList = [result.endpoint, options.endpoint].filter(Boolean);\n let lastError;\n // 因为hf-mirror似乎有问题,所以加入两个镜像验证,一个是url带的,一个是传入\n for (const endpoint of endpointList) {\n const manifestUrl = `${endpoint}v2/${result.namespace}/${result.repo}/manifests/${result.tag || 'latest'}`;\n const headers = {\n 'User-Agent': 'llama-cpp',\n 'software-bbs': 'bbs.shenghuabi.site',\n } as any;\n if (options?.token) {\n headers['Authorization'] = `Bearer ` + options.token;\n }\n try {\n const result = await fetch(manifestUrl, {\n headers,\n }).then(async (response) => {\n if (response.ok) {\n return response.json();\n }\n throw new Error(\n `${response.status}:${response.statusText ?? (await response.text())}`,\n );\n });\n return result as { layers: any[]; ggufFile: any };\n } catch (error) {\n lastError = error;\n }\n }\n throw lastError;\n}\n", "import { getModelManifest, parseName } from './get-model-manifest';\nimport MS from 'magic-string';\nexport async function getGgufFile(\n name: string,\n options: {\n endpoint: string;\n token?: string;\n fileName?: string;\n },\n) {\n const resultUrl = parseName(name);\n const endpoint = resultUrl.endpoint ?? `https://${options.endpoint}/`;\n const hff = `${resultUrl.namespace}/${resultUrl.repo}`;\n const result = await getModelManifest(name, {\n ...options,\n endpoint: `https://${options.endpoint}/`,\n });\n const rfilename = result.ggufFile.rfilename;\n const result2 = getGgufSplitPartsInfo(rfilename);\n\n if (options?.fileName) {\n const fileList = [`${endpoint}${hff}/resolve/main/${options.fileName}`];\n return {\n fileList: fileList,\n fileName: `${hff}-${options.fileName}`.replace(/\\//g, '-'),\n };\n }\n const fileList = result2.map(\n (item) => `${endpoint}${hff}/resolve/main/${item}`,\n );\n return {\n fileList: fileList,\n fileName: `${hff}-${result2[0]}`.replace(/\\//g, '-'),\n };\n}\n// export function isUrl(text: string, throwOnInvalidUrl: boolean = true) {\n// if (\n// text.toLowerCase().startsWith('http://') ||\n// text.toLowerCase().startsWith('https://')\n// ) {\n// try {\n// new URL(text);\n// return true;\n// } catch {\n// if (throwOnInvalidUrl) throw new Error(`Invalid URL: ${text}`);\n\n// return false;\n// }\n// }\n\n// return false;\n// }\n\nconst splitGgufPartRegex = /-(?<part>\\d{5})-of-(?<parts>\\d{5})\\.gguf$/d;\nexport function getGgufSplitPartsInfo(ggufPath: string) {\n const checkPath = ggufPath;\n\n const splitPartMatch = checkPath.match(splitGgufPartRegex);\n if (splitPartMatch != null) {\n const part = +splitPartMatch.groups!.part;\n const parts = +splitPartMatch.groups!.parts;\n const list = [];\n for (let i = part; i <= parts; i++) {\n const ms = new MS(checkPath);\n const partIndex = splitPartMatch.indices!.groups!['part'];\n ms.update(partIndex[0], partIndex[1], `${i}`);\n list.push(ms.toString());\n }\n return list;\n } else {\n return [checkPath];\n }\n}\n", "import * as fs from 'fs';\nimport path from 'path';\nimport { MainifestType } from './manifest.type';\nimport { homedir } from 'os';\nimport normalizePath from 'normalize-path';\nfunction getFilePath(dir: string, digest?: string) {\n return digest ? path.join(dir, digest.replace(/:/, '-')) : '';\n}\nasync function readDirectory(\n dir: string,\n blobsDir: string,\n prefix: string,\n): Promise<Record<string, any>> {\n const result: Record<string, any> = {};\n\n // 读取目录中的所有文件和子目录\n const files = await fs.promises.readdir(dir);\n\n for (const dirName of files) {\n const dirPath = path.join(dir, dirName);\n try {\n const stats = await fs.promises.stat(dirPath);\n if (stats.isDirectory()) {\n const fileList = await fs.promises.readdir(dirPath);\n for (const fileName of fileList) {\n const content = await fs.promises.readFile(\n path.join(dirPath, fileName),\n 'utf8',\n );\n const data = JSON.parse(content) as MainifestType;\n const layersObj = data.layers.reduce(\n (obj, item) => {\n obj[item.mediaType.replace(/.+\\.([^\\.]+)$/, '$1')] = getFilePath(\n blobsDir,\n item.digest,\n );\n return obj;\n },\n {} as Record<string, string>,\n );\n result[`${prefix}${dirName}:${fileName}`] = {\n config: getFilePath(blobsDir, data.config.digest),\n ...layersObj,\n };\n }\n }\n } catch (error) {}\n // result[file];\n }\n\n return result;\n}\nexport async function getOllamaModel(rootDir?: string) {\n if (!rootDir) {\n const envDir = process.env['OLLAMA_MODELS'];\n if (envDir) {\n rootDir = envDir;\n } else {\n rootDir = path.join(homedir(), '.ollama/models');\n }\n }\n\n const OFFICAL_LIB = normalizePath('registry.ollama.ai/library');\n const manifestsDir = path.join(rootDir, 'manifests');\n const dirExist = fs.existsSync(manifestsDir);\n if (!dirExist) {\n return [];\n }\n const blobsDir = path.join(rootDir, 'blobs');\n const list = await readDir2(manifestsDir, 2);\n let metadata = {};\n for (const item of list) {\n const relName = path.relative(manifestsDir, item);\n const prefixName = normalizePath(relName);\n const result = await readDirectory(\n item,\n blobsDir,\n prefixName === OFFICAL_LIB ? '' : `${prefixName}/`,\n );\n metadata = { ...metadata, ...result };\n }\n return Object.entries(metadata).map(([key, value]) => ({\n name: key,\n value: (value as any).model as string,\n }));\n}\n\nasync function readDir2(dir: string, level: number): Promise<string[]> {\n if (level === 0) {\n return [dir];\n }\n const list = await fs.promises.readdir(dir);\n return Promise.all(\n list.map((item) => readDir2(path.join(dir, item), level - 1)),\n ).then((list) => list.flat());\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["path", "v", "v", "v", "v", "STR_SCHEMA", "v", "STR_SCHEMA", "v", "fs", "parse", "result", "fileList", "path", "metadata", "list", "SysMap", "LlamaPlatform", "path", "config", "parse"]
7
7
  }