Adornando mensajes de AI SDK con ReactMarkdown

힘센캥거루
2025년 1월 24일(수정됨)
111
nextjs

En el artículo anterior, creamos un servicio chatGPT utilizando el AI SDK de Vercel.

Pero al mantener una conversación, el texto se ve algo soso.

Adornando mensajes de AI SDK con ReactMarkdown-1

Entendemos lo que se dice, pero el texto está muy apretado.

Simplemente usando className con whitespace-pre-wrap cambia a algo más bonito.

<div className="text-gray-800 whitespace-pre-wrap">
    {message.content}
</div>

Adornando mensajes de AI SDK con ReactMarkdown-2

Haciendo esto, se respetan los espacios.

Pero si te fijas bien, responde en markdown.

Adornando mensajes de AI SDK con ReactMarkdown-3

1. Instalación y configuración de la librería

Primero, instalemos las bibliotecas necesarias.

yarn add react-markdown remark-gfm rehype-highlight highlight.js
  • react-markdown: Renderiza markdown como HTML.

  • remark-gfm: Añade algunas funcionalidades al markdown tradicional.

  • rehype-highlight: Función de resaltado de código. Requiere configuraciones específicas.

  • highlight.js: Analiza el código y lo resalta adecuadamente.

Ahora, simplemente colócalo dentro de un div.

No olvides quitar la opción whitespace del class.

"use client";

import ReactMarkdown from "react-markdown";
import remarkGfm from "remark-gfm";
import rehypeHighlight from "rehype-highlight";
import "highlight.js/styles/atom-one-dark.css";

...
<div className="text-gray-800">
    <ReactMarkdown
    className="w-full h-5/6 prose"
    remarkPlugins={[remarkGfm]}
    rehypePlugins={[rehypeHighlight]}
    >
    {message.content}
    </ReactMarkdown>
</div>
...

Adornando mensajes de AI SDK con ReactMarkdown-4

Al hacerlo, puedes ver cómo se destaca la sintaxis markdown.

Se admiten tablas y bloques de código en línea.

Puedes revisar el color de resaltado del código en el sitio oficial de highlight.

Adornando mensajes de AI SDK con ReactMarkdown-5

Explora varios estilos y elige el que más te guste.

Los estilos recomendados por chatGPT fueron Default, Atom One Dark, Solarized Light, GitHub.

2. Comentarios finales

Añadir algo nuevo cada día consume mucho tiempo.

Pero debo completar el servicio antes de que comience el semestre, me preocupa.

Me pregunto si podré escribir el paper...

Debo esforzarme más.

댓글을 불러오는 중...