Adornando mensajes de AI SDK con ReactMarkdown

힘센캥거루
2025년 9월 30일(수정됨)
2
118

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.

관련 글

공문서 완전 자동화 해보기 - ChatGPT, Claude, kordoc + python-hwpx
공문서 완전 자동화 해보기 - ChatGPT, Claude, kordoc + python-hwpx
대한민국 공공기관은 여전히 .hwp 확장자를 가진 파일을 많이 사용한다.이 파일은 한글과컴퓨터에서 만든 독자 규격 문서다.문제는 이 형식이 다른 프로그램과 완전히 호환되지 않는다는 데 있다.문서를 열어보는 것은 가능하다.하지만 그 내용을 구조적으로 읽고, 데이터처럼 활...
Relato del desarrollo de un blog full‑stack con Next.js
Relato del desarrollo de un blog full‑stack con Next.js
Alrededor de un año después de empezar con el desarrollo web, empecé a pensar que quería tener mi propio blog.Así que estuve dedicado a esto durante u...
Despliegue sin interrupciones de Nextjs (servidor local) usando Caddy
Despliegue sin interrupciones de Nextjs (servidor local) usando Caddy
Cada vez que me entraban ganas de seguir añadiendo cosas a la página web, hacía un build, y en ese intervalo parece que había gente que se conectaba d...
Automatización de la indexación de búsqueda de Google - Web Search Indexing API
Automatización de la indexación de búsqueda de Google - Web Search Indexing API
Después de IndexNow, decidí probar también la automatización con Google.Buscando un poco, vi que Google ofrecía algo llamado Web Search Indexing a tra...
Automatizar la creación de índices de búsqueda - IndexNow
Automatizar la creación de índices de búsqueda - IndexNow
Mientras estaba registrando el sitio en Bing, me enteré de que Bing ofrece una función llamada IndexNow.Lo esencial es que, usando una clave de API, p...
Experiencia de que hackearan mi servidor Nextjs y React
Experiencia de que hackearan mi servidor Nextjs y React
La primera vez que me encontré con este problema de seguridad fue la madrugada del 5 de diciembre.Que en React era posible ejecutar código de forma re...

댓글을 불러오는 중...