Skip to content

Commit 20b6e75

Browse files
committed
fix lib
1 parent 005ca4a commit 20b6e75

File tree

4 files changed

+385
-23
lines changed

4 files changed

+385
-23
lines changed

constants.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,4 +58,6 @@ export const MODELS = {
5858
"bing-creative": { kind: "bing-creative" },
5959
"bing-balanced": { kind: "bing-balanced" },
6060
"bing-precise": { kind: "bing-precise" },
61+
wlm: { kind: "wlm" },
62+
wlm13: { kind: "wlm13" },
6163
}

lib.js

Lines changed: 40 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import { escapeShell, concatPath } from "./utils.js"
77
import { useOpenai, useOpenaiChat } from "./apis/openai/api.js"
88
import { useBing } from "./apis/bing/api.js"
99
import { useHuggingface } from "./apis/huggingface/api.js"
10+
import { $ } from "zx"
11+
$.verbose = false
1012
dotenv.config()
1113

1214
// directory of this file
@@ -81,38 +83,57 @@ export async function useLlm(args) {
8183
case "bing-precise":
8284
completion = await useBing({ print, args })
8385
break
86+
case "wlm":
87+
case "wizardlm-7b-uncensored":
88+
if (!args.modelWasSet) {
89+
args.model = "WizardLM-7B-Uncensored/ggml-model-q4_0.gguf"
90+
args.modelContextSize = 4096
91+
args.modelWasSet = true
92+
}
93+
case "wlm13":
94+
case "wizardlm-13b":
95+
if (!args.modelWasSet) {
96+
args.model =
97+
"WizardLM-1.0-Uncensored-Llama2-13b/ggml-model-q4_0.gguf"
98+
args.modelContextSize = 2048
99+
args.modelWasSet = true
100+
}
101+
case "__wizardlm-anymodel__":
102+
const randInt = Math.floor(Math.random() * 1000000)
103+
const promptPath = `/tmp/llm-prompt.tmp.${randInt}`
104+
await fs.promises.writeFile(promptPath, args.prompt)
105+
const basePath = "/Users/snwfdhmp/Dev/workspaces/ai"
106+
completion =
107+
await $`${basePath}/llama.cpp-custom/main -f "${promptPath}" -m ${basePath}/models/${args.model} -n -2 -c ${args.modelContextSize} -ngl 1 2>/dev/null`
108+
completion = completion.stdout
109+
.slice(1 + args.prompt.length)
110+
.trimStart()
111+
print(completion)
112+
await fs.promises.unlink(promptPath)
113+
break
84114
default:
85115
console.log(`model ${args.model} is known but not supported yet`)
86116
process.exit(1)
87117
break
88118
}
89119
} catch (e) {
90-
// if 429 error
91-
if (e.message.includes("429")) {
92-
if (!args.quiet)
93-
console.log(
94-
`getCompletion: too many requests (429), waiting ${args.backoff}ms`
95-
)
96-
await new Promise((resolve) => setTimeout(resolve, args.backoff))
97-
return await getCompletion({ ...args, backoff: args.backoff * 2 })
98-
}
99-
if (e.message.includes("503")) {
100-
if (!args.quiet)
101-
console.log(
102-
`getCompletion: service unavailable (503), waiting ${args.backoff}ms`
103-
)
104-
await new Promise((resolve) => setTimeout(resolve, args.backoff))
105-
return await getCompletion({ ...args, backoff: args.backoff * 2 })
106-
}
107-
if (e.message.includes("502")) {
120+
// handle network errors with backoff
121+
const errorHandlers = [
122+
{ code: 429, message: "too many requests" },
123+
{ code: 503, message: "service unavailable" },
124+
{ code: 502, message: "bad gateway" },
125+
]
126+
for (const errorHandler of errorHandlers) {
127+
if (!e.message.includes(`${errorHandler.code}`)) continue
108128
if (!args.quiet)
109129
console.log(
110-
`getCompletion: bad gateway (502), waiting ${args.backoff}ms`
130+
`getCompletion: ${errorHandler.message} (${errorHandler.code}), waiting ${args.backoff}ms`
111131
)
112132
await new Promise((resolve) => setTimeout(resolve, args.backoff))
113133
return await getCompletion({ ...args, backoff: args.backoff * 2 })
114134
}
115135

136+
// default error handler
116137
console.error(`Error: ${e.message}`)
117138
console.log(e)
118139
return

package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{
22
"type": "module",
33
"name": "llm",
4-
"version": "1.0.3",
5-
"main": "main.js",
4+
"version": "1.0.4",
5+
"main": "lib.js",
66
"license": "CC-BY-4.0",
77
"prettier": {
88
"semi": false
@@ -16,6 +16,7 @@
1616
"dotenv": "^16.1.4",
1717
"node-fetch": "^3.3.1",
1818
"openai": "^4.3.0",
19-
"yargs": "^17.7.2"
19+
"yargs": "^17.7.2",
20+
"zx": "^7.2.3"
2021
}
2122
}

0 commit comments

Comments
 (0)