feat: 支持展示来自模型的标记信息

This commit is contained in:
arvinxx
2023-07-22 19:22:19 +08:00
parent 4fbb2787c9
commit e27fae9453
5 changed files with 51 additions and 1 deletions

View File

@@ -3,4 +3,5 @@ const config = require('@lobehub/lint').eslint;
config.extends.push('plugin:@next/next/recommended');
//config.extends.push('plugin:@next/next/core-web-vitals');
config.rules['unicorn/no-negated-condition'] = 0;
module.exports = config;

View File

@@ -5,6 +5,8 @@ import { shallow } from 'zustand/shallow';
import { chatSelectors, useSessionStore } from '@/store/session';
import MessageExtra from './MessageExtra';
const List = () => {
const data = useSessionStore(chatSelectors.currentChats, isEqual);
const [deleteMessage, resendMessage] = useSessionStore(
@@ -28,6 +30,7 @@ const List = () => {
}
}
}}
renderMessageExtra={MessageExtra}
style={{ marginTop: 24 }}
/>
);

View File

@@ -0,0 +1,37 @@
import { Tag } from 'antd';
import { createStyles } from 'antd-style';
import { ReactNode } from 'react';
import { Flexbox } from 'react-layout-kit';
import { shallow } from 'zustand/shallow';
import { agentSelectors, useSessionStore } from '@/store/session';
import { ChatMessage } from '@/types/chatMessage';
const useStyles = createStyles(({ css }) => ({
container: css`
margin-top: 8px;
`,
}));
const MessageExtra = ({ role, extra }: ChatMessage): ReactNode => {
const { styles } = useStyles();
const [model] = useSessionStore((s) => [agentSelectors.currentAgentModel(s)], shallow);
// 只有 ai 的 message 才会需要展示
if (role !== 'assistant') return;
// 只有当 当前的 model 和 fromModel 不一致时,才需要展示
if (extra?.fromModel && model === extra?.fromModel) return;
return (
<Flexbox className={styles.container}>
<div>
<Tag bordered={false} style={{ borderRadius: 6 }}>
{extra?.fromModel}
</Tag>
</div>
</Flexbox>
);
};
export default MessageExtra;

View File

@@ -119,7 +119,7 @@ export const createChatSlice: StateCreator<
const { dispatchMessage, generateMessage } = get();
// 添加 systemRole
const { systemRole } = agentSelectors.currentAgentConfigSafe(get());
const { systemRole, model } = agentSelectors.currentAgentConfigSafe(get());
if (systemRole) {
messages.unshift({ content: systemRole, role: 'system' } as ChatMessage);
}
@@ -137,6 +137,14 @@ export const createChatSlice: StateCreator<
type: 'addMessage',
});
// 为模型添加 fromModel 的额外信息
dispatchMessage({
id: assistantId,
key: 'fromModel',
type: 'updateMessageExtra',
value: model,
});
let output = '';
// 生成 ai message
await generateMessage(messages, {

View File

@@ -37,6 +37,7 @@ export const currentChats = (s: SessionStore): ChatMessage[] => {
}
};
// 基于添加逻辑进行重排序
for (const item of basic) {
// 先判存在与否,不存在就加入
addItem(item);