Loading...
@@ -89,22 +93,14 @@ import { ElCard, ElInput, ElButton } from "element-plus";
import { WSMessage, AIQMessage, OllamaMessage } from "@/types/im";
import { ElMessage } from "element-plus";
import { GetMessageService } from "@/api/im";
-import {Check, Loading} from '@element-plus/icons-vue'
+import {Check, Loading, DocumentCopy} from '@element-plus/icons-vue'
import MarkdownIt from "markdown-it";
import markdownItMermaid from "markdown-it-mermaid";
import hljs from "highlight.js";
import { Session } from "@/types/session";
import bash from "highlight.js/lib/languages/bash";
import { FindSessionService } from "@/api/session";
-import javascript from "highlight.js/lib/languages/javascript";
-import typescript from "highlight.js/lib/languages/typescript";
-import java from "highlight.js/lib/languages/java";
-import sql from "highlight.js/lib/languages/sql";
-import nginx from "highlight.js/lib/languages/nginx";
-import json from "highlight.js/lib/languages/json";
-import yaml from "highlight.js/lib/languages/yaml";
-import xml from "highlight.js/lib/languages/xml";
-import shell from "highlight.js/lib/languages/shell";
+import markdownItHighlightjs from 'markdown-it-highlightjs';
import "katex/dist/katex.min.css";
interface Message {
role: "user" | "assistant";
@@ -112,33 +108,12 @@ interface Message {
finished?: boolean;
}
-hljs.registerLanguage("bash", bash);
-hljs.registerLanguage("javascript", javascript);
-hljs.registerLanguage("typescript", typescript);
-hljs.registerLanguage("java", java);
-hljs.registerLanguage("sql", sql);
-hljs.registerLanguage("nginx", nginx);
-hljs.registerLanguage("json", json);
-hljs.registerLanguage("yaml", yaml);
-hljs.registerLanguage("xml", xml);
-hljs.registerLanguage("shell", shell);
-const md = new MarkdownIt({
- html: true,
- linkify: true,
- breaks: true,
- xhtmlOut: true,
- typographer: true,
- highlight: (str, lang) => {
- if (lang && hljs.getLanguage(lang)) {
- try {
- return `${
- hljs.highlight(str, { language: lang, ignoreIllegals: true }).value
- }
`;
- } catch (__) {}
- }
- return `${md.utils.escapeHtml(str)}
`;
- },
-});
+const md = new MarkdownIt();
+md.use(markdownItHighlightjs,{
+ hljs,
+ auto: true,
+ code: true
+})
const historySessions = ref([]);
const loading = ref(false);
@@ -161,6 +136,30 @@ const scrollToBottom = () => {
x.scrollTop = x.scrollHeight; //将滚轮置底
};
+const copyCode = (code: string) => {
+ navigator.clipboard.writeText(code).then(() => {
+ ElMessage.success("代码已复制到剪贴板");
+ });
+};
+
+const doButtonD = () => {
+ const codeBlocks = document.querySelectorAll('pre code');
+ codeBlocks.forEach((codeBlock) => {
+ // 创建复制按钮
+ const copyButton = document.createElement('button');
+ copyButton.textContent = '复制代码';
+ copyButton.classList.add('copy-code-button');
+ copyButton.addEventListener('click', () => {
+ copyCode(codeBlock.textContent);
+ });
+ // 设置代码块父元素的定位,以便按钮定位
+ const pre = codeBlock.parentNode;
+ pre.style.position = 'relative';
+ // 将复制按钮添加到代码块父元素中
+ pre.appendChild(copyButton);
+ });
+};
+
onMounted(() => {
// if (typeof window !== 'undefined') {
// // 浏览器环境
@@ -175,7 +174,7 @@ onMounted(() => {
console.log("WebSocket 连接已建立");
ElMessage.success("连接成功");
};
- getMessage(125);
+ //getMessage(125);
messagesContainer.value = document.querySelector(".chat-messages");
socket.value.onmessage = (event) => {
@@ -253,6 +252,8 @@ const loadSession = async (session_id: number) => {
(session) => session.ID == session_id
)?.Name;
await getMessage(session_id);
+ scrollToBottom();
+ //doButtonD();
};
const clearCurrent = () => {
@@ -313,6 +314,13 @@ const getMessage = async (session_id: number) => {
}
return {};
};
+const copyMessage = (content: string) => {
+ navigator.clipboard.writeText(content).then(() => {
+ ElMessage.success('复制成功');
+ }).catch((error) => {
+ ElMessage.error('复制失败: ' + error);
+ });
+};
diff --git a/src/views/system/prompt-gen.vue b/src/views/system/prompt-gen.vue
new file mode 100644
index 0000000..3360c5a
--- /dev/null
+++ b/src/views/system/prompt-gen.vue
@@ -0,0 +1,271 @@
+
+
+
+
+
+
+
+
+
你的任务
+
+
生成Prompt
+
+
Prompt 模板
+
模板新增
+
+
{{ template.title }}
+
{{ template.desc }}
+
+
+
+
+
+
生成后的 Prompt
+
+
+
+
+ {{ selectedModel.name }}
+
+
+
+
+
+
+
![Model Logo]()
+
+
{{ model.name }}
+
{{ model.version }}
+
+
+
+
+
模型参数
+
+
{{ temperature }}
+
+
{{ topP }}
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/system/prompt-generate.vue b/src/views/system/prompt-generate.vue
deleted file mode 100644
index cc751e9..0000000
--- a/src/views/system/prompt-generate.vue
+++ /dev/null
@@ -1,296 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
- Loading...
-
-
-
-
-
-
-
-
-
- 发送
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
index e686304..925e1d8 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2153,6 +2153,13 @@ magic-string@^0.30.7:
dependencies:
"@jridgewell/sourcemap-codec" "^1.4.15"
+markdown-it-highlightjs@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.npmjs.org/markdown-it-highlightjs/-/markdown-it-highlightjs-4.2.0.tgz"
+ integrity sha512-NC7pXE8KkOl6xWJVRNt8p6wgJVznXKsE0HgYGdk6DD2tn1l4L9f0ALf3VIoGVkotNU1uGQatSxfBF1zZPUMmuQ==
+ dependencies:
+ highlight.js "^11.9.0"
+
markdown-it-katex@^2.0.3:
version "2.0.3"
resolved "https://registry.npmjs.org/markdown-it-katex/-/markdown-it-katex-2.0.3.tgz"