Open 2RiniaR opened 1 year ago
ChatGPT への SYSTEM_CONTEXT
(指示) に 2000文字を超えた場合は一度そこで生成を止めて、続きからと言われたら続けること
みたいなルールを記述すればそのようなオプションを用意せずとも出来そう.
v1.7.0 からはチャットモードも history
に対応しているので
現在使用しているchatgpt crateには、max_tokens
オプションが実装されていない(参考: https://github.com/Maxuss/chatgpt_rs/issues/59)
また、max_tokensオプションによる振る舞いは未検証のため、不明
GPT-3.5に以下のシステムコンテキストを与え、質問を行った。
User:
回答時は以下のルールに従うこと.
- 回答が400字を超える場合は「...」 と末尾に付け、一度「続きから」と言われたら続く内容を示す
- 一般的に知られている単語は説明しない
Assistant:
了解しました。指示通りに回答いたしますので、質問をどうぞお聞きしてください。
User:
C言語の歴史について1000字以上で説明してください
しかし、期待する結果は得られなかった。具体的には、900字程度の回答があり、文字数に関する指令を無視する形となった。
先の検証結果 に基づいて、ChatGPT が文字数制限を理解できないことを前提とします。 2,000 文字に到達する直前の区切り文字でメッセージを分割して、遅延して後のメッセージを送信する形ではどうでしょうか。 これならばサーバーがデータベースを保持する必要はありませんし、目的も達成できます。 しかしながら、Discord の 2,000 文字基準を Rust でうまく表現できるかは不明です。
先の検証結果 に基づいて、ChatGPT が文字数制限を理解できないことを前提とします。 2,000 文字に到達する直前の区切り文字でメッセージを分割して、遅延して後のメッセージを送信する形ではどうでしょうか。 これならばサーバーがデータベースを保持する必要はありませんし、目的も達成できます。 しかしながら、Discord の 2,000 文字基準を Rust でうまく表現できるかは不明です。
ご意見ありがとうございます。 しかし、その方法は以下のようなケースにおいてサービスの欠陥となりうるため、避けたいと思っています。
そのため、続きを送信する手段には必ず手動による操作が必要となるようにしたいです。
検証内容および結果
max_tokensオプションによる制限
現在使用しているchatgpt crateには、
max_tokens
オプションが実装されていない(参考: https://github.com/Maxuss/chatgpt_rs/issues/59)また、max_tokensオプションによる振る舞いは未検証のため、不明 @2RiniaR
max_tokens
については既に実装されていて, Option<u32>
を受け入れるように私がプルリクエストを出したのでそれなりに使えるはずです. ( https://github.com/Maxuss/chatgpt_rs/pull/66 )
振る舞い
@ichiyoAI -p 限界LTというLT会を開催するための具体的な準備をリストアップしてください。
などのメッセージに対して、そのレスポンスが2000字を超えたとき、2000文字目までのレスポンスのみを送信するようにする。-p
はオプションの例である。 また、このレスポンスに対して「続きをお願いします」などのメッセージが送られたとき、その続きを2000字まで表示する。動機