Commit Graph

1780 Commits

Author SHA1 Message Date
Cohee ef17702f6a Merge branch 'staging' into bg-load-improvements 2023-12-15 17:02:10 +02:00
Cohee 6c16b94f9d
Merge pull request #1540 from valadaptive/refactor-device-check
Refactor mobile device check
2023-12-15 17:01:32 +02:00
LenAnderson 6337e0bbd6 add /times slash command 2023-12-15 12:38:26 +00:00
LenAnderson 0e55648336 add rounding (round, ceil, floor) to /rand 2023-12-15 12:16:46 +00:00
valadaptive 0ee19d2ede Set background client-side 2023-12-15 05:45:21 -05:00
Cohee 332ab81524
Merge pull request #1535 from valadaptive/separate-settings-endpoints
Move settings endpoints into their own module
2023-12-15 01:49:29 +02:00
valadaptive 66953ceba3 Move device type detection to client side
We don't need the server to tell us our user agent--we can get it
ourselves through navigator.userAgent and parse it on the frontend.

I've replaced device-detector-js with Bowser because device-detector-js
is really slow, freezing for up to 500ms to parse a single user agent.
2023-12-14 18:43:59 -05:00
valadaptive 8cfc8ebe66 Remove boolean comparisons to isMobile
We know this function will *always* return a boolean, so we don't need
to compare it to one.
2023-12-14 18:37:54 -05:00
valadaptive fbdfa05f81 Replace usage of getDeviceInfo with isMobile
We were using getDeviceInfo to check whether we were on a desktop or a
mobile device. This can be done more simply with isMobile, which means
we can stop exporting getDeviceInfo.
2023-12-14 18:37:54 -05:00
Cohee bc31f70af3
Merge pull request #1536 from LenAnderson/rand-slash-command
add /rand slash command
2023-12-15 01:25:47 +02:00
Cohee 9075399932 White-space pre => pre-line 2023-12-15 01:22:24 +02:00
Cohee 86b3dcdca3 Fix lint and validation 2023-12-15 01:14:22 +02:00
Cohee f489a18f0b Merge branch 'staging' into qr-crud-slash-commands 2023-12-15 00:42:41 +02:00
LenAnderson aa1dfa8a5f add /rand slash command 2023-12-14 22:26:24 +00:00
valadaptive 769cc0a78f Rename settings API endpoints 2023-12-14 16:47:03 -05:00
Cohee f93e40b1d3
Merge pull request #1533 from kingbased/gemini
Better Google Makersuite/AI adapter + Gemini Pro & Vision Support & tokenizers
2023-12-14 22:42:30 +02:00
Cohee 6406f76c7d Compress too large images for Google captions 2023-12-14 22:28:22 +02:00
Cohee cde9903fcb Fix Bison models 2023-12-14 22:18:34 +02:00
LenAnderson b5b85724c7 add slash command to update existing QR preset 2023-12-14 19:08:27 +00:00
Cohee 2045e414d1 lint: format fix 2023-12-14 20:57:43 +02:00
LenAnderson 0519629b70 fix autocomplete help text 2023-12-14 18:54:42 +00:00
LenAnderson dbf28fce47 cleanup autocomplete help text 2023-12-14 18:52:23 +00:00
LenAnderson 5e3584d5ed add slash command to create QR preset 2023-12-14 18:51:55 +00:00
Cohee bb8b8f9386 Fix sending PNG/WEBP to Google captioning 2023-12-14 20:36:31 +02:00
LenAnderson 90ec6b9159 add slash commands for context menus 2023-12-14 18:25:19 +00:00
LenAnderson 3e44e4240c handle escapes for pipes and curcly brackets 2023-12-14 18:09:33 +00:00
Cohee a6bb754567 Fix API key access 2023-12-14 19:56:43 +02:00
Cohee 6bb894286e Migrate palm source to makersuite 2023-12-14 19:54:31 +02:00
Cohee 68bb616be3 Merge branch 'staging' into cleanup-sampler-order 2023-12-14 18:32:30 +02:00
LenAnderson 5e61ff8d05 fix help string 2023-12-14 16:11:03 +00:00
based 5071b9a369 webstorm moment 2023-12-15 02:01:42 +10:00
LenAnderson 372ef2172e add slash commands to crud QRs 2023-12-14 16:00:38 +00:00
based 60880cfd4d merge 2023-12-15 01:39:12 +10:00
based 698850b514 Merge remote-tracking branch 'fork/staging' into gemini
# Conflicts:
#	server.js
#	src/endpoints/prompt-converters.js
#	src/endpoints/tokenizers.js
2023-12-15 01:35:17 +10:00
based d5bcd96eef message inlining vision support 2023-12-15 01:28:54 +10:00
based 178b07f414 cleaned up a little 2023-12-14 23:18:56 +10:00
based 0b7c1a98cd added google vision caption support 2023-12-14 22:37:53 +10:00
based ca87f29771 added streaming for google models 2023-12-14 21:03:41 +10:00
valadaptive 0f25d51a53 Send Kobold sampler order as an array 2023-12-14 02:03:36 -05:00
based 3e82a7d439 tokenizer changes and fixes. + a toggle 2023-12-14 16:31:08 +10:00
based e26159c00d refactor and rework palm request to work with the 'content' format and added an endpoint for googles tokenizer 2023-12-14 15:49:50 +10:00
based be396991de finish implementing ui changes for google models 2023-12-14 11:53:26 +10:00
based 69e24c9686 change palm naming in UI 2023-12-14 11:14:41 +10:00
valadaptive 22e048b5af Rename generate_altscale endpoint 2023-12-13 18:53:46 -05:00
valadaptive 92bd766bcb Rename chat completions endpoints
OpenAI calls this the "Chat Completions API", in contrast to their
previous "Text Completions API", so that's what I'm naming it; both
because other services besides OpenAI implement it, and to avoid
confusion with the existing /api/openai route used for OpenAI extras.
2023-12-13 18:52:08 -05:00
Cohee 0cd92f13b4 Merge branch 'staging' into separate-kobold-endpoints 2023-12-14 01:33:36 +02:00
Cohee cebd6e9e0f Add API token ids from KoboldCpp 2023-12-14 01:28:18 +02:00
valadaptive 274605a07c Rename Kobold-related endpoints 2023-12-12 16:42:12 -05:00
valadaptive 5b3c96df50 Rename /textgenerationwebui endpoint
I'd like to migrate over to using "textgen" to mean text-generation APIs
in general, so I've renamed the /textgenerationwebui/* endpoints to
/backends/text-completions/*.
2023-12-12 16:40:14 -05:00
Cohee 83f2c1a8ed #1524 Add FPS limiter to streamed rendering 2023-12-12 22:11:23 +02:00
Cohee 9160de7714 Run macros on impersonation prompt 2023-12-12 19:24:32 +02:00
Cohee 9176f46caf Add /preset command 2023-12-12 19:14:17 +02:00
Cohee a9a05b17b9
Merge pull request #1517 from LenAnderson/firstIncludedMessageId
Add macro for first included message in context
2023-12-12 01:24:57 +02:00
Cohee 07fecacce2 Add to macro help 2023-12-12 01:24:21 +02:00
Cohee f1ed60953a
Merge pull request #1516 from LenAnderson/slash-command-for-getTokenCount
Add /tokens slash command to call getTokenCount
2023-12-12 01:19:24 +02:00
Cohee 299749a4e7 Add prerequisites for websearch extension 2023-12-12 01:08:47 +02:00
LenAnderson 69f90a0b30 add /tokens slash command to call getTokenCount 2023-12-11 22:51:07 +00:00
Cohee 1b11ddc26a Add vector storage to WI scanning 2023-12-11 22:47:26 +02:00
Cohee e713021737
Merge pull request #1511 from valadaptive/more-kobold-cleanups
More Kobold cleanups
2023-12-11 20:59:49 +02:00
Cohee 27782b2f83 Fix united version comparison 2023-12-11 20:44:29 +02:00
Cohee 7482a75bbd
Merge pull request #1493 from valadaptive/generate-cleanups
Clean up Generate(), part 1
2023-12-11 20:21:32 +02:00
Cohee d38a4dc6c1 Fix abort group generation 2023-12-11 20:03:31 +02:00
Cohee 0302686a96 Return from Generate if calling circuit breaker 2023-12-11 19:07:33 +02:00
Cohee e96fb0c1b5 Fix group wrapper not resolving to a valid text 2023-12-11 19:00:42 +02:00
Cohee 0fcf8fd491 Typing indicator fixed 2023-12-11 18:23:00 +02:00
Cohee 17105568f4 Reduce hard coded anim. durations 2023-12-11 16:23:21 +02:00
Cohee e7c2975ab0 Fix adv.defs overlap with past chats. Close CFG with Escape 2023-12-11 15:39:58 +02:00
Cohee c6bd3ef255 Fix /sys continue in groups 2023-12-11 15:08:20 +02:00
valadaptive 42d4ffe5e8 Remove Kobold "canUse(...)" functions
Replace them all with a versionCompare helper function which we can call
directly with the minimum version constants.
2023-12-10 20:39:21 -05:00
valadaptive d33cb0d8d1 Clarify getstatus API
Instead of "version" and "koboldVersion", have "koboldUnitedVersion" and
"koboldCppVersion", the latter of which is null if we're not connected
to KoboldCpp.
2023-12-10 20:34:11 -05:00
Cohee 7450112e9b Unbust user continue in group chats 2023-12-11 00:02:49 +02:00
Cohee 05b08f1ce2 Don't await delay promise 2023-12-10 21:51:16 +02:00
Cohee 2e50efc35c Limit waiting for TTS to init to 1 second on chat change 2023-12-10 21:50:52 +02:00
Cohee 420d186823 Add reduced motion toggle 2023-12-10 20:02:25 +02:00
valadaptive 33f969f097 Have Generate() return a promise
Generate(), being async, now returns a promise-within-a-promise.
If called with `let p = await Generate(...)`, it'll wait for generation
to *start*. If you then `await p`, you'll wait for generation to
*finish*. This makes it much easier to tell exactly when generation's
done. generateGroupWrapper has been similarly modified.
2023-12-10 12:30:10 -05:00
Cohee 13e016f3e5
Merge pull request #1508 from LenAnderson/tts-skip-codeblocks-option
add TTS option to skip codeblock narration
2023-12-10 19:28:16 +02:00
valadaptive 03884b29ad Always call resolve in Generate()
This lets us get rid of the janky hack in group-chats to tell when a
message is done generating.
2023-12-10 12:26:30 -05:00
valadaptive f5d2e50f5e Remove isGenerationAborted
Just check the AbortSignal.
2023-12-10 12:24:18 -05:00
Cohee dbd52a7994
Merge pull request #1482 from valadaptive/sse-stream
Refactor server-sent events parsing
2023-12-10 18:32:19 +02:00
LenAnderson bf88829b03 add option to skip codeblock narration 2023-12-10 16:32:10 +00:00
Cohee af89cfa870 Code clean-up 2023-12-10 16:48:25 +02:00
Cohee 5054de247b Merge branch 'staging' into qr-editor-tab-support 2023-12-10 16:36:28 +02:00
Cohee 9acef0fae6 Horde doesn't support API tokenizers 2023-12-10 16:21:06 +02:00
Cohee f54bf99006 Fix token ids not displaying in "API_CURRENT" mode for TextGen 2023-12-10 16:09:00 +02:00
Cohee 6957d9e7cf Fix display names of Best match tokenizers 2023-12-10 16:03:25 +02:00
Cohee 6e5eea5dba Unbreak previously selected API tokenizer in dropdown 2023-12-10 15:56:38 +02:00
Cohee d5140142fb Merge branch 'staging' into tokenizers-cleanup 2023-12-10 15:51:15 +02:00
Cohee 5f1683f43a More input padding and stricter sanitation 2023-12-10 15:07:39 +02:00
valadaptive 0201a0260c Default event type to 'message' if it's empty
Added to the upstream test suite. Matches the spec.
2023-12-10 04:45:10 -05:00
valadaptive 55976e61a3 Fix tokenizer override
I searched for all users of tokenizers.API, but missed that the menu
converts the numerical select values directly to enum values. I've used
the special tokenizer value 98 to represent "the tokenizer API for
whichever backend we're currently using".
2023-12-09 23:57:21 -05:00
valadaptive 0fce475a95 Implement random sort with a shuffle
Sorting with a random comparator doesn't actually shuffle an array.
Depending on the sorting algorithm used, there will be a bias to the
shuffle (see https://bost.ocks.org/mike/shuffle/compare.html).
If you open that link in Firefox, the bias will be especially bad.
Instead of implementing "random" character sort using a random sort
comparator, use the shuffle function instead.
2023-12-09 22:52:38 -05:00
valadaptive 014416546c Add padding once in getTokenCount
This means we don't have to pass the "padding" parameter into every
function so they can add the padding themselves--we can do it in just
one place instead.
2023-12-09 20:53:16 -05:00
valadaptive 2f2cd197cc Clean up tokenizer API code
Store the URLs for each tokenizer's action in one place at the top of
the file, instead of in a bunch of switch-cases. The URLs for the
textgen and Kobold APIs don't change and hence don't need to be
function arguments.
2023-12-09 20:48:41 -05:00
valadaptive 09465fbb97 Inline most get(...)TokenizerParams calls
For everything except textgenerationwebui, these params are now simple
enough that it doesn't make sense for them to be in a separate function.
2023-12-09 20:35:11 -05:00
valadaptive 30502ac949 Split up Kobold and textgenerationwebui endpoints
The endpoint was one big if/else statement that did two entirely
different things depending on the value of main_api. It makes more sense
for those to be two separate endpoints.
2023-12-09 20:26:24 -05:00
valadaptive 7486ab3886 Separate textgen and Kobold tokenization APIs
They function differently and have different logic and API parameters,
so it makes sense to count them as two different APIs. Kobold's API
doesn't return tokens, so it can only be used to count them.

There's still a lot of duplicate code which I will clean up in the
following commits.
2023-12-09 20:24:56 -05:00
valadaptive 18177c147d Separate remote and server tokenization code paths
This lets us remove extraneous API params from paths where they aren't
needed.
2023-12-09 20:08:48 -05:00
valadaptive ddd73a204a Remove "remote" language from tokenizer functions
We'll be making a distinction between tokenizing *on* the server itself,
and tokenizing via the server having the AI service do it. It makes more
sense to use the term "remote" for the latter.
2023-12-09 19:49:22 -05:00
valadaptive 8bad059a62 Rename /tokenize_via_api endpoint
No redirect for this since I don't expect any extensions to be calling this directly.
2023-12-09 19:29:24 -05:00
LenAnderson a3ec8d709d add support for tab and shift-tab in QR editor 2023-12-09 17:56:36 +00:00