mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-17 08:50:15 +01:00
add RQ tokenizer
This commit is contained in:
parent
48e33fe1e9
commit
83df28f45d
4 changed files with 34 additions and 14 deletions
|
|
@ -3,9 +3,10 @@ import TextareaAutosize from 'react-textarea-autosize';
|
||||||
import { Label } from '~/components/ui/Label.tsx';
|
import { Label } from '~/components/ui/Label.tsx';
|
||||||
import { Checkbox } from '~/components/ui/Checkbox.tsx';
|
import { Checkbox } from '~/components/ui/Checkbox.tsx';
|
||||||
import SelectDropDown from '../../ui/SelectDropDown';
|
import SelectDropDown from '../../ui/SelectDropDown';
|
||||||
import { axiosPost } from '~/utils/fetchers.js';
|
|
||||||
import { cn } from '~/utils/';
|
import { cn } from '~/utils/';
|
||||||
import debounce from 'lodash/debounce';
|
import useDebounce from '~/hooks/useDebounce';
|
||||||
|
import { useUpdateTokenCountMutation } from '~/data-provider';
|
||||||
|
|
||||||
const defaultTextProps =
|
const defaultTextProps =
|
||||||
'rounded-md border border-gray-200 focus:border-slate-400 focus:bg-gray-50 bg-transparent text-sm shadow-[0_0_10px_rgba(0,0,0,0.05)] outline-none placeholder:text-gray-400 focus:outline-none focus:ring-gray-400 focus:ring-opacity-20 focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-500 dark:bg-gray-700 focus:dark:bg-gray-600 dark:text-gray-50 dark:shadow-[0_0_15px_rgba(0,0,0,0.10)] dark:focus:border-gray-400 dark:focus:outline-none dark:focus:ring-0 dark:focus:ring-gray-400 dark:focus:ring-offset-0';
|
'rounded-md border border-gray-200 focus:border-slate-400 focus:bg-gray-50 bg-transparent text-sm shadow-[0_0_10px_rgba(0,0,0,0.05)] outline-none placeholder:text-gray-400 focus:outline-none focus:ring-gray-400 focus:ring-opacity-20 focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-500 dark:bg-gray-700 focus:dark:bg-gray-600 dark:text-gray-50 dark:shadow-[0_0_15px_rgba(0,0,0,0.10)] dark:focus:border-gray-400 dark:focus:outline-none dark:focus:ring-0 dark:focus:ring-gray-400 dark:focus:ring-offset-0';
|
||||||
|
|
||||||
|
|
@ -17,28 +18,26 @@ function Settings(props) {
|
||||||
const setSystemMessage = setOption('systemMessage');
|
const setSystemMessage = setOption('systemMessage');
|
||||||
const setJailbreak = setOption('jailbreak');
|
const setJailbreak = setOption('jailbreak');
|
||||||
const setToneStyle = value => setOption('toneStyle')(value.toLowerCase());
|
const setToneStyle = value => setOption('toneStyle')(value.toLowerCase());
|
||||||
|
const debouncedContext = useDebounce(context, 250);
|
||||||
|
const updateTokenCountMutation = useUpdateTokenCountMutation();
|
||||||
|
|
||||||
// useEffect to update token count
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!context || context.trim() === '') {
|
if (!debouncedContext || debouncedContext.trim() === '') {
|
||||||
setTokenCount(0);
|
setTokenCount(0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const debouncedPost = debounce(axiosPost, 250);
|
|
||||||
const handleTextChange = context => {
|
const handleTextChange = context => {
|
||||||
debouncedPost({
|
updateTokenCountMutation.mutate({ text: context }, {
|
||||||
url: '/api/tokenizer',
|
onSuccess: data => {
|
||||||
arg: { text: context },
|
|
||||||
callback: data => {
|
|
||||||
setTokenCount(data.count);
|
setTokenCount(data.count);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
handleTextChange(context);
|
handleTextChange(debouncedContext);
|
||||||
return () => debouncedPost.cancel();
|
}, [debouncedContext]);
|
||||||
}, [context]);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
|
|
||||||
|
|
@ -60,3 +60,7 @@ export const searchConversations = async(q: string, pageNumber: string): Promise
|
||||||
export const getAIEndpoints = () => {
|
export const getAIEndpoints = () => {
|
||||||
return request.get(endpoints.aiEndpoints());
|
return request.get(endpoints.aiEndpoints());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const updateTokenCount = (text: string) => {
|
||||||
|
return request.post(endpoints.tokenizer(), {arg: {text}});
|
||||||
|
}
|
||||||
|
|
@ -18,6 +18,7 @@ export enum QueryKeys {
|
||||||
endpoints = "endpoints",
|
endpoints = "endpoints",
|
||||||
presets = "presets",
|
presets = "presets",
|
||||||
searchResults = "searchResults",
|
searchResults = "searchResults",
|
||||||
|
tokenCount = "tokenCount",
|
||||||
}
|
}
|
||||||
|
|
||||||
export const useGetUserQuery = (): QueryObserverResult<t.TUser> => {
|
export const useGetUserQuery = (): QueryObserverResult<t.TUser> => {
|
||||||
|
|
@ -199,7 +200,6 @@ export const useSearchQuery = (
|
||||||
pageNumber: string,
|
pageNumber: string,
|
||||||
config?: UseQueryOptions<t.TSearchResults>
|
config?: UseQueryOptions<t.TSearchResults>
|
||||||
): QueryObserverResult<t.TSearchResults> => {
|
): QueryObserverResult<t.TSearchResults> => {
|
||||||
console.log('useSearchFetcher', searchQuery, pageNumber)
|
|
||||||
return useQuery<t.TSearchResults>([QueryKeys.searchResults, pageNumber, searchQuery], () =>
|
return useQuery<t.TSearchResults>([QueryKeys.searchResults, pageNumber, searchQuery], () =>
|
||||||
dataService.searchConversations(searchQuery, pageNumber), {
|
dataService.searchConversations(searchQuery, pageNumber), {
|
||||||
refetchOnWindowFocus: false,
|
refetchOnWindowFocus: false,
|
||||||
|
|
@ -209,3 +209,16 @@ export const useSearchQuery = (
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const useUpdateTokenCountMutation = (): UseMutationResult<t.TUpdateTokenCountResponse, unknown, string, unknown> => {
|
||||||
|
const queryClient = useQueryClient();
|
||||||
|
return useMutation(
|
||||||
|
(text: string) =>
|
||||||
|
dataService.updateTokenCount(text),
|
||||||
|
{
|
||||||
|
onSuccess: () => {
|
||||||
|
queryClient.invalidateQueries([QueryKeys.tokenCount]);
|
||||||
|
},
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
@ -140,3 +140,7 @@ export type TEndpoints = {
|
||||||
availableModels: []
|
availableModels: []
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export type TUpdateTokenCountResponse = {
|
||||||
|
count: number,
|
||||||
|
};
|
||||||
Loading…
Add table
Add a link
Reference in a new issue