大模型输出markdown格式前端对话框

06-01 1265阅读

大模型输出markdown格式前端对话框

1. 先看效果

大模型输出markdown格式前端对话框

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,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

相关阅读

目录[+]

取消
微信二维码
微信二维码
支付宝二维码