如何将OpenAI响应中的答案(内容)解析为Markdown格式?

我有一个使用OpenAI生成答案的Next.js操作:

export async function continueConversation(  messages: CoreMessage[],  data: PersonResponse,  prompt: string) {  const { full_name, job_title, ...rest } = data  const result = await streamText({    system: `您是一位${job_title},您的名字是${full_name}。根据${JSON.stringify(      rest    )}回答问题`,    model: openai("gpt-4o-2024-05-13"),    messages,    prompt,  })  const stream = createStreamableValue(result.textStream)  return stream.value}

在用户界面中,我有以下代码部分:

{messages.map((m, i) => (              <div key={i} className="whitespace-pre-wrap flex flex-col px-8">                <div                  className={cn(                    "flex items-start",                    m.role === "user" && "justify-end"                  )}                >                  {m.role === "assistant" && (                    <Avatar className="w-8 h-8 mr-3 mt-1">                      <AvatarImage                        src={`https://${github_url}.png`}                        alt={getInitials(full_name as string)}                      />                      <AvatarFallback className="text-sm font-semibold tracking-[2px] bg-gradient-to-r from-[#ffaa40] via-[#9c40ff] to-[#ffaa40]">                        {getInitials(full_name as string)}                      </AvatarFallback>                    </Avatar>                  )}                  <span                    className={cn(                      "my-2",                      m.role === "user" &&                        "bg-neutral-800 px-4 py-3 rounded-full"                    )}                  >                    {m.content as string}                  </span>                </div>              </div>            ))}

在输出中,我得到的结果是Markdown格式:

enter image description here


回答:

您可以使用react-markdown包来显示Markdown,这个包的大小只有45.4kb

npm install react-markdown

import Markdown from "react-markdown"export default function Home(){  // 在这里调用API  return (   {messages.map((m, i) => (      <div key={i} className="whitespace-pre-wrap flex flex-col px-8">           <div>             {m.role === "assistant" && (              <Avatar >                <AvatarImage                  src={`https://${github_url}.png`}                  alt={getInitials(full_name as string)}                />               <AvatarFallback className="text-sm">                {getInitials(full_name as string)}               </AvatarFallback>             </Avatar>             )}             <span              className={cn(               "my-2",              m.role === "user" &&              "bg-neutral-800 px-4 py-3 rounded-full"            )}            >              <Markdown>{m.content}</Markdown>          </span>         </div>      </div>   ))}  )}

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注