|
@@ -21,10 +21,8 @@ import SizeIcon from "../icons/size.svg";
|
|
|
import avatar from "../icons/aiIcon.png";
|
|
import avatar from "../icons/aiIcon.png";
|
|
|
|
|
|
|
|
import {
|
|
import {
|
|
|
- ChatMessage,
|
|
|
|
|
SubmitKey,
|
|
SubmitKey,
|
|
|
useChatStore,
|
|
useChatStore,
|
|
|
- createMessage,
|
|
|
|
|
useAccessStore,
|
|
useAccessStore,
|
|
|
Theme,
|
|
Theme,
|
|
|
useAppConfig,
|
|
useAppConfig,
|
|
@@ -49,6 +47,7 @@ import dynamic from "next/dynamic";
|
|
|
|
|
|
|
|
import { ChatControllerPool } from "../client/controller";
|
|
import { ChatControllerPool } from "../client/controller";
|
|
|
import { DalleSize } from "../typing";
|
|
import { DalleSize } from "../typing";
|
|
|
|
|
+import type { RequestMessage } from "../client/api";
|
|
|
import { Prompt, usePromptStore } from "../store/prompt";
|
|
import { Prompt, usePromptStore } from "../store/prompt";
|
|
|
import { useGlobalStore } from "../store";
|
|
import { useGlobalStore } from "../store";
|
|
|
import Locale from "../locales";
|
|
import Locale from "../locales";
|
|
@@ -62,7 +61,6 @@ import {
|
|
|
Modal,
|
|
Modal,
|
|
|
Selector,
|
|
Selector,
|
|
|
showConfirm,
|
|
showConfirm,
|
|
|
- showPrompt,
|
|
|
|
|
showToast,
|
|
showToast,
|
|
|
} from "./ui-lib";
|
|
} from "./ui-lib";
|
|
|
import { useNavigate, useLocation } from "react-router-dom";
|
|
import { useNavigate, useLocation } from "react-router-dom";
|
|
@@ -75,23 +73,37 @@ import {
|
|
|
ServiceProvider,
|
|
ServiceProvider,
|
|
|
Plugin,
|
|
Plugin,
|
|
|
} from "../constant";
|
|
} from "../constant";
|
|
|
-import { Avatar } from "./emoji";
|
|
|
|
|
-import { ContextPrompts, MaskAvatar, MaskConfig } from "./mask";
|
|
|
|
|
|
|
+import { ContextPrompts, MaskConfig } from "./mask";
|
|
|
import { useMaskStore } from "../store/mask";
|
|
import { useMaskStore } from "../store/mask";
|
|
|
import { ChatCommandPrefix, useChatCommand, useCommand } from "../command";
|
|
import { ChatCommandPrefix, useChatCommand, useCommand } from "../command";
|
|
|
import { prettyObject } from "../utils/format";
|
|
import { prettyObject } from "../utils/format";
|
|
|
import { ExportMessageModal } from "./exporter";
|
|
import { ExportMessageModal } from "./exporter";
|
|
|
import { getClientConfig } from "../config/client";
|
|
import { getClientConfig } from "../config/client";
|
|
|
import { useAllModels } from "../utils/hooks";
|
|
import { useAllModels } from "../utils/hooks";
|
|
|
-import { Button, message, Popover, Select } from 'antd';
|
|
|
|
|
-import { RightOutlined } from '@ant-design/icons';
|
|
|
|
|
-import api from "@/app/api/api";
|
|
|
|
|
|
|
+import { nanoid } from "nanoid";
|
|
|
|
|
|
|
|
|
|
+export function createMessage(override: Partial<ChatMessage>): ChatMessage {
|
|
|
|
|
+ return {
|
|
|
|
|
+ id: nanoid(),
|
|
|
|
|
+ date: new Date().toLocaleString(),
|
|
|
|
|
+ role: "user",
|
|
|
|
|
+ content: "",
|
|
|
|
|
+ ...override,
|
|
|
|
|
+ };
|
|
|
|
|
+}
|
|
|
|
|
|
|
|
-const BOT_HELLO = {
|
|
|
|
|
|
|
+export type ChatMessage = RequestMessage & {
|
|
|
|
|
+ date: string;
|
|
|
|
|
+ streaming?: boolean;
|
|
|
|
|
+ isError?: boolean;
|
|
|
|
|
+ id: string;
|
|
|
|
|
+ model?: ModelType;
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+export const BOT_HELLO: ChatMessage = createMessage({
|
|
|
role: "assistant",
|
|
role: "assistant",
|
|
|
content: '您好,我是小智',
|
|
content: '您好,我是小智',
|
|
|
-}
|
|
|
|
|
|
|
+});
|
|
|
|
|
|
|
|
const Markdown = dynamic(async () => (await import("./markdown")).Markdown, {
|
|
const Markdown = dynamic(async () => (await import("./markdown")).Markdown, {
|
|
|
loading: () => <LoadingIcon />,
|
|
loading: () => <LoadingIcon />,
|