diff --git a/api/app/clients/sydney.js b/api/app/clients/sydney.js
index 3466f71c17..beaa6f4029 100644
--- a/api/app/clients/sydney.js
+++ b/api/app/clients/sydney.js
@@ -22,6 +22,10 @@ const askSydney = async ({ text, onProgress, convo }) => {
options = { ...options, jailbreakConversationId: convo.jailbreakConversationId, parentMessageId: convo.parentMessageId };
}
+ if (convo.toneStyle) {
+ options.toneStyle = convo.toneStyle;
+ }
+
console.log('sydney options', options);
const res = await sydneyClient.sendMessage(text, options
diff --git a/api/models/schema/convoSchema.js b/api/models/schema/convoSchema.js
index a654b1425a..79e621ef8e 100644
--- a/api/models/schema/convoSchema.js
+++ b/api/models/schema/convoSchema.js
@@ -32,6 +32,10 @@ const convoSchema = mongoose.Schema(
invocationId: {
type: String
},
+ toneStyle: {
+ type: String,
+ default: null
+ },
chatGptLabel: {
type: String,
default: null
diff --git a/client/src/components/Conversations/Conversation.jsx b/client/src/components/Conversations/Conversation.jsx
index 5d503372fd..c0ae103d33 100644
--- a/client/src/components/Conversations/Conversation.jsx
+++ b/client/src/components/Conversations/Conversation.jsx
@@ -23,7 +23,6 @@ export default function Conversation({
}) {
const [renaming, setRenaming] = useState(false);
const [titleInput, setTitleInput] = useState(title);
- const { modelMap } = useSelector((state) => state.models);
const { stopStream } = useSelector((state) => state.submit);
const inputRef = useRef(null);
const dispatch = useDispatch();
@@ -49,7 +48,8 @@ export default function Conversation({
conversationSignature,
jailbreakConversationId,
clientId,
- invocationId
+ invocationId,
+ toneStyle,
} = bingData;
dispatch(
setConversation({
@@ -59,6 +59,7 @@ export default function Conversation({
conversationSignature,
clientId,
invocationId,
+ toneStyle,
latestMessage: null
})
);
@@ -71,6 +72,7 @@ export default function Conversation({
conversationSignature: null,
clientId: null,
invocationId: null,
+ toneStyle: null,
latestMessage: null
})
);
@@ -85,13 +87,6 @@ export default function Conversation({
dispatch(setCustomModel(null));
}
- // if (modelMap[chatGptLabel.toLowerCase()]) {
- // console.log('custom model', chatGptLabel);
- // dispatch(setCustomModel(chatGptLabel.toLowerCase()));
- // } else {
- // dispatch(setCustomModel(null));
- // }
-
dispatch(setMessages(data));
dispatch(setCustomGpt(convo));
dispatch(setText(''));
diff --git a/client/src/components/Conversations/index.jsx b/client/src/components/Conversations/index.jsx
index eaa59b0097..aaddaaba86 100644
--- a/client/src/components/Conversations/index.jsx
+++ b/client/src/components/Conversations/index.jsx
@@ -14,7 +14,8 @@ export default function Conversations({ conversations, conversationId, moveToTop
conversationSignature: convo.conversationSignature,
parentMessageId: convo.parentMessageId || null,
clientId: convo.clientId,
- invocationId: convo.invocationId
+ invocationId: convo.invocationId,
+ toneStyle: convo.toneStyle,
}
: null;
diff --git a/client/src/components/Main/BingStyles.jsx b/client/src/components/Main/BingStyles.jsx
index bc8e45a1f3..b06021fd3e 100644
--- a/client/src/components/Main/BingStyles.jsx
+++ b/client/src/components/Main/BingStyles.jsx
@@ -1,14 +1,23 @@
-import React, { useState } from 'react';
-// import { Tabs, TabsContent, TabsList, TabsTrigger } from "../ui/Tabs";
+import React, { useState, useEffect } from 'react';
import { Tabs, TabsList, TabsTrigger } from '../ui/Tabs.tsx';
-import { useSelector } from 'react-redux';
-// import RowButton from './RowButton';
+import { useDispatch, useSelector } from 'react-redux';
+import { setConversation } from '~/store/convoSlice';
export default function BingStyles() {
+ const dispatch = useDispatch();
const [value, setValue] = useState('fast');
const { model } = useSelector((state) => state.submit);
+ const { conversationId } = useSelector((state) => state.convo);
+ const { messages } = useSelector((state) => state.messages);
+ const isBing = model === 'bingai' || model === 'sydney';
- const show = model === 'bingai' || model === 'sydney';
+ useEffect(() => {
+ if (isBing && !conversationId) {
+ dispatch(setConversation({ toneStyle: value }));
+ }
+ }, [isBing, conversationId, model, value, dispatch]);
+
+ const show = isBing && (!conversationId || messages?.length === 0);
const defaultClasses = 'p-2 rounded-md font-normal bg-white/[.60] text-black';
const defaultSelected = defaultClasses + 'font-medium data-[state=active]:text-white';
@@ -16,9 +25,9 @@ export default function BingStyles() {
const changeHandler = value => {
setValue(value);
+ dispatch(setConversation({ toneStyle: value }));
};
return (
- //
- {/* */}
{'Creative'}
- //
);
}
diff --git a/client/src/store/convoSlice.js b/client/src/store/convoSlice.js
index e8da18bb3b..d800535296 100644
--- a/client/src/store/convoSlice.js
+++ b/client/src/store/convoSlice.js
@@ -9,6 +9,7 @@ const initialState = {
conversationSignature: null,
clientId: null,
invocationId: null,
+ toneStyle: null,
chatGptLabel: null,
promptPrefix: null,
convosLoading: false,
@@ -58,6 +59,7 @@ const currentSlice = createSlice({
state.conversationSignature = null;
state.clientId = null;
state.invocationId = null;
+ state.toneStyle = null;
state.chatGptLabel = null;
state.promptPrefix = null;
state.convosLoading = false;
diff --git a/client/src/utils/createPayload.js b/client/src/utils/createPayload.js
index fd195e43e1..a1b0ff67bb 100644
--- a/client/src/utils/createPayload.js
+++ b/client/src/utils/createPayload.js
@@ -13,6 +13,10 @@ export default function createPayload({ convo, message }) {
}
const isBing = model === 'bingai' || model === 'sydney';
+ if (isBing && !convo?.conversationId) {
+ payload.toneStyle = convo.toneStyle || 'fast';
+ }
+
if (isBing && convo?.conversationId) {
payload = {
...payload,
@@ -20,7 +24,8 @@ export default function createPayload({ convo, message }) {
conversationId: convo.conversationId,
conversationSignature: convo.conversationSignature,
clientId: convo.clientId,
- invocationId: convo.invocationId
+ invocationId: convo.invocationId,
+ toneStyle: convo.toneStyle,
};
}
@@ -28,4 +33,4 @@ export default function createPayload({ convo, message }) {
server = model === 'bingai' ? server + '/bing' : server;
server = model === 'sydney' ? server + '/sydney' : server;
return { server, payload };
-};
+}
diff --git a/client/src/utils/handleSubmit.js b/client/src/utils/handleSubmit.js
index 897e94d6c4..11a5484474 100644
--- a/client/src/utils/handleSubmit.js
+++ b/client/src/utils/handleSubmit.js
@@ -1,4 +1,3 @@
-import { SSE } from './sse';
import resetConvo from './resetConvo';
import { useSelector, useDispatch } from 'react-redux';
import { setNewConvo } from '~/store/convoSlice';
@@ -14,7 +13,6 @@ const useMessageHandler = () => {
const { initial } = useSelector((state) => state.models);
const { messages } = useSelector((state) => state.messages);
const { model, chatGptLabel, promptPrefix, isSubmitting } = useSelector((state) => state.submit);
- const { text } = useSelector((state) => state.text);
const { latestMessage, error } = convo;
const ask = ({ text, parentMessageId=null, conversationId=null, messageId=null}, { isRegenerate=false }={}) => {
@@ -76,7 +74,7 @@ const useMessageHandler = () => {
if (parentMessage && parentMessage.isCreatedByUser)
ask({ ...parentMessage }, { isRegenerate: true })
else
- console.error('Failed to regenerate the message: parentMessage not found or not created by user.', message);
+ console.error('Failed to regenerate the message: parentMessage not found or not created by user.');
}
const stopGenerating = () => {
@@ -88,78 +86,79 @@ const useMessageHandler = () => {
export { useMessageHandler };
-export default function handleSubmit({
- model,
- text,
- convo,
- messageHandler,
- convoHandler,
- errorHandler,
- chatGptLabel,
- promptPrefix
-}) {
- const endpoint = `/api/ask`;
- let payload = { model, text, chatGptLabel, promptPrefix };
- if (convo.conversationId && convo.parentMessageId) {
- payload = {
- ...payload,
- conversationId: convo.conversationId,
- parentMessageId: convo.parentMessageId
- };
- }
+// deprecated
+// export default function handleSubmit({
+// model,
+// text,
+// convo,
+// messageHandler,
+// convoHandler,
+// errorHandler,
+// chatGptLabel,
+// promptPrefix
+// }) {
+// const endpoint = `/api/ask`;
+// let payload = { model, text, chatGptLabel, promptPrefix };
+// if (convo.conversationId && convo.parentMessageId) {
+// payload = {
+// ...payload,
+// conversationId: convo.conversationId,
+// parentMessageId: convo.parentMessageId
+// };
+// }
- const isBing = model === 'bingai' || model === 'sydney';
- if (isBing && convo.conversationId) {
+// const isBing = model === 'bingai' || model === 'sydney';
+// if (isBing && convo.conversationId) {
- payload = {
- ...payload,
- jailbreakConversationId: convo.jailbreakConversationId,
- conversationId: convo.conversationId,
- conversationSignature: convo.conversationSignature,
- clientId: convo.clientId,
- invocationId: convo.invocationId,
- };
- }
+// payload = {
+// ...payload,
+// jailbreakConversationId: convo.jailbreakConversationId,
+// conversationId: convo.conversationId,
+// conversationSignature: convo.conversationSignature,
+// clientId: convo.clientId,
+// invocationId: convo.invocationId,
+// };
+// }
- let server = endpoint;
- server = model === 'bingai' ? server + '/bing' : server;
- server = model === 'sydney' ? server + '/sydney' : server;
+// let server = endpoint;
+// server = model === 'bingai' ? server + '/bing' : server;
+// server = model === 'sydney' ? server + '/sydney' : server;
- const events = new SSE(server, {
- payload: JSON.stringify(payload),
- headers: { 'Content-Type': 'application/json' }
- });
+// const events = new SSE(server, {
+// payload: JSON.stringify(payload),
+// headers: { 'Content-Type': 'application/json' }
+// });
- events.onopen = function () {
- console.log('connection is opened');
- };
+// events.onopen = function () {
+// console.log('connection is opened');
+// };
- events.onmessage = function (e) {
- const data = JSON.parse(e.data);
- let text = data.text || data.response;
- if (data.message) {
- messageHandler(text, events);
- }
+// events.onmessage = function (e) {
+// const data = JSON.parse(e.data);
+// let text = data.text || data.response;
+// if (data.message) {
+// messageHandler(text, events);
+// }
- if (data.final) {
- convoHandler(data);
- console.log('final', data);
- } else {
- // console.log('dataStream', data);
- }
- };
+// if (data.final) {
+// convoHandler(data);
+// console.log('final', data);
+// } else {
+// // console.log('dataStream', data);
+// }
+// };
- events.onerror = function (e) {
- console.log('error in opening conn.');
- events.close();
- errorHandler(e);
- };
+// events.onerror = function (e) {
+// console.log('error in opening conn.');
+// events.close();
+// errorHandler(e);
+// };
- events.addEventListener('stop', () => {
- // Close the SSE stream
- console.log('stop event received');
- events.close();
- });
+// events.addEventListener('stop', () => {
+// // Close the SSE stream
+// console.log('stop event received');
+// events.close();
+// });
- events.stream();
-}
+// events.stream();
+// }