You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将OpenAI响应内容解析为Markdown并在Next.js中渲染?

解决OpenAI返回Markdown无法渲染的问题

步骤1:安装Markdown解析库

安装轻量易用的marked库来解析Markdown文本:

npm install marked

步骤2:在UI组件中集成解析逻辑

根据你的流式返回场景,分两种情况处理:

静态内容渲染

如果是已完成的非流式消息,直接解析后渲染:

import { marked } from 'marked';

// 替换原有的 {m.content as string} 部分
{m.role === 'assistant' ? (
  <span 
    className={cn(
      "my-2",
      "bg-neutral-100 dark:bg-neutral-700 px-4 py-3 rounded-full"
    )}
    dangerouslySetInnerHTML={{ __html: marked(m.content as string) }}
  />
) : (
  <span 
    className={cn(
      "my-2",
      "bg-neutral-800 px-4 py-3 rounded-full"
    )}
  >
    {m.content as string}
  </span>
)}

流式内容渲染

因为你的Action返回的是文本流,需要在内容接收过程中逐步解析:

import { useState, useEffect } from 'react';
import { marked } from 'marked';

// 假设组件内有状态存储流式内容
const [assistantStream, setAssistantStream] = useState('');
const [renderedMarkdown, setRenderedMarkdown] = useState('');

useEffect(() => {
  // 每次流内容更新时重新解析Markdown
  setRenderedMarkdown(marked(assistantStream));
}, [assistantStream]);

// 渲染流式内容时使用解析后的结果
<span 
  className="my-2 bg-neutral-100 dark:bg-neutral-700 px-4 py-3 rounded-full"
  dangerouslySetInnerHTML={{ __html: renderedMarkdown }}
/>

步骤3:添加基础样式(可选)

为解析后的Markdown元素添加样式,提升可读性:

/* 在全局样式或组件样式中添加 */
.markdown-content p {
  margin: 0.5em 0;
}
.markdown-content strong {
  font-weight: 700;
}
.markdown-content ul, .markdown-content ol {
  padding-left: 1.5em;
  margin: 0.5em 0;
}
.markdown-content code {
  background-color: #f3f4f6;
  padding: 0.1em 0.3em;
  border-radius: 3px;
}
.markdown-content pre {
  background-color: #f3f4f6;
  padding: 1em;
  border-radius: 6px;
  overflow-x: auto;
}

注意要给包含Markdown的元素加上markdown-content类名。

步骤4:安全防护

使用dangerouslySetInnerHTML时,建议开启marked的 sanitize 选项防止XSS:

const html = marked(m.content as string, { sanitize: true });
<span dangerouslySetInnerHTML={{ __html: html }} />

内容的提问来源于stack exchange,提问作者Ala Eddine Menai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 21:23:09