You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Py-Shiny Chat响应显示格式化数学公式?

解决Shiny Chat应用中数学公式无法格式化的问题

原因分析

ui.markdown本身不自带数学公式渲染能力,需要额外引入MathJax或KaTeX这类前端渲染库,同时要确保OpenAI返回的内容使用标准LaTeX公式语法。

具体解决步骤

1. 要求OpenAI返回LaTeX格式公式

在调用OpenAI的prompt中明确要求,数学公式需用LaTeX语法呈现:行内公式用$包裹,块级公式用$$包裹。例如在请求中添加提示:

请用LaTeX格式返回数学公式,行内公式用$包裹,块级公式用$$包裹。

2. 在应用中引入MathJax渲染库

在Shiny应用的UI部分添加MathJax的CDN链接,让页面具备公式渲染能力:

ui.page_fluid(
    # 引入MathJax
    ui.tags.script(src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"),
    # 其他UI组件
    chat.ui(id="chat"),
)

3. 保留并确认响应转换函数

之前的转换逻辑可以保留,确保内容以markdown格式传递:

@chat.transform_assistant_response
def _(content: str) -> ui.HTML:
    return ui.markdown(content)

4. 确认chat.messages配置

确保chat.messages()已正确开启助理响应转换:

chat.messages(id="chat", transform_assistant=True)

验证测试

发送请求如solve x^2-4=0,此时OpenAI返回的内容会包含$x^2-4=0$或$$x^2-4=0$$格式的公式,MathJax会自动将其渲染为格式化的数学公式。

内容的提问来源于stack exchange,提问作者sbik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 07:32:01