♻️ refactor: 重构 selector 文件组织

This commit is contained in:
arvinxx
2023-07-22 17:49:52 +08:00
parent 7f532bea3a
commit 2ad0ef9982
3 changed files with 34 additions and 28 deletions

View File

@@ -1,13 +1,11 @@
import { encode } from 'gpt-tokenizer';
import { agentSelectors } from '@/store/session';
import { ChatMessage } from '@/types/chatMessage';
import type { SessionStore } from '../../store';
import { sessionSelectors } from '../session';
import type { SessionStore } from '../../../store';
import { sessionSelectors } from '../../session';
// 展示在聊天框中的消息
const currentChats = (s: SessionStore): ChatMessage[] => {
export const currentChats = (s: SessionStore): ChatMessage[] => {
const session = sessionSelectors.currentSession(s);
if (!session) return [];
@@ -53,30 +51,8 @@ const currentChats = (s: SessionStore): ChatMessage[] => {
return finalList;
};
const systemRoleSel = (s: SessionStore): string => {
export const systemRoleSel = (s: SessionStore): string => {
const config = agentSelectors.currentAgentConfigSafe(s);
return config.systemRole;
};
const systemRoleTokens = (s: SessionStore): number[] => {
const systemRole = systemRoleSel(s);
return encode(systemRole || '');
};
const chatsTokens = (s: SessionStore): number[] => {
const chats = currentChats(s);
return encode(chats.map((m) => m.content).join(''));
};
const systemRoleTokenCount = (s: SessionStore) => systemRoleTokens(s).length;
const totalTokenCount = (s: SessionStore) => chatsTokens(s).length + systemRoleTokenCount(s);
export const chatSelectors = {
currentChats,
systemRoleTokenCount,
systemRoleTokens,
totalTokenCount,
};

View File

@@ -0,0 +1,9 @@
import { currentChats } from './chat';
import { chatsTokenCount, systemRoleTokenCount, totalTokenCount } from './token';
export const chatSelectors = {
chatsTokenCount,
currentChats,
systemRoleTokenCount,
totalTokenCount,
};

View File

@@ -0,0 +1,21 @@
import { encode } from 'gpt-tokenizer';
import type { SessionStore } from '../../../store';
import { currentChats, systemRoleSel } from './chat';
const systemRoleTokens = (s: SessionStore): number[] => {
const systemRole = systemRoleSel(s);
return encode(systemRole || '');
};
const chatsTokens = (s: SessionStore): number[] => {
const chats = currentChats(s);
return encode(chats.map((m) => m.content).join(''));
};
export const chatsTokenCount = (s: SessionStore) => chatsTokens(s).length;
export const systemRoleTokenCount = (s: SessionStore) => systemRoleTokens(s).length;
export const totalTokenCount = (s: SessionStore) => chatsTokens(s).length + systemRoleTokenCount(s);