一.依赖引入
import MarkdownIt from 'markdown-it'
import hljs from 'highlight.js'
- markdown-it是对于AI回答进行md格式渲染的不二选择,highlight.js将配合markdown-it一起使用达到代码高亮的效果
二.渲染器准备
const markdownRender = new MarkdownIt({
html: true,
linkify: true,
typographer: true,
breaks: true,
highlight: function (str, lang) {
if (lang && hljs.getLanguage(lang)) {
try {
return '<pre class="hljs"><code>' +
hljs.highlight(str, { language: lang, ignoreIllegals: true }).value +
'</code></pre>'
} catch (__) {}
}
return '<pre class="hljs"><code>' + markdownRender.utils.escapeHtml(str) + '</code></pre>'
}
})
三.获取AI回答数据并渲染
const streamUrl = new URL('你的后端AI服务地址')
streamUrl.searchParams.set('message','请给我回答')
const eventSource = new EventSource(streamUrl)
eventSource.onmessage = (event) => {
const content = event.data
if (content === '[DONE]') {
handleComplete()
return
}
fullMarkdown += content === '' ? '\n' : content
messages.value[currentAiMessageIndex].htmlContent = markdownRender.render(fullMarkdown)
nextTick(() => {
chatMessagesRef.value?.scrollTo({
top: chatMessagesRef.value.scrollHeight,
behavior: 'auto'
})
})
}