mirror of
https://github.com/lobehub/lobehub.git
synced 2026-03-27 13:29:15 +07:00
✨ feat: 支持展示来自模型的标记信息
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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 }}
|
||||
/>
|
||||
);
|
||||
|
||||
37
src/pages/chat/[id]/Conversation/MessageExtra.tsx
Normal file
37
src/pages/chat/[id]/Conversation/MessageExtra.tsx
Normal 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;
|
||||
@@ -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, {
|
||||
|
||||
@@ -37,6 +37,7 @@ export const currentChats = (s: SessionStore): ChatMessage[] => {
|
||||
}
|
||||
};
|
||||
|
||||
// 基于添加逻辑进行重排序
|
||||
for (const item of basic) {
|
||||
// 先判存在与否,不存在就加入
|
||||
addItem(item);
|
||||
|
||||
Reference in New Issue
Block a user