Make sydney tone adjustable

This commit is contained in:
Hyunggyu Jang 2023-04-06 11:30:25 +09:00
parent 0a80f836f0
commit 100be3b42f
4 changed files with 17 additions and 77 deletions

View file

@ -7,7 +7,7 @@ export default function AdjustButton({ onClick }) {
return ( return (
<button <button
onClick={clickHandler} onClick={clickHandler}
className="group absolute bottom-11 -right-11 flex h-[100%] w-[50px] items-center justify-center bg-transparent p-1 text-gray-500 md:bottom-0" className="group absolute bottom-11 right-0 flex h-[100%] w-[50px] items-center justify-center bg-transparent p-1 text-gray-500 lg:bottom-0 lg:-right-11"
> >
<div className="m-1 mr-0 rounded-md p-2 pt-[10px] pb-[10px] group-hover:bg-gray-100 group-disabled:hover:bg-transparent dark:group-hover:bg-gray-900 dark:group-hover:text-gray-400 dark:group-disabled:hover:bg-transparent"> <div className="m-1 mr-0 rounded-md p-2 pt-[10px] pb-[10px] group-hover:bg-gray-100 group-disabled:hover:bg-transparent dark:group-hover:bg-gray-900 dark:group-hover:text-gray-400 dark:group-disabled:hover:bg-transparent">
<svg <svg

View file

@ -11,7 +11,7 @@ import SaveAsPresetDialog from '../../Endpoints/SaveAsPresetDialog';
import store from '~/store'; import store from '~/store';
function BingAIOptions() { function BingAIOptions({ show }) {
const [conversation, setConversation] = useRecoilState(store.conversation) || {}; const [conversation, setConversation] = useRecoilState(store.conversation) || {};
const [advancedMode, setAdvancedMode] = useState(false); const [advancedMode, setAdvancedMode] = useState(false);
const [saveAsDialogShow, setSaveAsDialogShow] = useState(false); const [saveAsDialogShow, setSaveAsDialogShow] = useState(false);
@ -19,7 +19,7 @@ function BingAIOptions() {
const { toneStyle, context, systemMessage, jailbreak } = conversation; const { toneStyle, context, systemMessage, jailbreak } = conversation;
if (endpoint !== 'bingAI') return null; if (endpoint !== 'bingAI') return null;
if (conversationId !== 'new') return null; if (conversationId !== 'new' && !show) return null;
const triggerAdvancedMode = () => setAdvancedMode(prev => !prev); const triggerAdvancedMode = () => setAdvancedMode(prev => !prev);
@ -64,7 +64,8 @@ function BingAIOptions() {
showLabel={false} showLabel={false}
className={cn( className={cn(
cardStyle, cardStyle,
'min-w-36 z-50 flex h-[40px] w-36 flex-none items-center justify-center px-4 ring-0 hover:cursor-pointer hover:bg-slate-50 focus:ring-0 focus:ring-offset-0 data-[state=open]:bg-slate-50 dark:bg-gray-700 dark:hover:bg-gray-600 dark:data-[state=open]:bg-gray-600' 'min-w-36 z-50 flex h-[40px] w-36 flex-none items-center justify-center px-4 ring-0 hover:cursor-pointer hover:bg-slate-50 focus:ring-0 focus:ring-offset-0 data-[state=open]:bg-slate-50 dark:bg-gray-700 dark:hover:bg-gray-600 dark:data-[state=open]:bg-gray-600',
show ? 'hidden' : null
)} )}
/> />
@ -107,7 +108,8 @@ function BingAIOptions() {
type="button" type="button"
className={cn( className={cn(
cardStyle, cardStyle,
'min-w-4 z-50 flex h-[40px] flex-none items-center justify-center px-4 hover:bg-slate-50 focus:ring-0 focus:ring-offset-0 dark:hover:bg-gray-600' 'min-w-4 z-50 flex h-[40px] flex-none items-center justify-center px-4 hover:bg-slate-50 focus:ring-0 focus:ring-offset-0 dark:hover:bg-gray-600',
show ? 'hidden' : null
)} )}
onClick={triggerAdvancedMode} onClick={triggerAdvancedMode}
> >

View file

@ -1,63 +0,0 @@
import React, { useState, useEffect, forwardRef } from 'react';
import { Tabs, TabsList, TabsTrigger } from '../ui/Tabs.tsx';
import { useRecoilValue, useRecoilState } from 'recoil';
import { cn } from '../../utils';
import store from '~/store';
function BingStyles(props, ref) {
const [conversation, setConversation] = useRecoilState(store.conversation) || {};
const { endpoint, conversationId, jailbreak, toneStyle } = conversation;
const messages = useRecoilValue(store.messages);
const isBing = endpoint === 'bingAI';
const show = isBing && (!conversationId || messages?.length === 0 || props.show);
const defaultClasses =
'p-2 rounded-md min-w-[75px] font-normal bg-white/[.60] dark:bg-gray-700 text-black text-xs';
const defaultSelected = cn(defaultClasses, 'font-medium data-[state=active]:text-white text-xs text-white');
const selectedClass = val => val + '-tab ' + defaultSelected;
const changeHandler = value => {
setConversation(prevState => ({ ...prevState, toneStyle: value }));
};
return (
<Tabs
value={toneStyle}
className={`bing-styles mb-1 shadow-md ${show ? 'show' : ''}`}
onValueChange={changeHandler}
ref={ref}
>
<TabsList className="bg-white/[.60] dark:bg-gray-700">
<TabsTrigger
value="creative"
className={`${toneStyle === 'creative' ? selectedClass('creative') : defaultClasses}`}
>
{'Creative'}
</TabsTrigger>
<TabsTrigger
value="fast"
className={`${toneStyle === 'fast' ? selectedClass('fast') : defaultClasses}`}
>
{'Fast'}
</TabsTrigger>
<TabsTrigger
value="balanced"
className={`${toneStyle === 'balanced' ? selectedClass('balanced') : defaultClasses}`}
>
{'Balanced'}
</TabsTrigger>
<TabsTrigger
value="precise"
className={`${toneStyle === 'precise' ? selectedClass('precise') : defaultClasses}`}
>
{'Precise'}
</TabsTrigger>
</TabsList>
</Tabs>
);
}
export default forwardRef(BingStyles);

View file

@ -1,4 +1,4 @@
import React, { useEffect, useRef } from 'react'; import React, { useEffect, useRef, useState } from 'react';
import { useRecoilValue, useRecoilState } from 'recoil'; import { useRecoilValue, useRecoilState } from 'recoil';
import SubmitButton from './SubmitButton'; import SubmitButton from './SubmitButton';
import OpenAIOptions from './OpenAIOptions'; import OpenAIOptions from './OpenAIOptions';
@ -6,6 +6,7 @@ import ChatGPTOptions from './ChatGPTOptions';
import BingAIOptions from './BingAIOptions'; import BingAIOptions from './BingAIOptions';
// import BingStyles from './BingStyles'; // import BingStyles from './BingStyles';
import NewConversationMenu from './NewConversationMenu'; import NewConversationMenu from './NewConversationMenu';
import AdjustToneButton from './AdjustToneButton';
import Footer from './Footer'; import Footer from './Footer';
import TextareaAutosize from 'react-textarea-autosize'; import TextareaAutosize from 'react-textarea-autosize';
import { useMessageHandler } from '../../utils/handleSubmit'; import { useMessageHandler } from '../../utils/handleSubmit';
@ -29,7 +30,7 @@ export default function TextChat({ isSearchView = false }) {
const { ask, stopGenerating } = useMessageHandler(); const { ask, stopGenerating } = useMessageHandler();
// const bingStylesRef = useRef(null); // const bingStylesRef = useRef(null);
// const [showBingToneSetting, setShowBingToneSetting] = useState(false); const [showBingToneSetting, setShowBingToneSetting] = useState(false);
const isNotAppendable = latestMessage?.cancelled || latestMessage?.error; const isNotAppendable = latestMessage?.cancelled || latestMessage?.error;
@ -49,7 +50,7 @@ export default function TextChat({ isSearchView = false }) {
// const newHeight = inputRef.current.clientHeight; // const newHeight = inputRef.current.clientHeight;
// if (newHeight >= 24) { // if (newHeight >= 24) {
// // 24 is the default height of the input // // 24 is the default height of the input
// // bingStylesRef.current.style.bottom = 15 + newHeight + 'px'; // bingStylesRef.current.style.bottom = 15 + newHeight + 'px';
// } // }
// }); // });
// resizeObserver.observe(inputRef.current); // resizeObserver.observe(inputRef.current);
@ -119,9 +120,9 @@ export default function TextChat({ isSearchView = false }) {
return ''; return '';
}; };
// const handleBingToneSetting = () => { const handleBingToneSetting = () => {
// setShowBingToneSetting(show => !show); setShowBingToneSetting(show => !show);
// }; };
if (isSearchView) return <></>; if (isSearchView) return <></>;
@ -132,7 +133,7 @@ export default function TextChat({ isSearchView = false }) {
<span className="flex w-full flex-col items-center justify-center gap-0 md:order-none md:m-auto md:gap-2"> <span className="flex w-full flex-col items-center justify-center gap-0 md:order-none md:m-auto md:gap-2">
<OpenAIOptions /> <OpenAIOptions />
<ChatGPTOptions /> <ChatGPTOptions />
<BingAIOptions /> <BingAIOptions show={showBingToneSetting} />
</span> </span>
</div> </div>
<div className="input-panel md:bg-vert-light-gradient dark:md:bg-vert-dark-gradient relative w-full border-t bg-white py-2 dark:border-white/20 dark:bg-gray-800 md:border-t-0 md:border-transparent md:bg-transparent md:dark:border-transparent md:dark:bg-transparent"> <div className="input-panel md:bg-vert-light-gradient dark:md:bg-vert-dark-gradient relative w-full border-t bg-white py-2 dark:border-white/20 dark:bg-gray-800 md:border-t-0 md:border-transparent md:bg-transparent md:dark:border-transparent md:dark:bg-transparent">
@ -168,9 +169,9 @@ export default function TextChat({ isSearchView = false }) {
disabled={disabled || isNotAppendable} disabled={disabled || isNotAppendable}
isSubmitting={isSubmitting} isSubmitting={isSubmitting}
/> />
{/* {messages?.length && conversation?.model === 'sydney' ? ( {latestMessage && conversation?.jailbreak && conversation.endpoint === 'bingAI' ? (
<AdjustToneButton onClick={handleBingToneSetting} /> <AdjustToneButton onClick={handleBingToneSetting} />
) : null} */} ) : null}
</div> </div>
</div> </div>
</form> </form>