ChatGPTについて詳しく解説します
- ChatGPTでプログラムを生成しているのだけど、なぜか途中で止まってしまう
- 一気にコードの全文を出力する方法はないか?
この記事では、以上の疑問にお答えします。
ChatGPTのプログラミングのコード生成機能は画期的なもので、もはやWebサイトを巡って答えを探さなくても、簡単にやりたいことが実装できてしまいます。
HowToブログとしては少し危機感を感じるところでもありますが…
しかし、長文のコードを生成しようとすると、途中で出力が止まってしまう現象がたびたび発生します。
この記事では、途中でコード生成が止まってしまう現象の理由と、その対処方法についてまとめました。
ぜひ、ご参考ください。
あわせて読みたい
目次
この記事のポイント!
- ChatGPTのチャット画面では、文章生成の文字数に制限がある
- 「Continue generating」ボタンで続きを生成できる
- APIを使って文章生成することでも長文コードを生成可能
著:I/O編集部
TipstourのChrome拡張記事を寄稿しました! 工学社さんより、ChatGPT×Chrome拡張機能を使ってより便利にChatGPTを活用する方法をまとめた書籍に、当ブログの記事が本書の1章に掲載されています。 |
【事実】ChatGPTのチャット画面は、一度に800文字ほどしか生成できない
実は、Web版では、一度に出力できる文字数に制限があります。
この制約があるため、長すぎるコードを生成しようとした場合に、途中で止まってしまう場合があるのです。
その文字数制限は、具体的には以下の文字数ほどが目安となります。
- 日本語の文章:800〜1000文字
- 英語のコード:2000〜2500文字
ということで、2500文字を超えるようなコードを生成しようとした場合、チャット画面では途中で生成が止まってしまうという現象が起きます。
実際にはこのような感じです。
ChatGPTにPythonコードの生成を頼んでみました。
比較的多くの処理を一度に実行するコードを作ったので、2500文字ほどの文字数制限に到達してしまい、このようにコードのコメントアウト部分で止まってしまっていることがわかります。
通常の文章なら簡単に続きを生成可能だが…
通常の文章生成の場合、途中で止まった文章の続きを出すことは実はかなり簡単です。
チャットの入力欄にそのまま「続き」と入力するだけです。
これによって、途中で終わった文章の続きがそのまま出力されます。
ただし、プログラム生成、コード生成の場合は少し勝手が違います。
単純に「続き」を押して続きを出力しようとしても、この画面のように、プログラムの出力が途中でバグって表示されてしまうのです。
コード自体は出力されているので、手動で部分部分をコピーしていけばそれでも良いのですが…なんだかスマートじゃないですよね。
これは、ChatGPTのチャット画面の仕様です。
文字数制限で文章が途切れた際に、それまでのマークアップなどが途切れてしまうために、続きの文章の表示がおかしくなってしまうのだと考えられます。
このように一回の文字数制限がある以上、途中でプログラム生成が停止してしまう現象は回避不能です。
【対処方法①】「Continue generating」ボタンを押す
とはいえ、対処方法はあります。
こちらは2023年5月に追加されたばかりの新機能なのですが、文章やコード生成が途中で止まると、このように「Continue generationg」というボタンが表示されるようになっています。
コードが途中で止まってしまった場合は、ここをクリックしてみましょう。
コードの続きから生成が再開しました!
途切れた部分からしっかりと続きが書かれているので、コード自体も一貫性がありますし、そのままコピーも問題なく可能です。
基本的にはこのボタンを押すことで対処するのが良いでしょう。
【対処方法②】APIを使ってコードを生成すればOK
もう1つ、対処方法がありますので、こちらもご紹介しておきますね。
あくまでチャット画面の仕様による問題ですので、OpenAIが提供するChatGPTのAPIを使って、コードを生成すれば、文字数制限は大幅に緩和されます。
APIを使うと、2500文字ほどのコードが一度に出力可能です。
ChatGPTのAPIを利用する方法については、以下の記事でその手順を解説していますので、先にこちらをご覧ください。
プログラミング用途でChatGPTを活用する場合、APIは利用可能な状態にしておくほうが、何かと便利なので、設定しておくことをオススメします。
ChatGPT APIから長文を出力するPythonコード
そしてこちらが、長文を出力するPythonコードです。
api_keyの部分を、上記記事の手順で取得したAPIキーに置き換えて実行してみてください。
promptの中には、生成したいコードの内容を文章で記入します。
import openai #ここに取得したAPIキーを設定します openai.api_key = "****" #プロンプト(チャット内容)を入力します prompt = """・アマゾンのページから電子書籍の情報を取得 ・その情報をSQLite3のDBに格納 ・その情報をWordPress Rest APIでブログに新規記事を投稿 ・ページの内容をChatGPTに送信して書籍の要約文を生成 ・140文字以内の要約分も生成して、Twitterで自動的につぶやく 上記のPythonコードを生成してください。""" #APIリクエストのオプションを設定します response = openai.Completion.create( engine="text-davinci-003", prompt=prompt, max_tokens=3500, #最大トークンの制約上、これぐらいの数値が妥当 n=1, stop=None, temperature=1, top_p=0.5, ) #生成された文章を出力します generated_text = response.choices[0].text print(generated_text)
上記の記事では、3500トークンまでの長さの文章を生成するよう、パラメータを指定しています。
ChatGPTのAPIでは一度に4096トークンまで生成可能ですが、この数字を4096ギリギリに設定すると、上限にひっかかってエラーが頻発することになるので、ここでは一旦、少なめの3500トークンに設定しています。
【結果】実際にAPIからプログラムを生成してみた
ということで、上記のコードを実行して、API経由でChatGPTにプログラムを生成してもらいました。
その結果がこちら。
文字数にすると2459文字で、チャット画面のように800〜1000文字程度で生成が止まるということもありません。
途中で区切られていないので、そのままコピー&ペーストでコードを実行できます。
この方法を使えば、長文のコード生成もスイスイですね!
まとめ
以上、ChatGPTでプログラム生成中に止ってしまう現象の対処方法でした。
この記事のポイント!
- ChatGPTのチャット画面では、文章生成の文字数に制限がある
- 「Continue generating」ボタンで続きを生成できる
- APIを使って文章生成することでも長文コードを生成可能
繰り返しになりますが、API経由でChatGPTを利用できるようにすると非常に便利です。
APIを活用したコードも、ChatGPTが生成してくれるし、至れり尽くせりですね。
その設定手順についてもう一度、以下にリンクを掲載しておきます。
当ブログでは、他にもChatGPTの利用方法や活用方法、自動化のアイデア・テクニックなどをご紹介していますので、あわせてぜひご覧ください!
以上、参考までに。
それでは!