数学とAIの回避策

私が経験している問題に関して、OpenAIコミュニティから新しい提案がありました。これに関してアップデートを行う予定はありますか?提案は以下の通りです。

提案1:

def parse_stream_to_katex(stream: Stream):
    """
    OpenAI Streamを受け取り、ChatGPTのLaTeX区切り文字をKateXのものに置き換えます。
    チャンクではなくテキストをyieldします。
    """
    last_text = ""
    for chunk in stream:
        text = chunk.choices[0].delta.content
        if text:
            # 区切り文字 \( などが2つのチャンクに分割されることがあります。
            # 前のチャンクが \ で終わる場合は、それをこのチャンクに追加します。
            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]} // オプションを配列の2番目の要素として渡します
        rehypePlugins={[rehypeRaw, rehypeKatex]} // HTMLの場合はrehypeRaw、LaTeXの場合はrehypeKatexを含めます
    />
);

};

export default MarkdownLaTeXRenderer;

「いいね!」 1

そして、エンドユーザーとして…私はそのためにシステムプロンプト(OpenAI)を使用しています。

数式が独自の行または章にある場合、\(\) を独自の行の前後に変更します。$$ はかなり信頼性があります。

しかし、単一の $ でインラインで同じことを行う必要がある場合…それはほとんどの場合失敗します。

それが自動的に行われるようになれば…さらに良いです。

「いいね!」 1

モバイルデバイスで数式を表示すると、数式全体が正しく表示されません(数式が長すぎます)。この問題の解決策を知っている人はいますか?
image
以下はPCでの正しい表示です。
image

電話を横向きにすることですか?しかし、なぜ引用符で囲まれ、それが問題になる可能性があるのでしょうか?

それ以外にも、フォーラムのAIに尋ねたところ、次のような回答がありました(役立つか、まったくの的外れかはわかりません)。

数式組版MathJaxを使用した長い数式を揃えるためのソリューション AI

Jagster:
フォーラムでは、数学や数式にMathJaxを使用しています。時々、数式が長すぎてモバイル画面に収まらないことがあります。数式を複数行に分割する方法はありますか?

Asiavastaaja:
MathJaxは数式の自動改行を直接サポートしていませんが、長い数式がモバイル画面に収まるようにするためのいくつかのテクニックを使用できます。以下にいくつかのヒントを示します。

  1. 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}
    $$
    
  2. 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}
    $$
    
  3. multline 環境を使用する: この環境は、1行に収まらない長い数式用に設計されています。配置なしで数式を複数行に分割します。たとえば、次のようになります。

    $$
    \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 でデフォルトで有効になっています。

@Jagster これらは良い解決策になるはずです。当初は数式に横スクロールバーを設定したかったのですが、うまくいきませんでした。

.math-tex {
    overflow-x: auto;
    max-width: 100%;
    padding: 5px 0;
    display: block;
}

Google スプレッドシートから Meta Discourse に数式をコピーするのに問題があります。数式が正しくレンダリングされていないようです。

NPV=CFt * [1-1(1+r)Tr]- CFo= 84,000 * [1-1(1+13%)713%]- 385,000 = $-13,500

PI = 1 + NPVCFo = 1+ n=1784,000(1,13)n - 385,000385,000 ~ 0,965

$%\\でエスケープする必要があると思います。
NPV=CFt * [1-1(1+r)Tr]- CFo= 84,000 * [1-1(1+13\\%)713\\%]- 385,000 = \\$-13,500

こちらで確認してみましょう。

NPV=CFt * [1-1(1+r)Tr]- CFo= 84,000 * [1-1(1+13\\%)713\\%]- 385,000 = \\$-13,500
PI = 1 + NPVCFo = 1+ n=1784,000(1,13)n - 385,000385,000 ~ 0,965


レンダリングは問題ありませんが、数式全体を表示するためのスクロールバーがありません。ただし、プレビューには表示されます。
投稿では、ズームしないと他の部分が見えません。

「いいね!」 1

投稿を作成中のプレビュー画面で、SVGがレンダリングされるとプレビュー画面が上にスクロールします。スクロールを一番下に戻す設定はありますか?

数式を編集するたびに下にスクロールしなければならないのは、私の講師を困らせますが、私はなんとかやっています。

アクティビティで「非推奨」という言葉をいくつか見かけました。

大規模な数学データベースがあり、正常にレンダリングされているインスタンスにとって、これが何を意味するのか誰か説明していただけますでしょうか。

フルアップデート/リビルド後、数学のレンダリングは問題なく行われているようです。

まだ聞いていない方のために、このプラグインは現在コアにバンドルされています。これを示すには、この投稿のリビルド/改訂3/3を参照してください。

参加しました! :+1: ご心配をおかけして申し訳ありません。これで大丈夫なはずです。

:partying_face: このプラグインは、Bundling more popular plugins with Discourse core の一部として、Discourseコアにバンドルされるようになりました。セルフホストでプラグインを使用している場合は、次回のアップグレード前に app.yml から削除する必要があります。

「いいね!」 3

AIの回答で数学の文字の問題が発生しています。必要なプロンプトを入力しても、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{benar otomatis}) \\
A_{21} = B^T_{21} \Rightarrow z = y \\
A_{22} = B^T_{22} \Rightarrow 2y = 8 \\
\end{cases}
\]

以前、OpenAIコミュニティから解決策を共有しました。

Hi @ozkn

私もこの問題を抱えています。私のおすすめは以下の通りです。

  • AIプロバイダーでアカウントにサインアップする
  • AIアカウントに以下を伝える

今後の回答のために、DiscourseはMathJax/Katex $…$ $$…$$ のインラインまたは複数行セントリックフォーマットと互換性があることを覚えておいてください。

  • AIアカウントにログインすると、出力がコピー&ペーストしやすくなるはずです。
最高の記憶を維持するためにプッシュし続ける必要があるかもしれません
「いいね!」 3

最後の点に付け加えると、数式通貨を混在させる場合は、次のことを覚えておいてください。

  • $...$ = 数式
  • \\$ = 文字通りのドル記号

したがって:
$x+1$ costs \\$5.x+1 の数式が表示され、価格は $5 と表示されます。

これだけです。数式は$、お金は\\$です。

「いいね!」 2

詳細ペインのタイトルでは数式をレンダリングできないことを、ChatGPTに記憶させるためのもう一つの良い方法です。

これらのハックはもう必要ありません。ネイティブでサポートされています。

「いいね!」 1