CoolFace
Apppublic

legends810/testingnew

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes
usePromptEnhancer.ts87 linesDownload Raw Back to hooks
1import { useState } from 'react';2import type { ProviderInfo } from '~/types/model';3import { createScopedLogger } from '~/utils/logger';4 5const logger = createScopedLogger('usePromptEnhancement');6 7export function usePromptEnhancer() {8  const [enhancingPrompt, setEnhancingPrompt] = useState(false);9  const [promptEnhanced, setPromptEnhanced] = useState(false);10 11  const resetEnhancer = () => {12    setEnhancingPrompt(false);13    setPromptEnhanced(false);14  };15 16  const enhancePrompt = async (17    input: string,18    setInput: (value: string) => void,19    model: string,20    provider: ProviderInfo,21    apiKeys?: Record<string, string>,22  ) => {23    setEnhancingPrompt(true);24    setPromptEnhanced(false);25 26    const requestBody: any = {27      message: input,28      model,29      provider,30    };31 32    if (apiKeys) {33      requestBody.apiKeys = apiKeys;34    }35 36    const response = await fetch('/api/enhancer', {37      method: 'POST',38      body: JSON.stringify(requestBody),39    });40 41    const reader = response.body?.getReader();42 43    const originalInput = input;44 45    if (reader) {46      const decoder = new TextDecoder();47 48      let _input = '';49      let _error;50 51      try {52        setInput('');53 54        while (true) {55          const { value, done } = await reader.read();56 57          if (done) {58            break;59          }60 61          _input += decoder.decode(value);62 63          logger.trace('Set input', _input);64 65          setInput(_input);66        }67      } catch (error) {68        _error = error;69        setInput(originalInput);70      } finally {71        if (_error) {72          logger.error(_error);73        }74 75        setEnhancingPrompt(false);76        setPromptEnhanced(true);77 78        setTimeout(() => {79          setInput(_input);80        });81      }82    }83  };84 85  return { enhancingPrompt, promptEnhanced, enhancePrompt, resetEnhancer };86}87