大模型输出markdown格式前端对话框
大模型输出markdown格式前端对话框
1. 先看效果
2. 安装依赖
npm install marked md-editor-v3 --save // 下面的是我安装的版本 "marked": "^12.0.2", "md-editor-v3": "^4.16.7",
3. 关键文件
MdPreview.vue
import 'md-editor-v3/lib/style.css'; import { MdPreview } from 'md-editor-v3'
MdRenderer.vue
import { config } from 'md-editor-v3' import MdPreview from './MdPeview.vue' import 'md-editor-v3/lib/style.css'; config({ markdownItConfig(md) { md.renderer.rules.image = (tokens, idx, options, env, self) => { tokens[idx].attrSet('style', 'display:inline-block;min-height:33px;padding:0;margin:0') if (tokens[idx].content) { tokens[idx].attrSet('title', tokens[idx].content) } tokens[idx].attrSet( 'onerror', 'this.src="/ui/assets/load_error.png";this.onerror=null;this.height="33px"' ) return md.renderer.renderToken(tokens, idx, options) } md.renderer.rules.link_open = (tokens, idx, options, env, self) => { tokens[idx].attrSet('target', '_blank') return md.renderer.renderToken(tokens, idx, options) } document.appendChild } }) const props = defineProps({ source: String, }) .problem-button { width: 100%; border: none; border-radius: 8px; background: var(--app-layout-bg-color); height: 46px; padding: 0 12px; line-height: 46px; box-sizing: border-box; color: var(--el-text-color-regular); -webkit-line-clamp: 1; word-break: break-all; &:hover { background: var(--el-color-primary-light-9); } &.disabled { &:hover { background: var(--app-layout-bg-color); } } :deep(.el-icon) { color: var(--el-color-primary); } }
index.vue
import MdRenderer from './MdRenderer.vue' const props = defineProps({ answer_text: String })
判断字符串中的是不是富文本还是markdown
// 查找字符串内的所有markdown标签标签 export const findMarkdownTags = (text) => { const patterns = { headers: /^(#+\s+.*$)/gm, emphasis: /(\*[^*]*\*|\_[^\_]*\_)/g, bold: /(\*\*[^*]*\*\*|\_\_[^\_]*\_\_)/g, links: /(\[.*?\]\(.*?\))/g, images: /(\!\[.*?\]\(.*?\))/g, code: /(```[\s\S]*?```|`[^`]*`)/g, lists: /^-.*$(\n^-.*$)*/gm }; const results = {}; for (const [tag, pattern] of Object.entries(patterns)) { results[tag] = text.match(pattern) || []; } const list = [] for (let key in results) { if (results[key].length != 0) list.push(...results[key]) } return list.length; } // 查找字符串内的所有Html标签标签 export const findHtmlTags = (str) => { // str = '样式的字符串。' const regex = /
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。