Поступили новые предложения от сообщества OpenAI по поводу проблем, с которыми я сталкиваюсь. Планируете ли вы выпустить обновление по этому вопросу? Предложения следующие.
Предложение 1;
def parse_stream_to_katex(stream: Stream):
"""
Принимает поток OpenAI и заменяет разделители LaTeX от ChatGPT
на разделители KaTeX.
Возвращает текст, а не чанки
"""
last_text = ""
for chunk in stream:
text = chunk.choices[0].delta.content
if text:
# Иногда разделители, такие как \(, могут быть разбиты между двумя чанками.
# Если предыдущий чанк заканчивался на \, добавьте его к текущему чанку
if last_text.endswith("\\"):
text = last_text + text
text = (
text.replace(r"\[", "$$")
.replace(r"\]", "$$")
.replace(r"\(", "$")
.replace(r"\)", "$")
)
last_text = text
# Если текст заканчивается на \, мы не возвращаем его, а включим в следующий чанк
if not text.endswith("\\"):
yield text
Предложение 2:
// MarkdownLaTeXRenderer.js
import React from 'react';
import ReactMarkdown from 'react-markdown';
import remarkGfm from 'remark-gfm';
import remarkMath from 'remark-math';
import rehypeRaw from 'rehype-raw';
import rehypeKatex from 'rehype-katex';
const MarkdownLaTeXRenderer = ({ content }) => {
// Замените \[ на $$ и \] на $$ для обеспечения совместимости
const processedText = content
.replace(/\\\[/g, '$$$') // Заменить все вхождения \[ на $$
.replace(/\\\]/g, '$$$') // Заменить все вхождения \] на $$
.replace(/\\\(/g, '$$$') // Заменить все вхождения \( на $$
.replace(/\\\)/g, '$$$'); // Заменить все вхождения \) на $$
const remarkMathOptions = {
singleDollarTextMath: false,
};
return (
<ReactMarkdown
className="markdown-content"
children={processedText}
remarkPlugins={[[remarkMath, remarkMathOptions], remarkGfm]} // Передайте опции как второй элемент массива
rehypePlugins={[rehypeRaw, rehypeKatex]} // Включите rehypeRaw для HTML, rehypeKatex для LaTeX
/>
);
Когда я просматриваю математические формулы на мобильном устройстве, я не могу увидеть всю формулу целиком (формула слишком длинная). Знает ли кто-нибудь, как решить эту проблему?
Ниже показано правильное отображение на ПК.
Поворот телефона горизонтально? Но почему это заключено в кавычки, и может ли это быть проблемой?
В остальном. Я спросил у ИИ моего форума, и он ответил следующее (не знаю, полезно ли это или полный бред).
Решения для выравнивания длинных уравнений с помощью MathJaxИИ
Jagster:
Форум использует MathJax для отображения математики и уравнений. Иногда уравнение настолько длинное, что не помещается на экране мобильного устройства. Есть ли способ разбить уравнение на несколько строк?
Asiavastaaja:
MathJax не поддерживает автоматический перенос строк для уравнений напрямую, но можно использовать некоторые приемы, чтобы длинные уравнения лучше помещались на экранах мобильных устройств. Вот несколько советов:
Используйте окружение align: Вы можете разбить уравнение на несколько строк с помощью окружения align. Это позволяет выровнять и распределить части уравнения по нескольким строкам. Например:
$$
\begin{align}
a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p + q + r + s + t + u + v + w + x + y + z = 0
\end{align}
$$
Используйте окружение split: Это еще один способ разбить уравнение на несколько строк. Оно особенно полезно, когда нужно разделить уравнение на части без необходимости выравнивания. Например:
$$
\begin{split}
a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p + q + r + s + t + u + v + w + x + y + z = 0
\end{split}
$$
Используйте окружение multline: Это окружение предназначено для длинных уравнений, которые не помещаются в одну строку. Оно разбивает уравнение на несколько строк без выравнивания. Например:
$$
\begin{multline}
a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p + q + r + s + t + u + v + w + x + y + z = 0
\end{multline}
$$
Эти окружения позволяют контролировать отображение уравнений и обеспечивают их читаемость даже на небольших экранах. Помните, что окружения MathJax часто требуют пакета amsmath, который обычно включен по умолчанию в MathJax.
Это отображается нормально, но нет полосы прокрутки, чтобы увидеть всю формулу. Однако в предпросмотре она есть.
В самом посте вы можете увидеть остальную часть только при увеличении масштаба:
В окне предпросмотра при составлении поста, когда SVG рендерится, окно предпросмотра прокручивается вверх. Есть ли настройка, которую можно изменить, чтобы прокрутка возвращалась к нижнему положению?
Каждый раз прокручивать вниз при редактировании математики раздражает моих лекторов, но я как-то справляюсь.
После полного обновления/пересборки математика отображается корректно.
Для тех, кто ещё не слышал: этот плагин теперь включён в ядро. Пожалуйста, ознакомьтесь с пересборкой/ревизией 2 из 3 в этом посте, чтобы убедиться в этом.
Сделано! Извините за беспокойство. Теперь у вас всё должно работать.
Этот плагин теперь включён в состав ядра Discourse как часть Bundling more popular plugins with Discourse core. Если вы размещаете Discourse самостоятельно и используете этот плагин, вам нужно удалить его из вашего файла app.yml перед следующим обновлением.
У меня проблема с отображением математических символов в ответах ИИ. Он выдает ответы в формате LaTeX, хотя я уже указал соответствующий запрос в промпте. Из-за этого появляются изображения, будто символы повреждены. Можете ли вы решить эту проблему? Пример:
A = \begin{pmatrix} x & -1 \\\\ z & 2y \end{pmatrix}
\boxed{
x = 0, \quad y = 4, \quad z = 4
}
\begin{cases}
A_{11} = B^T_{11} \Rightarrow x = y - z \\\\
A_{12} = B^T_{12} \Rightarrow -1 = -1 \quad (\text{верно автоматически}) \\\\
A_{21} = B^T_{21} \Rightarrow z = y \\\\
A_{22} = B^T_{22} \Rightarrow 2y = 8 \\\\
\end{cases}
Ранее я уже делился решениями с сообщества OpenAI.