현재 정적 대피소로 운영 중입니다. 일부 글과 상호작용 기능은 점검 중입니다.
Programming2 분조회 140좋아요 0

ReactMarkdown으로 AI SDK 메세지 꾸미기

지난 글에서 Vercel의 AI SDK를 이용한 chatGPT 서비스를 만들어보았다.그런데 대화를 해보면 글이 뭔가 밋밋하다.뭐라고 하는지는 알겠는데 글이 너무 바짝 붙어있다.그냥 간단하게 className으로 whitespace-pre-wrap을 써줘도 이쁘게 바뀌긴...

지난 글에서 Vercel의 AI SDK를 이용한 chatGPT 서비스를 만들어보았다.

그런데 대화를 해보면 글이 뭔가 밋밋하다.

ReactMarkdown으로 AI SDK 메세지 꾸미기-1

뭐라고 하는지는 알겠는데 글이 너무 바짝 붙어있다.

그냥 간단하게 className으로 whitespace-pre-wrap을 써줘도 이쁘게 바뀌긴 한다.

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

ReactMarkdown으로 AI SDK 메세지 꾸미기-2

이렇게 하니 그래도 띄어쓰기는 해준다.

그런데 잘보면 이 녀석 마크다운으로 대답한다.

ReactMarkdown으로 AI SDK 메세지 꾸미기-3

그럼 대답을 react-markdown 컴포넌트로 넣어주면 조금 이뻐질것 같았다.

1. 라이브러리 설치 및 세팅

먼저 필요한 라이브러리들을 깔아보자.

yarn add react-markdown remark-gfm rehype-highlight highlight.js
  • react-markdown : 마크다운을 html로 랜더링 해줌.

  • remark-gfm : 기존의 마크다운에 몇가지 기능을 추가한 것.

  • rehype-highlight : 코드 하이라이트 기능. 다만 조금 세부적인 설정이 필요하다.

  • highlight.js : 코드를 파싱해서 알맞게 강조해 줌.

이제 이걸 div 내부에 넣어주면 된다.

주의할 점은 class에서 whitespace 옵션은 빼주는걸 잊지 말자.

"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>
...

ReactMarkdown으로 AI SDK 메세지 꾸미기-4

이렇게 하고나면 위와 같이 마크다운 문법이 강조되는 것을 볼 수 있다.

테이블이나 인라인 코드블럭도 가능하다.

코드 하이라이트 색상은 highllight 공식 사이트에서 확인할 수 있다.

ReactMarkdown으로 AI SDK 메세지 꾸미기-5

들어가서 여러가지 스타일들을 둘러보면서 가장 마음에 드는걸 선택하면 된다.

chatGPT가 추천하는 스타일은 Default, Atom One Dark, Solarized Light, GitHub 였다.

2. 후기

정말 하루에 하나를 추가하고 나면 시간이 다 간다.

그래도 개학하기 전에는 서비스를 완성해야 하는데 걱정이다.

논문은 쓸수나 있을지...

조금더 분발해야겠다.

댓글은 서버 점검 중이라 대피소에서 사용할 수 없습니다.

관련 글

Programming

아이폰 테더링 제한 우회하기(Lgu+ 기준)

아이폰의 테더링 제한 해제방법을 계속 찾다가 어떤 분의 글을 발견했다.아이폰에서 파이썬 서버를 하나 열어서 데이터를 전송하는 것.이 분의 글과 깃허브를 참고해서 진행해보았다.1. IOS-SOCKS-SERVERSOCKS는 소켓 통신을 중계하는 프로토콜이다.이걸 아이폰에서...

Programming

엑셀로 cell 파일(한셀) 열기

한셀(.cell) 파일을 받을 때 마다 당황스러웠다.왜냐하면 .cell 파일은 엑셀로 열리지 않기 때문이다.&nbsp;그래서 매번 한셀을 깔거나, 한글 오피스 웹으로 들어가 확인하곤 했다.이제 그런 방법 없이 간단하게 확장자 변경으로 .cell 파일을 확인해보자.두 가...

Programming

파워 포인트에서 그림 반전하는 법

블로그를 쓰다가 아래 이미지를 반전시켜 하나의 그래프를 만들고 싶었다.그런데 반전을 어떻게 시키는 건지 기억이 안남...그래서 블로그에다 남겨둔다.[이미지를 클릭] --&gt; [세이프 형식] --&gt; [회전] --&gt; [좌우 대칭]위의 순서로 하면 이미지를 반...