如何将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

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

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