chore: completion payload format

This commit is contained in:
jialin
2024-10-25 12:15:26 +08:00
parent 870ffa9dc1
commit ba49fa6c88
8 changed files with 105 additions and 104 deletions
+1 -1
View File
@@ -14,7 +14,7 @@ const isProduction = env === 'production';
const t = Date.now(); const t = Date.now();
export default defineConfig({ export default defineConfig({
proxy: { proxy: {
...proxy() ...proxy('http://192.168.50.3')
}, },
history: { history: {
type: 'hash' type: 'hash'
+5 -2
View File
@@ -8,8 +8,11 @@
z-index: 100; z-index: 100;
button { button {
background-color: rgba(255, 255, 255, 90%); color: rgba(255, 255, 255, 70%);
border: none;
&:hover {
color: rgba(255, 255, 255, 90%) !important;
}
} }
} }
+1 -1
View File
@@ -123,7 +123,7 @@ const LogsViewer: React.FC<LogsViewerProps> = (props) => {
<span className="copy"> <span className="copy">
<CopyButton <CopyButton
text={logs?.map((item) => item.content).join('\n')} text={logs?.map((item) => item.content).join('\n')}
type="default" type="text"
size="small" size="small"
></CopyButton> ></CopyButton>
</span> </span>
+6 -3
View File
@@ -10,7 +10,8 @@ const VersionInfo: React.FC<{ intl: any }> = ({ intl }) => {
const latestVersion = getAtomStorage(UpdateCheckAtom).latest_version; const latestVersion = getAtomStorage(UpdateCheckAtom).latest_version;
const currentVersion = getAtomStorage(GPUStackVersionAtom)?.version; const currentVersion = getAtomStorage(GPUStackVersionAtom)?.version;
const isProd = currentVersion !== '0.0.0'; const isProd =
currentVersion !== '0.0.0' && currentVersion.indexOf('rc') === -1;
const uiVersion = document.documentElement.getAttribute('data-version'); const uiVersion = document.documentElement.getAttribute('data-version');
@@ -38,7 +39,9 @@ const VersionInfo: React.FC<{ intl: any }> = ({ intl }) => {
{' '} {' '}
{intl.formatMessage({ id: 'common.footer.version.server' })} {intl.formatMessage({ id: 'common.footer.version.server' })}
</span> </span>
{getAtomStorage(GPUStackVersionAtom)?.git_commit} {currentVersion === '0.0.0'
? getAtomStorage(GPUStackVersionAtom)?.git_commit
: getAtomStorage(GPUStackVersionAtom)?.version}
</span> </span>
<span className="item"> <span className="item">
<span className="tl">UI</span> <span className="tl">UI</span>
@@ -47,7 +50,7 @@ const VersionInfo: React.FC<{ intl: any }> = ({ intl }) => {
</span> </span>
)} )}
</div> </div>
{getAtomStorage(userAtom)?.is_admin && ( {getAtomStorage(userAtom)?.is_admin && isProd && (
<div className="upgrade"> <div className="upgrade">
<span className="m-l-5"> <span className="m-l-5">
{latestVersion && {latestVersion &&
+14 -43
View File
@@ -14,7 +14,7 @@ import {
useState useState
} from 'react'; } from 'react';
import { CHAT_API } from '../apis'; import { CHAT_API } from '../apis';
import { Roles, formatMessageParams } from '../config'; import { Roles, generateMessages } from '../config';
import { MessageItem } from '../config/types'; import { MessageItem } from '../config/types';
import '../style/ground-left.less'; import '../style/ground-left.less';
import '../style/system-message-wrap.less'; import '../style/system-message-wrap.less';
@@ -134,52 +134,23 @@ const GroundLeft: React.FC<MessageProps> = forwardRef((props, ref) => {
setMessageList((pre) => { setMessageList((pre) => {
return [...pre, ...currentMessageRef.current]; return [...pre, ...currentMessageRef.current];
}); });
const formatMessages = _.map( console.log('messageList:', [
[...messageList, ...currentMessageRef.current], ...messageList,
(item: MessageItem) => { ...currentMessageRef.current
return { ]);
role: item.role,
content: [
{
type: 'text',
text: item.content
},
..._.map(
item.imgs,
(img: { uid: string | number; dataUrl: string }) => {
return {
type: 'image_url',
image_url: {
url: img.dataUrl
}
};
}
)
]
};
}
);
const messageParams = systemMessage
? [
{
role: Roles.System,
content: [
{
type: 'text',
text: systemMessage
}
]
},
...formatMessages
]
: [...formatMessages];
const finalMessageParams = formatMessageParams(messageParams); const messageParams = [
{ role: Roles.System, content: systemMessage },
...messageList,
...currentMessageRef.current
];
setViewCodeMessage(finalMessageParams); const messages = generateMessages(messageParams);
setViewCodeMessage(messages);
const chatParams = { const chatParams = {
messages: finalMessageParams, messages: messages,
...parameters, ...parameters,
stream: true, stream: true,
stream_options: { stream_options: {
@@ -340,10 +340,12 @@ const MessageInput: React.FC<MessageInputProps> = ({
{intl.formatMessage({ id: `playground.${message.role}` })} {intl.formatMessage({ id: `playground.${message.role}` })}
</Button> </Button>
<Divider type="vertical" style={{ margin: 0 }} /> <Divider type="vertical" style={{ margin: 0 }} />
<UploadImg {message.role === Roles.User && (
handleUpdateImgList={handleUpdateImgList} <UploadImg
size="middle" handleUpdateImgList={handleUpdateImgList}
></UploadImg> size="middle"
></UploadImg>
)}
</> </>
)} )}
<Tooltip <Tooltip
@@ -24,7 +24,7 @@ import React, {
} from 'react'; } from 'react';
import 'simplebar-react/dist/simplebar.min.css'; import 'simplebar-react/dist/simplebar.min.css';
import { CHAT_API } from '../../apis'; import { CHAT_API } from '../../apis';
import { Roles, formatMessageParams } from '../../config'; import { Roles, generateMessages } from '../../config';
import CompareContext from '../../config/compare-context'; import CompareContext from '../../config/compare-context';
import { MessageItem, ModelSelectionItem } from '../../config/types'; import { MessageItem, ModelSelectionItem } from '../../config/types';
import '../../style/model-item.less'; import '../../style/model-item.less';
@@ -123,63 +123,22 @@ const ModelItem: React.FC<ModelItemProps> = forwardRef(
setMessageList((preList) => { setMessageList((preList) => {
return [...preList, ...currentMessageRef.current]; return [...preList, ...currentMessageRef.current];
}); });
const messages = _.map(
[...messageList, ...currentMessageRef.current],
(item: MessageItem) => {
return {
role: item.role,
content: item.content,
imgs: item.imgs || []
};
}
);
contentRef.current = ''; contentRef.current = '';
// ====== payload ================= // ====== payload =================
const formatMessages = _.map(messages, (item: MessageItem) => {
return {
role: item.role,
content: [
{
type: 'text',
text: item.content
},
..._.map(
item.imgs,
(img: { uid: string | number; dataUrl: string }) => {
return {
type: 'image_url',
image_url: {
url: img.dataUrl
}
};
}
)
]
};
});
const messageParams = systemMessage const messageParams = [
? [ { role: Roles.System, content: systemMessage },
{ ...messageList,
role: Roles.System, ...currentMessageRef.current
content: [ ];
{
type: 'text',
text: systemMessage
}
]
},
...formatMessages
]
: [...formatMessages];
const finalMessageParams = formatMessageParams(messageParams); const messages = generateMessages(messageParams);
setViewCodeMessage(finalMessageParams); setViewCodeMessage(messages);
const chatParams = { const chatParams = {
messages: finalMessageParams, messages: messages,
...params, ...params,
stream: true, stream: true,
stream_options: { stream_options: {
+63
View File
@@ -1,3 +1,6 @@
import { map } from 'lodash';
import { MessageItem } from './types';
export const Roles = { export const Roles = {
User: 'user', User: 'user',
Assistant: 'assistant', Assistant: 'assistant',
@@ -40,3 +43,63 @@ export const formatMessageParams = (messageList: any[]) => {
}); });
return result; return result;
}; };
export const generateMessagesByListContent = (messageList: any[]) => {
if (!messageList.length) return [];
return messageList.map((item: MessageItem) => {
const content = map(
item.imgs,
(img: { uid: string | number; dataUrl: string }) => {
return {
type: 'image_url',
image_url: {
url: img.dataUrl
}
};
}
);
if (item.content) {
content.push({
type: 'text',
text: item.content
});
}
return {
role: item.role,
content: content
};
});
};
export const generateMessages = (messageList: Omit<MessageItem, 'uid'>[]) => {
if (!messageList.length) return [];
const result: any[] = [];
messageList.forEach((item: Omit<MessageItem, 'uid'>) => {
if (item.imgs?.length) {
const imgList = item.imgs.map((img) => {
return {
type: 'image_url',
image_url: {
url: img.dataUrl
}
};
});
result.push({
role: item.role,
content: imgList
});
}
if (item.content) {
result.push({
role: item.role,
content: item.content
});
}
});
return result;
};