【公式渲染问题解决方案】

怎么调效果都不完美,准备转lobechat了 :sweat_smile:
其实下边的提示词对于非逆向api可以用了,我的那个o1是逆向的(自带提示词),所以错误蛮多的。
配置完lobechat了,公式渲染深得我心,哈哈哈哈哈哈!

如题,在使用openwebui输出复杂公式推导的时候(o1等),总是会出现行内公式直接显示源码的情况,中间问了很多人,有说是“”的原因,有的是代码块,但是我点击回复的源代码看了也修改了,发现了一些可以解决的办法,提示词如下,如果你用了还是有不能渲染的,请在下边贴出来,我来优化提示词!
让claude总结了一下

# LaTeX 公式排版规范

1. **基本规则**
- 行内公式必须使用 \( \) 包围
- 所有公式与周围文字必须有一个空格间隔
- 行间公式使用 \[ \] 且独占一行
- 必须使用标准 LaTeX 语法

2. **示例**
```markdown
行内公式:速度向量 \(\mathbf{v}\) 在时间 \(t\) 处的值为 \(\mathbf{v}(t)\) 。

多个公式用顿号:设 \(x = 1\) 、 \(y = 2\) 、 \(z = 3\) 。

行间公式:
\[
\frac{\partial \mathbf{u}}{\partial t} + (\mathbf{u} \cdot \nabla)\mathbf{u} = -\frac{1}{\rho}\nabla p + \nu\nabla^2\mathbf{u}
\]

3. **常见错误示范**
- ❌ 密度\(\rho\)为常数 (缺少空格)
- ❌ 速度v(t)满足方程 (未使用 LaTeX)
- ❌ \((x,y,z)\下 (缺少右括号和空格)

4. **正确格式示范**
- ✅ 密度 \(\rho\) 为常数
- ✅ 速度 \(v(t)\) 满足方程
- ✅ 坐标 \((x,y,z)\) 下
- ✅ 设 \(x = 1\) 、 \(y = 2\) 、 \(z = 3\) 。
1. 始终使用 \( \) 表示行内公式,禁止使用单个\( 符号
2. 行内公式与周围的任何字符(包括中文、英文、中英文标点符号、括号、顿号等)之间必须有1个空格
3. 行间公式使用 \[ \] 符号,需单独成行
4. 所有数学公式必须使用 LaTeX 语法正确书写
5. 示例:
   - 行内公式:速度向量 \(\mathbf{v}\) 在时间 \(t\) 处的值为 \(\mathbf{v}(t)\) 。
   - 多个公式之间用顿号:设 \(x = 1\) 、 \(y = 2\) 、 \(z = 3\) 。
   - 行间公式:
\[
\frac{\partial \mathbf{u}}{\partial t} + (\mathbf{u} \cdot \nabla)\mathbf{u} = -\frac{1}{\rho}\nabla p + \nu\nabla^2\mathbf{u}
\]

6. 正确格式应为:
- 密度 \(\rho\) 为常数
- 速度 \(v(t)\) 满足方程
- 坐标 \((x,y,z)\) 下
- 设 \(x = 1\) 、 \(y = 2\) 、 \(z = 3\) 。
- (\(\nabla \times \mathbf{u} = 0\) ),且通常假设流体不可压( \(\nabla \cdot \mathbf{u} = 0\) 。
- 偶极子(源强度为某个系数 \(\kappa\) )在极坐标可写作:\(\phi_{\text{dipole}} = \kappa \frac{\cos{\theta}}{r}\) 。
-  **无旋流和势函数**:若流动还满足无旋 \(\nabla \times \mathbf{v} = 0\) ,就能定义“**势函数**” \(\phi\) ,并可证明 \(\phi\) 和 \(\psi\) 都满足拉普拉斯方程 \(\nabla^2 \psi = 0\) 、\(\nabla^2 \phi = 0\) 。
- \(\mathbf{u} = (u,v,w)\) ; 
- 把**匀速流 \(\mathbf{v}=(U,0)\) ** 与**偶极子**在原点处**叠加**: 
- 设一个二维平面上有速度大小为 \(U\) 、方向与 \(x\) 轴平行的匀速流:  
- 在二维势流中,点源 (source) 表征流体由某一点向周围辐射流出(或者反之为点汇 sink)。将坐标原点作为点源位置,强度记为 \(m\) (单位:\(\mathrm{m^2/s}\) )。则在极坐标中,点源流的速度满足  
- 匀速流:\(\displaystyle \phi_1 = U\,x,\ \psi_1=U\,y\) ;
- 如选择 \(\kappa = U\,a^2\) (常数 \(a\) 为某特征长度),就会出现一条**封闭的流线**(\(\psi=0\)),对应半径 \(r=a\) 的圆环,代表理想流体绕一根圆柱(半径 \(a\)) 的外流解。  
- 当 \(\sin\theta=0\) ( \(\theta=0,\pi\) )时,可分析流动分离点或合流点等特征。  
- (如 \(\mathrm{Re}\) 、\(\mathrm{Ma}\) 等
- **基本原理:Buckingham \(\Pi\) 定理**  

请严格按照上述形式输出公式,输出前反复检查!

修改后好多了,不过还是有一些,这需要每次都把新的添加到提示词,直到“完美”

对比之前

4 个赞

我习惯让ai用$$包围公式

我之前是用$,但是无论如何限制,o1输出的都是(,我也很无奈


如果不是公式输出成这样,压根不想折腾,他这个就是公式与周围字符没有空格导致无法渲染,难绷了

感谢大佬分享!!!

感觉是openwebui的问题,怎么优化都优化不好,准备弃了

1 个赞

感谢分享

1 个赞