サムネイルの画像

ChatGPT コードが途切れてしまう 対処法

AI

現在は神アップデートによりプロンプトを打ち込む欄の上に表示されるContinue generatingにより簡単に続きのコードや文章等が出力できるようになっています。そのボタンを押すことにより過去に質問した内容についても正常に続きが出力されます。

発端:コードが途切れた後上手く繋がらないことが多いな...

ChatGPTでオセロを作ろうとしたのですが、見た目はできたけど動かなくてJSのコードが途切れてうまくいかないことが多発。でもなんとなく出来るのではないか?と何の根拠もない状態でスタート。

質問:HTML,CSS,JavaScriptでオセロのゲームができるコードを示してください

! 大変申し訳ございませんが、この記事の中でも綺麗に続きが出てくるような方法は出てきません。ゴリ押しです

課題1:コードが途中で途切れてしまう

早速タイトルですが、そもそも途切れなければ一発でコードを提示してくれて凄いなあとなって終わる感じでした。下記のようにCSSを書いている途中で続きを促してもJavaScriptを書き始めてしまうように明らかに虫食いのような箇所が現れてしましいます。

課題1に対して試したこと

1.「続き」や「続き」を含まれる言葉を送信したり、最後の文字を送る、途切れる前の文章を送った上で続きを促す方法

文章などに対しては確度が高い感じを受けましたが、いざコードとなると不確実性が高いなというのが印象でした。確実に綺麗に解決されるものは見つけられませんでした。

2.途切れる直前のコードをコピペして貼り付けるという方法

正直続きのコードを得ることのみを考えた場合の確実性という点では最も良い方法かと思います。
ですがデメリットとしては、前のコードや回答文章との連続性が失われやすいことになります。あくまで最初のプロンプトではなく、そのコードの続きに対する回答の重きが高くなりやすいかと思いますので説明文にはあまり重きを置いていない下記のような場合はとても良い方法かと思います。

・後少しでコードが終わりそうで、そのコードさえあれば良い。
・次の回答の内には収まりそうな場合。

3.ただひたすらに何回も正しく表示されるまで粘る

上記のように正しく少し手前から表示してくれる場合もあります。私の場合は綺麗に続かなことが多かったですが、質問の内容や続きの促しかたによっては精度を高められるかもしれません。この場合ですと、まさに考えている通りのきれいに続きが出力されて連続性も担保されたものになる確率が非常に高いように感じました。

課題2:全くあなじ文章で出力を求めても毎回違うコードが出力される。

そもそも途切れてしまうなら各言語ごとに聞いていけばいいや!と最初は考えました。
当然途切れてしまうなら、一つ一つの出力を短くしようと考えますが、そうは問屋が卸しませんでした😭

新しく質問をする事にクラス名や関数自体が異なるので繋がらない、独立したものになってしまいます。なので一つの質問で完結させなくてはいけませんでした
1つ1つの関数の名前をこちらで定義してどういう関数で、引数の名前から全て与えて細分化すれば少しづつ質問をして繋げて完成できるかもしれませんが、それなら自分で書くよってなりそうなので…

課題2に対して試したこと

HTMLを出力してもらった後に、そのままCSSを質問するのではなくHTMLのコードをコピペしてCSSを訪ねて、同じ手順でJavaScriptのコードも質問する。
→見た目のみ正しく出力されるが、JavaScriptのコードが途切れて課題1と同じことになる。
→各言語の繋がりがない時もあった。

!

質問の仕方によっては正しく出力される可能性もあります

オセロゲーム完成までにとった方法

・ただひたすらにちょうどいいところで途切れるのを待つ

・上手くいくまで質問し続ける

上記の二点でなんとか動くオセロのコードが出力されました。

どちらの手番なのかがわかりにくいのが難点ですが、とりあえず満足です。

条件の難しいボードゲームも作れるかな

こちらがルールを提示して作ってもらおうとした場合にはコードが冗長になり、あまり上手くいかない傾向があるような気がします。こちらのルール提示がヘタクソなだけな気がしますけども…。例えば、QUARTO(クアルト)というボードゲームをルールを提示して作ってもらおうとしたのですが何度やってもうまくいきそうな感じがしませんでした。そもそも二次元上に2パターンある4要素を含む16パターンの駒を描写するのが難しい気がしますが。クアルトのルールはこちらにあります。
QUARTO(クアルト)を作ってと言うふうに質問すると、まとまりのあるコードが出力されるので独自に考えたゲームを作成してもらうのは余程条件を上手に定義しない限り難しい気がしました。

なんとなく惜しそうな感じはしますよね…、それぞれのコマの持つ特徴を二次元上でもうまく描写できるように定義し直してあげれば上手くいくかもしれませんね。

まとめ

最初の質問でうまくいかなかったとしても、何度か繰り返せば行けそうなのか難しそうなのかの判断は上記のようにコードが途切れてしまっているのか、それとも続きを促しても繋がりのないコードになるのかなどは分かりやすい指標になりそうです。いずれにしても、丸々全部クオリティの高いものを作ってもらうには少々難しい気がしました。ですので使用する際には関数をいかに小さくするかや、中々アイデアが浮かばない場合のスパイスや参考として使うのがよいなというのが個人的な感想です。

どうしてもしっかりと毎回全文が欲しいという場合は有料で提供してくれているサービスを利用するか、自分でOpenAI APIを使用して自分で自分用のサービスを作るのが確実かと思います。APIの使用にはお金がかかりますので、利用の際には気をつけていただければと存じます。