Skip to content

Commit 104bc1c

Browse files
AIDevMonsterjustinwangxmanyosoredthing1gukoff
committed
typescript: publish alpha on npm and lots of cleanup, documentation, and more (#913)
* fix typo so padding can be accessed * Small cleanups for settings dialog. * Fix the build. * localdocs * Fixup the rescan. Fix debug output. * Add remove folder implementation. * Remove this signal as unnecessary for now. * Cleanup of the database, better chunking, better matching. * Add new reverse prompt for new localdocs context feature. * Add a new muted text color. * Turn off the debugging messages by default. * Add prompt processing and localdocs to the busy indicator in UI. * Specify a large number of suffixes we will search for now. * Add a collection list to support a UI. * Add a localdocs tab. * Start fleshing out the localdocs ui. * Begin implementing the localdocs ui in earnest. * Clean up the settings dialog for localdocs a bit. * Add more of the UI for selecting collections for chats. * Complete the settings for localdocs. * Adds the collections to serialize and implement references for localdocs. * Store the references separately so they are not sent to datalake. * Add context link to references. * Don't use the full path in reference text. * Various fixes to remove unnecessary warnings. * Add a newline * ignore rider and vscode dirs * create test project and basic model loading tests * make sample print usage and cleaner * Get the backend as well as the client building/working with msvc. * Libraries named differently on msvc. * Bump the version number. * This time remember to bump the version right after a release. * rm redundant json * More precise condition * Nicer handling of missing model directory. Correct exception message. * Log where the model was found * Concise model matching * reduce nesting, better error reporting * convert to f-strings * less magic number * 1. Cleanup the interrupted download 2. with-syntax * Redundant else * Do not ignore explicitly passed 4 threads * Correct return type * Add optional verbosity * Correct indentation of the multiline error message * one funcion to append .bin suffix * hotfix default verbose optioin * export hidden types and fix prompt() type * tiny typo (#739) * Update README.md (#738) * Update README.md fix golang gpt4all import path Signed-off-by: Nandakumar <[email protected]> * Update README.md Signed-off-by: Nandakumar <[email protected]> --------- Signed-off-by: Nandakumar <[email protected]> * fix(training instructions): model repo name (#728) Signed-off-by: Chase McDougall <[email protected]> * C# Bindings - Prompt formatting (#712) * Added support for custom prompt formatting * more docs added * bump version * clean up cc files and revert things * LocalDocs documentation initial (#761) * LocalDocs documentation initial * Improved localdocs documentation (#762) * Improved localdocs documentation * Improved localdocs documentation * Improved localdocs documentation * Improved localdocs documentation * New tokenizer implementation for MPT and GPT-J Improves output quality by making these tokenizers more closely match the behavior of the huggingface `tokenizers` based BPE tokenizers these models were trained with. Featuring: * Fixed unicode handling (via ICU) * Fixed BPE token merge handling * Complete added vocabulary handling * buf_ref.into() can be const now * add tokenizer readme w/ instructions for convert script * Revert "add tokenizer readme w/ instructions for convert script" This reverts commit 9c15d1f83ee2f9387126cf4892cd94f39bdbff5e. * Revert "buf_ref.into() can be const now" This reverts commit 840e011b75fb77f761f288a75b4b2a86358dcb9e. * Revert "New tokenizer implementation for MPT and GPT-J" This reverts commit ee3469ba6c6d5f51a1c5fb9c6ec96eff3f4075e3. * Fix remove model from model download for regular models. * Fixed formatting of localdocs docs (#770) * construct and return the correct reponse when the request is a chat completion * chore: update typings to keep consistent with python api * progress, updating createCompletion to mirror py api * update spec, unfinished backend * prebuild binaries for package distribution using prebuildify/node-gyp-build * Get rid of blocking behavior for regenerate response. * Add a label to the model loading visual indicator. * Use the new MyButton for the regenerate response button. * Add a hover and pressed to the visual indication of MyButton. * Fix wording of this accessible description. * Some color and theme enhancements to make the UI contrast a bit better. * Make the comboboxes align in UI. * chore: update namespace and fix prompt bug * fix linux build * add roadmap * Fix offset of prompt/response icons for smaller text. * Dlopen backend 5 (#779) Major change to the backend that allows for pluggable versions of llama.cpp/ggml. This was squashed merged from dlopen_backend_5 where the history is preserved. * Add a custom busy indicator to further align look and feel across platforms. * Draw the indicator for combobox to ensure it looks the same on all platforms. * Fix warning. * Use the proper text color for sending messages. * Fixup the plus new chat button. * Make all the toolbuttons highlight on hover. * Advanced avxonly autodetection (#744) * Advanced avxonly requirement detection * chore: support llamaversion >= 3 and ggml default * Dlopen better implementation management (Version 2) * Add fixme's and clean up a bit. * Documentation improvements on LocalDocs (#790) * Update gpt4all_chat.md Signed-off-by: Andriy Mulyar <[email protected]> * typo Signed-off-by: Andriy Mulyar <[email protected]> --------- Signed-off-by: Andriy Mulyar <[email protected]> * Adapt code * Makefile changes (WIP to test) * Debug * Adapt makefile * Style * Implemented logging mechanism (#785) * Cleaned up implementation management (#787) * Cleaned up implementation management * Initialize LLModel::m_implementation to nullptr * llmodel.h: Moved dlhandle fwd declare above LLModel class * Fix compile * Fixed double-free in LLModel::Implementation destructor * Allow user to specify custom search path via $GPT4ALL_IMPLEMENTATIONS_PATH (#789) * Drop leftover include * Add ldl in gpt4all.go for dynamic linking (#797) * Logger should also output to stderr * Fix MSVC Build, Update C# Binding Scripts * Update gpt4all_chat.md (#800) Signed-off-by: Andriy Mulyar <[email protected]> * C# Bindings - improved logging (#714) * added optional support for .NET logging * bump version and add missing alpha suffix * avoid creating additional namespace for extensions * prefer NullLogger/NullLoggerFactory over null-conditional ILogger to avoid errors --------- Signed-off-by: mvenditto <[email protected]> * Make localdocs work with server mode. * Better name for database results. * Fix for stale references after we regenerate. * Don't hardcode these. * Fix bug with resetting context with chatgpt model. * Trying to shrink the copy+paste code and do more code sharing between backend model impl. * Remove this as it is no longer useful. * Try and fix build on mac. * Fix mac build again. * Add models/release.json to github repo to allow PRs * Fixed spelling error in models.json to make CI happy Signed-off-by: niansa/tuxifan <[email protected]> * updated bindings code for updated C api * load all model libs * model creation is failing... debugging * load libs correctly * fixed finding model libs * cleanup * cleanup * more cleanup * small typo fix * updated binding.gyp * Fixed model type for GPT-J (#815) Signed-off-by: niansa/tuxifan <[email protected]> * Fixed tons of warnings and clazy findings (#811) * Some tweaks to UI to make window resizing smooth and flow nicely. * Min constraints on about dialog. * Prevent flashing of white on resize. * Actually use the theme dark color for window background. * Add the ability to change the directory via text field not just 'browse' button. * add scripts to build dlls * markdown doc gen * add scripts, nearly done moving breaking changes * merge with main * oops, fixed comment * more meaningful name * leave for testing * Only default mlock on macOS where swap seems to be a problem Repeating the change that once was done in nomic-ai/gpt4all#663 but then was overriden by nomic-ai/gpt4all@9c6c09c Signed-off-by: Peter Gagarinov <[email protected]> * Add a collection immediately and show a placeholder + busy indicator in localdocs settings. * some tweaks to optional types and defaults * mingw script for windows compilation * Update README.md huggingface -> Hugging Face Signed-off-by: Ikko Eltociear Ashimine <[email protected]> * Backend prompt dedup (#822) * Deduplicated prompt() function code * Better error handling when the model fails to load. * We no longer have an avx_only repository and better error handling for minimum hardware requirements. (#833) * Update build_and_run.md (#834) Signed-off-by: AT <[email protected]> * Trying out a new feature to download directly from huggingface. * Try again with the url. * Allow for download of models hosted on third party hosts. * Fix up for newer models on reset context. This fixes the model from totally failing after a reset context. * Update to latest llama.cpp * Remove older models that are not as popular. (#837) * Remove older models that are not as popular. * Update models.json Signed-off-by: Andriy Mulyar <[email protected]> --------- Signed-off-by: Andriy Mulyar <[email protected]> Co-authored-by: Andriy Mulyar <[email protected]> * Update models.json (#838) Signed-off-by: Andriy Mulyar <[email protected]> * Update models.json Signed-off-by: Andriy Mulyar <[email protected]> * feat: finalyl compiled on windows (MSVC) goadman * update README and spec and promisfy createCompletion * update d.ts * Make installers work with mac/windows for big backend change. * Need this so the linux installer packages it as a dependency. * Try and fix mac. * Fix compile on mac. * These need to be installed for them to be packaged and work for both mac and windows. * Fix installers for windows and linux. * Fix symbol resolution on windows. * updated pypi version * Release notes for version 2.4.5 (#853) * Update README.md (#854) Signed-off-by: AT <[email protected]> * Documentation for model sideloading (#851) * Documentation for model sideloading Signed-off-by: Andriy Mulyar <[email protected]> * Update gpt4all_chat.md Signed-off-by: Andriy Mulyar <[email protected]> --------- Signed-off-by: Andriy Mulyar <[email protected]> * Speculative fix for windows llama models with installer. * Revert "Speculative fix for windows llama models with installer." This reverts commit add725d1ebef2391c6c74f86898ae0afda4d3337. * Revert "Fix bug with resetting context with chatgpt model." (#859) This reverts commit e0dcf6a14f89134987fa63cdb33a40305885921a. * Fix llama models on linux and windows. * Bump the version. * New release notes * Set thread counts after loading model (#836) * Update gpt4all_faq.md (#861) Signed-off-by: Andriy Mulyar <[email protected]> * Supports downloading officially supported models not hosted on gpt4all R2 * Replit Model (#713) * porting over replit code model to gpt4all * replaced memory with kv_self struct * continuing debug * welp it built but lot of sus things * working model loading and somewhat working generate.. need to format response? * revert back to semi working version * finally got rid of weird formatting * figured out problem is with python bindings - this is good to go for testing * addressing PR feedback * output refactor * fixed prompt reponse collection * cleanup * addressing PR comments * building replit backend with new ggmlver code * chatllm replit and clean python files * cleanup * updated replit to match new llmodel api * match llmodel api and change size_t to Token * resolve PR comments * replit model commit comment * Synced llama.cpp.cmake with upstream (#887) * Fix for windows. * fix: build script * Revert "Synced llama.cpp.cmake with upstream (#887)" This reverts commit 5c5e10c1f5ac03f9dbab4cc4d8c5bb02d286b46f. * Update README.md (#906) Add PyPI link and add clickable, more specific link to documentation Signed-off-by: Claudius Ellsel <[email protected]> * Update CollectionsDialog.qml (#856) Phrasing for localdocs Signed-off-by: Andriy Mulyar <[email protected]> * sampling: remove incorrect offset for n_vocab (#900) no effect, but avoids a *potential* bug later if we use actualVocabSize - which is for when a model has a larger embedding tensor/# of output logits than actually trained token to allow room for adding extras in finetuning - presently all of our models have had "placeholder" tokens in the vocab so this hasn't broken anything, but if the sizes did differ we want the equivalent of `logits[actualVocabSize:]` (the start point is unchanged), not `logits[-actualVocabSize:]` (this.) * non-llama: explicitly greedy sampling for temp<=0 (#901) copied directly from llama.cpp - without this temp=0.0 will just scale all the logits to infinity and give bad output * work on thread safety and cleaning up, adding object option * chore: cleanup tests and spec * refactor for object based startup * more docs * Circleci builds for Linux, Windows, and macOS for gpt4all-chat. * more docs * Synced llama.cpp.cmake with upstream * add lock file to ignore codespell * Move usage in Python bindings readme to own section (#907) Have own section for short usage example, as it is not specific to local build Signed-off-by: Claudius Ellsel <[email protected]> * Always sync for circleci. * update models json with replit model * Forgot to bump. * Change the default values for generation in GUI * Removed double-static from variables in replit.cpp The anonymous namespace already makes it static. Signed-off-by: niansa/tuxifan <[email protected]> * Generator in Python Bindings - streaming yields tokens at a time (#895) * generator method * cleanup * bump version number for clarity * added replace in decode to avoid unicodedecode exception * revert back to _build_prompt * Do auto detection by default in C++ API Signed-off-by: niansa/tuxifan <[email protected]> * remove comment * add comments for index.h * chore: add new models and edit ignore files and documentation * llama on Metal (#885) Support latest llama with Metal --------- Co-authored-by: Adam Treat <[email protected]> Co-authored-by: niansa/tuxifan <[email protected]> * Revert "llama on Metal (#885)" This reverts commit b59ce1c6e70645d13c687b46c116a75906b1fbc9. * add more readme stuff and debug info * spell * Metal+LLama take two (#929) Support latest llama with Metal --------- Co-authored-by: Adam Treat <[email protected]> Co-authored-by: niansa/tuxifan <[email protected]> * add prebuilts for windows * Add new solution for context links that does not force regular markdown (#938) in responses which is disruptive to code completions in responses. * add prettier * split out non llm related methods into util.js, add listModels method * add prebuild script for creating all platforms bindings at once * check in prebuild linux/so libs and allow distribution of napi prebuilds * apply autoformatter * move constants in config.js, add loadModel and retrieveModel methods * Clean up the context links a bit. * Don't interfere with selection. * Add code blocks and python syntax highlighting. * Spelling error. * Add c++/c highighting support. * Fix some bugs with bash syntax and add some C23 keywords. * Bugfixes for prompt syntax highlighting. * Try and fix a false positive from codespell. * When recalculating context we can't erase the BOS. * Fix Windows MSVC AVX builds - bug introduced in 557c82b5eddb4120340b837a8bdeeeca2a82eac3 - currently getting: `warning C5102: ignoring invalid command-line macro definition '/arch:AVX2'` - solution is to use `_options(...)` not `_definitions(...)` * remove .so unneeded path --------- Signed-off-by: Nandakumar <[email protected]> Signed-off-by: Chase McDougall <[email protected]> Signed-off-by: Andriy Mulyar <[email protected]> Signed-off-by: mvenditto <[email protected]> Signed-off-by: niansa/tuxifan <[email protected]> Signed-off-by: Peter Gagarinov <[email protected]> Signed-off-by: Ikko Eltociear Ashimine <[email protected]> Signed-off-by: AT <[email protected]> Signed-off-by: Claudius Ellsel <[email protected]> Co-authored-by: Justin Wang <[email protected]> Co-authored-by: Adam Treat <[email protected]> Co-authored-by: redthing1 <[email protected]> Co-authored-by: Konstantin Gukov <[email protected]> Co-authored-by: Richard Guo <[email protected]> Co-authored-by: Joseph Mearman <[email protected]> Co-authored-by: Nandakumar <[email protected]> Co-authored-by: Chase McDougall <[email protected]> Co-authored-by: mvenditto <[email protected]> Co-authored-by: Andriy Mulyar <[email protected]> Co-authored-by: Aaron Miller <[email protected]> Co-authored-by: FoivosC <[email protected]> Co-authored-by: limez <[email protected]> Co-authored-by: AT <[email protected]> Co-authored-by: niansa/tuxifan <[email protected]> Co-authored-by: niansa <[email protected]> Co-authored-by: mudler <[email protected]> Co-authored-by: Ettore Di Giacinto <[email protected]> Co-authored-by: Tim Miller <[email protected]> Co-authored-by: Peter Gagarinov <[email protected]> Co-authored-by: Ikko Eltociear Ashimine <[email protected]> Co-authored-by: Claudius Ellsel <[email protected]> Co-authored-by: pingpongching <[email protected]> Co-authored-by: Adam Treat <[email protected]> Co-authored-by: Cosmic Snow <[email protected]>
1 parent fbbc8a0 commit 104bc1c

25 files changed

+4057
-470
lines changed

.codespellrc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
[codespell]
22
ignore-words-list = blong, belong
3-
skip = .git,*.pdf,*.svg
3+
skip = .git,*.pdf,*.svg,*.lock
+1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
node_modules/
22
build/
3+
prebuilds/
+2-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
test/
22
spec/
3-
3+
scripts/
4+
build

gpt4all-bindings/typescript/README.md

+45-3
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,32 @@
22
The original [GPT4All typescript bindings](https://github.com/nomic-ai/gpt4all-ts) are now out of date.
33

44
- created by [jacoobes](https://github.com/jacoobes) and [nomic ai](https://home.nomic.ai) :D, for all to use.
5-
- will maintain this repository when possible, new feature requests will be handled through nomic
65

6+
### Code (alpha)
7+
```js
8+
import { LLModel, createCompletion, DEFAULT_DIRECTORY, DEFAULT_LIBRARIES_DIRECTORY } from '../src/gpt4all.js'
9+
10+
const ll = new LLModel({
11+
model_name: 'ggml-vicuna-7b-1.1-q4_2.bin',
12+
model_path: './',
13+
library_path: DEFAULT_LIBRARIES_DIRECTORY
14+
});
15+
16+
const response = await createCompletion(ll, [
17+
{ role : 'system', content: 'You are meant to be annoying and unhelpful.' },
18+
{ role : 'user', content: 'What is 1 + 1?' }
19+
]);
20+
21+
```
22+
### API
23+
- The nodejs api has made strides to mirror the python api. It is not 100% mirrored, but many pieces of the api resemble its python counterpart.
24+
- [docs](./docs/api.md)
725
### Build Instructions
826

9-
- As of 05/21/2023, Tested on windows (MSVC) only. (somehow got it to work on MSVC 🤯)
27+
- As of 05/21/2023, Tested on windows (MSVC). (somehow got it to work on MSVC 🤯)
1028
- binding.gyp is compile config
29+
- Tested on Ubuntu. Everything seems to work fine
30+
- MingW works as well to build the gpt4all-backend. HOWEVER, this package works only with MSVC built dlls.
1131

1232
### Requirements
1333
- git
@@ -31,6 +51,15 @@ cd gpt4all-bindings/typescript
3151
```sh
3252
git submodule update --init --depth 1 --recursive
3353
```
54+
**AS OF NEW BACKEND** to build the backend,
55+
```sh
56+
yarn build:backend
57+
```
58+
This will build platform-dependent dynamic libraries, and will be located in runtimes/(platform)/native The only current way to use them is to put them in the current working directory of your application. That is, **WHEREVER YOU RUN YOUR NODE APPLICATION**
59+
- llama-xxxx.dll is required.
60+
- According to whatever model you are using, you'll need to select the proper model loader.
61+
- For example, if you running an Mosaic MPT model, you will need to select the mpt-(buildvariant).(dynamiclibrary)
62+
3463
### Test
3564
```sh
3665
yarn test
@@ -48,9 +77,22 @@ yarn test
4877

4978
#### spec/
5079
- Average look and feel of the api
51-
- Should work assuming a model is installed locally in working directory
80+
- Should work assuming a model and libraries are installed locally in working directory
5281

5382
#### index.cc
5483
- The bridge between nodejs and c. Where the bindings are.
84+
#### prompt.cc
85+
- Handling prompting and inference of models in a threadsafe, asynchronous way.
86+
#### docs/
87+
- Autogenerated documentation using the script `yarn docs:build`
88+
89+
### Roadmap
90+
This package is in active development, and breaking changes may happen until the api stabilizes. Here's what's the todo list:
5591

92+
- [x] prompt models via a threadsafe function in order to have proper non blocking behavior in nodejs
93+
- [ ] createTokenStream, an async iterator that streams each token emitted from the model. Planning on following this [example](https://github.com/nodejs/node-addon-examples/tree/main/threadsafe-async-iterator)
94+
- [ ] proper unit testing (integrate with circle ci)
95+
- [ ] publish to npm under alpha tag `gpt4all@alpha`
96+
- [ ] have more people test on other platforms (mac tester needed)
97+
- [x] switch to new pluggable backend
5698

gpt4all-bindings/typescript/binding.gyp

+29-19
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,55 @@
11
{
22
"targets": [
33
{
4-
"target_name": "gpt4allts", # gpt4all-ts will cause compile error
5-
"cflags!": [ "-fno-exceptions" ],
6-
"cflags_cc!": [ "-fno-exceptions" ],
4+
"target_name": "gpt4all", # gpt4all-ts will cause compile error
5+
"cflags_cc!": [ "-fno-exceptions"],
76
"include_dirs": [
87
"<!@(node -p \"require('node-addon-api').include\")",
9-
"../../gpt4all-backend/llama.cpp/", # need to include llama.cpp because the include paths for examples/common.h include llama.h relatively
108
"../../gpt4all-backend",
119
],
12-
"sources": [ # is there a better way to do this
13-
"../../gpt4all-backend/llama.cpp/examples/common.cpp",
14-
"../../gpt4all-backend/llama.cpp/ggml.c",
15-
"../../gpt4all-backend/llama.cpp/llama.cpp",
16-
"../../gpt4all-backend/utils.cpp",
10+
"sources": [
11+
# PREVIOUS VERSION: had to required the sources, but with newest changes do not need to
12+
#"../../gpt4all-backend/llama.cpp/examples/common.cpp",
13+
#"../../gpt4all-backend/llama.cpp/ggml.c",
14+
#"../../gpt4all-backend/llama.cpp/llama.cpp",
15+
# "../../gpt4all-backend/utils.cpp",
1716
"../../gpt4all-backend/llmodel_c.cpp",
18-
"../../gpt4all-backend/gptj.cpp",
19-
"../../gpt4all-backend/llamamodel.cpp",
20-
"../../gpt4all-backend/mpt.cpp",
21-
"stdcapture.cc",
17+
"../../gpt4all-backend/llmodel.cpp",
18+
"prompt.cc",
2219
"index.cc",
2320
],
2421
"conditions": [
2522
['OS=="mac"', {
2623
'defines': [
27-
'NAPI_CPP_EXCEPTIONS'
28-
],
24+
'LIB_FILE_EXT=".dylib"',
25+
'NAPI_CPP_EXCEPTIONS',
26+
]
2927
}],
3028
['OS=="win"', {
3129
'defines': [
30+
'LIB_FILE_EXT=".dll"',
3231
'NAPI_CPP_EXCEPTIONS',
33-
"__AVX2__" # allows SIMD: https://discord.com/channels/1076964370942267462/1092290790388150272/1107564673957630023
3432
],
3533
"msvs_settings": {
3634
"VCCLCompilerTool": {
3735
"AdditionalOptions": [
3836
"/std:c++20",
39-
"/EHsc"
40-
],
41-
},
37+
"/EHsc",
38+
],
39+
},
4240
},
41+
}],
42+
['OS=="linux"', {
43+
'defines': [
44+
'LIB_FILE_EXT=".so"',
45+
'NAPI_CPP_EXCEPTIONS',
46+
],
47+
'cflags_cc!': [
48+
'-fno-rtti',
49+
],
50+
'cflags_cc': [
51+
'-std=c++20'
52+
]
4353
}]
4454
]
4555
}]

0 commit comments

Comments
 (0)