円グラフを描くGPTで、円グラフのタイトルやラベルが文字化けしたので、日本語フォントをアップロードし、円グラフを描く際、添付の日本語フォントを使うように「指示」欄の内容を書き換えたが文字化けは直らなかった。
そこで、ChatGPT 4oにその原因と対策を聞いたところ、回答は下記の通りだった。
1. 言語の解釈ミス
GPTは多言語対応ですが、日本語の特定の文脈や曖昧な表現を正確に理解できない場合があります。指示が複雑すぎたり、文脈が不明確な場合、GPTが誤解して一部の指示を無視することがあります。
対策:
- 指示をできるだけ具体的で明確に書く。
- 長い文や複雑な表現を避け、簡潔な日本語を使用する。
- 必要に応じて箇条書きを使い、指示内容を段階的に明示する。
2. 技術的制約や機能の限界
GPTsのGPTは特定のタスクや機能に制約がある場合があり、指示に含まれる一部の操作やリクエストがシステムの対応範囲外である可能性があります。
対策:
- 指示がGPTsのGPTの機能範囲内であるか確認する。
- 機能やタスクがシステムのサポート対象であるかどうか、公式ドキュメントを参照する。
3. コンテキストの欠如
指示内容が単独では意味が伝わりにくい場合、システムが一部の指示を理解できず無視することがあります。これは特に、日本語の省略表現や複雑な依存関係がある場合に起こりがちです。
対策:
- 指示に関連する背景情報やコンテキストを明確に示す。
- 複数の指示が関連している場合、各指示がどのように連携しているかを具体的に書く。
4. システム側のバグやラグ
GPTsのGPTはまだ発展途上であり、バグや処理の遅れ、あるいはサーバーの負荷により指示が正しく処理されないこともあります。
対策:
- 同じ指示を再度入力して確認する。
- 場合によっては、リロードや再ログインして問題が解消するか試してみる。
5. 指示の順序や優先順位
指示が複数ある場合、特定の順序で実行されなければならないにもかかわらず、その順序が明示されていないため、一部の指示が無視されることがあります。
対策:
- 複数の指示がある場合、それぞれの順序をはっきりと示す。
- 必要な順序やタイミングを説明する。
以上を意識することで、GPTsのGPTで日本語の指示が正しく実行される確率を高めることができるでしょう。
原因として、「1. 言語の解釈ミス」、「3. コンテキストの欠如」、「5. 指示の順序や優先順位」の可能性があると思ったが、いずれにしろ、多くの試行を繰り返さないといけない可能性が高いので、現状の「指示」の内容を添付文書としてアップロードし、「提案してもらった対策に従って、添付文書の指示を修正してください」とChatGPT 4oにお願いした。
日本語フォントを使用することを指示する箇所は下記のように書き換えられた。
(コードの部分はコピーし「***」で挟んで該当箇所に挿入した。)
円グラフで表示する文字列(ラベルやタイトルなど)には、以下のコードを用いてアップロードしているNotoSansJP-Light.ttfファイルの日本語フォントを使用してください。
***
import matplotlib.pyplot as plt
from matplotlib import font_manager#アップロードされたフォントファイルのパスを指定
font_path = ‘NotoSansJP-Light.ttf’ # アップロードしたフォントファイルのパスを指定
font_prop = font_manager.FontProperties(fname=font_path)#フォントをグラフに適用
plt.title(‘グラフのタイトル’, fontproperties=font_prop)
plt.xlabel(‘X軸のラベル’, fontproperties=font_prop)
plt.ylabel(‘Y軸のラベル’, fontproperties=font_prop)
***
上記のように書き換えて実行したが、ラベルの一部がまだ文字化けしているとChatGPT 4oに伝えたところ、追加のコードが提案された。
# textprops を使ってラベルに日本語フォントを適用
plt.pie(sizes, labels=labels, colors=colors, autopct=’%1.1f%%’, startangle=90, counterclock=False,
textprops={‘fontproperties’: font_prop})
このコードの追加により文字化けは解消された。
コードを「指示」欄に入れなくても、文字化けしない事例もあるので、日本語だけで指示する場合の正解は見つけられていない。
(参考)
日本語より英語で指示した方が良いというようなことも聞いたことがあるので、最後に、Genspark Autopilot Agentに、その真偽のほどを聞いておいた。
ChatGPTには独自のGPTを構築できるGPTsという機能がありますが、GPTの「指示」の欄に入力する内容は、日本語で記述するより、英語で記述した方が、指示内容がより忠実に実行されるというのは本当ですか
(6分後の最終結論)
147の情報源を検討した結果、英語の指示が日本語の指示よりも忠実に実行される可能性があることが示唆されました。特に、ChatGPTが主に英語のデータで訓練されているため、英語の指示がよりスムーズに処理されることが示されています。日本語の複雑さや曖昧さが、モデルの正確な理解を妨げる可能性があります。ただし、日本語の指示も適切に設定すれば実行可能であり、特定の状況では日本語でも高い精度を発揮することがあります。したがって、英語の指示がより忠実に実行されるという主張は、状況によって異なる可能性があるものの、全体として支持されると言えます。
単に日本語を英語に翻訳しただけでは効果がないことがあったので、英語で指示するとしても、英文を作り直す必要がありそう。