add RQ tokenizer

This commit is contained in:
Daniel D Orlando 2023-04-06 08:55:25 -07:00
parent 48e33fe1e9
commit 83df28f45d
4 changed files with 34 additions and 14 deletions

View file

@ -3,9 +3,10 @@ import TextareaAutosize from 'react-textarea-autosize';
import { Label } from '~/components/ui/Label.tsx';
import { Checkbox } from '~/components/ui/Checkbox.tsx';
import SelectDropDown from '../../ui/SelectDropDown';
import { axiosPost } from '~/utils/fetchers.js';
import { cn } from '~/utils/';
import debounce from 'lodash/debounce';
import useDebounce from '~/hooks/useDebounce';
import { useUpdateTokenCountMutation } from '~/data-provider';
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';
@ -17,28 +18,26 @@ function Settings(props) {
const setSystemMessage = setOption('systemMessage');
const setJailbreak = setOption('jailbreak');
const setToneStyle = value => setOption('toneStyle')(value.toLowerCase());
const debouncedContext = useDebounce(context, 250);
const updateTokenCountMutation = useUpdateTokenCountMutation();
// useEffect to update token count
useEffect(() => {
if (!context || context.trim() === '') {
useEffect(() => {
if (!debouncedContext || debouncedContext.trim() === '') {
setTokenCount(0);
return;
}
const debouncedPost = debounce(axiosPost, 250);
const handleTextChange = context => {
debouncedPost({
url: '/api/tokenizer',
arg: { text: context },
callback: data => {
updateTokenCountMutation.mutate({ text: context }, {
onSuccess: data => {
setTokenCount(data.count);
}
});
};
handleTextChange(context);
return () => debouncedPost.cancel();
}, [context]);
handleTextChange(debouncedContext);
}, [debouncedContext]);
return (
<>

View file

@ -60,3 +60,7 @@ export const searchConversations = async(q: string, pageNumber: string): Promise
export const getAIEndpoints = () => {
return request.get(endpoints.aiEndpoints());
}
export const updateTokenCount = (text: string) => {
return request.post(endpoints.tokenizer(), {arg: {text}});
}

View file

@ -18,6 +18,7 @@ export enum QueryKeys {
endpoints = "endpoints",
presets = "presets",
searchResults = "searchResults",
tokenCount = "tokenCount",
}
export const useGetUserQuery = (): QueryObserverResult<t.TUser> => {
@ -199,7 +200,6 @@ export const useSearchQuery = (
pageNumber: string,
config?: UseQueryOptions<t.TSearchResults>
): QueryObserverResult<t.TSearchResults> => {
console.log('useSearchFetcher', searchQuery, pageNumber)
return useQuery<t.TSearchResults>([QueryKeys.searchResults, pageNumber, searchQuery], () =>
dataService.searchConversations(searchQuery, pageNumber), {
refetchOnWindowFocus: false,
@ -208,4 +208,17 @@ export const useSearchQuery = (
...config
}
);
}
export const useUpdateTokenCountMutation = (): UseMutationResult<t.TUpdateTokenCountResponse, unknown, string, unknown> => {
const queryClient = useQueryClient();
return useMutation(
(text: string) =>
dataService.updateTokenCount(text),
{
onSuccess: () => {
queryClient.invalidateQueries([QueryKeys.tokenCount]);
},
}
);
}

View file

@ -139,4 +139,8 @@ export type TEndpoints = {
OpenAI: {
availableModels: []
}
};
export type TUpdateTokenCountResponse = {
count: number,
};