NON906 / sd-webui-chatgpt

This is a repository for conversations using OpenAI API (compatible with ChatGPT) or llama.cpp in Stable Diffusion web UI.
MIT License
39 stars 7 forks source link

How can i resolve this? #8

Open onexzero opened 6 months ago

onexzero commented 6 months ago

This model's maximum context length is 4097 tokens. However, your messages resulted in 4112 tokens (3992 in the messages, 120 in the functions). Please reduce the length of the messages or functions.

The above error occurs even while having a conversation with short sentences.

NON906 commented 6 months ago

This number of tokens includes ALL conversation and system messages. An error may occur even if the last statement is short.

If the error happens even in a short conversation, please give more details.

onexzero commented 6 months ago

The error seems to occur regardless of the length of the sentence. I feel like it has something to do with the model's response.

NON906 commented 6 months ago

ALL conversation also includes the model's response. In the current version, it would be best to start the conversation again. I've tried various things, but all I can do is get a summary of the past content, so it's best to avoid long conversations.

onexzero commented 6 months ago

Could this error be related to the abnormal response of the model? Even after testing it several times, it doesn't seem to have much to do with the length of the sentence.

NON906 commented 6 months ago

Is there any way I can check this error?

onexzero commented 6 months ago

First, ask your model to pretend to be a specific person. Also, ask them to answer in the first person, from that character's perspective, and to keep their answers brief. And as the conversation continues, the AI asks questions that are difficult to answer. This error occurs frequently when doing this, so please test it. In my experience, it doesn't seem to have much to do with the length of actual conversational sentences.

NON906 commented 6 months ago

Could you please show me the conversation log? In particular, I would like to know examples of "questions that are difficult to answer".

onexzero commented 6 months ago

Ok. I'll try

onexzero commented 6 months ago

This is the conversation where an error occurred. Sorry for the Korean language. Since it was difficult to reproduce by typing the conversation directly, I tried to reproduce it by typing in an Internet article. The part in bold is the model's answer.

다음 내용을 이미지로 만들지 말고 요약만 할것

이미지를 생성하지 않고 요약만 할 것을 요청하셨습니다. 따라서 다음은 요약입니다.

(타이베이=연합뉴스) 윤고은 특파원 김철문 특파원 = 13일 열린 제16대 대만 총통 선거에서 집권 민주진보당(민진당)의 친미·독립 성향 라이칭더 후보가 승리했다. 대만해협을 둘러싼 미중간 첨예한 힘겨루기 와중에 치러져 '미중 대리전'으로 평가된 이번 대선에서 대만 민심은 중국이 아닌 미국을 선택한 셈이다. 대만과 미국간 협력 관계가 더 공고해지면서 향후 대만해협 등을 둘러싼 미중 갈등의 파고가 더 높아질 전망이다.

대만에서 열린 제16대 대통령 선거에서 민주진보당의 라이칭더 후보가 승리하였습니다. 이번 선거에서 대만의 민심은 중국이 아닌 미국을 선택한 것으로 평가되고, 대만과 미국 간의 협력 관계가 강화되면서 대만해협 등을 둘러싼 미중 갈등이 더 심화될 것으로 전망됩니다.

대만 중앙선거관리위원회에 따르면 이날 오후 9시58분(현지시간) 총통 선거 개표가 완료된 가운데 라이칭더 총통·샤오메이친 부총통 후보가 558만6천표, 득표율 40.05%를 기록했다. 친중 제1 야당 국민당 허우유이 총통·자오사오캉 부총통 후보가 467만1천표, 33.49%를 기록했다. 제2 야당인 중도 민중당 커원저 총통·우신잉 부총통 후보는 369만표를 얻어 득표율은 26.46%였다.

대만 중앙선거관리위원회에 따르면, 라이칭더 후보는 558만6천표, 득표율 40.05%를 기록하여 총통으로 선출되었습니다. 국민당의 후보는 467만1천표, 33.49%의 득표율을 기록하였고, 민중당의 후보는 369만표, 26.46%의 득표율을 기록하였습니다.

대만에서 시민의 손으로 직접 총통이 선출되는 것은 1996년 이래로 이번이 8번째다. 대만 총통의 임기는 4년이며 중임할 수 있다. 대만 국민은 1996년 직선제 도입 후 2000년부터 민진당과 국민당 정권을 8년 주기로 교체하며 심판해왔다. 그러나 이번에 민진당이 처음으로 이런 '공식'을 깼다. 라이 당선인은 타이베이의 선거 캠프에서 가진 당선 기자회견에서 "지구촌 첫 대선서 대만이 민주진영 첫 번째 승리를 가져왔다"고 강조했다.

1996년 이후 대만에서 시민의 투표로 직접 총통을 선출하는 것은 이번이 8번째입니다. 대만 총통의 임기는 4년이며 중임이 가능합니다. 대만 국민은 1996년 직선제 도입 이후 2000년부터 민진당과 국민당 정권을 8년 주기로 교체하며 심판해왔습니다. 그러나 이번에는 민진당이 처음으로 이러한 주기를 깨는 결과를 가져왔습니다. 라이칭더 당선인은 타이베이에서 가진 당선 기자회견에서 대만이 민주 진영으로서 첫 번째 승리를 차지했다고 강조하였습니다.

그러나 민진당은 대선과 같이 실시된 입법위원(국회의원) 선거에서도 113석 중 과반을 확보하지 못해 국정 운영에 부담이 불가피할 전망이다. 라이 당선인은 "국회에서 과반을 넘지 못한 것은 우리의 노력이 부족했다는 것을 상징한다"고 언급했다. 그러면서 "국민이 기대하는 것은 능력있는 정부와 효율적인 견제와 균형"이라며 "저는 이 새로운 국민의 뜻을 충분히 이해하고 완전히 존중한다"고 말했다.

그러나 민주진보당은 대선과 함께 실시된 입법위원(국회의원) 선거에서도 113석의 과반을 확보하지 못하여 국정 운영에 어려움을 겪을 것으로 예상됩니다. 라이칭더 당선인은 "국회에서 과반을 넘지 못한 것은 우리의 노력이 부족했다는 것을 상징한다"고 언급하였습니다. 그러면서 "국민이 원하는 것은 능력 있는 정부와 효율적인 감시와 균형"이라며 "저는 이 새로운 국민의 의지를 충분히 이해하고 완전히 존중한다"고 말하였습니다.

라이 후보 득표율 40%는 직전 2020년 선거 때 차이잉원 현 총통이 57%(817만표)를 얻어 약 264만표 차이로 재선에 성공한 것과는 차이가 있다. 허우 후보는 개표 94%가 진행 중이던 오후 8시가 조금 넘어 지지자들 앞에 나와 패배를 공식 인정했다.

라이칭더 후보의 40%의 득표율은 직전 2020년 선거 때 차이잉원 현 총통의 57%에 비해 차이가 있습니다. 차이잉원 총통은 약 264만표의 차이로 재선에 성공했지만, 이번에는 라이칭더 후보가 선출되었습니다. 허우 후보는 개표가 94% 진행 중이던 오후 8시가 조금 넘어서지만, 이미 지지자들 앞에 나와 패배를 공식적으로 인정하였습니다.

그는 "제가 여러분을 실망하게 해드렸다. 심심한 사과의 말씀을 드린다. 죄송하다"며 고개를 숙였다. 그러면서 "새로운 민진당 정부가 미국-중국-대만 관계를 잘 맺어 대만 국민 생활이 안정을 이루게 해달라"며 "지난 8년간 정부가 잘못한 부분에 대해 선거를 통해 국민의 소리를 충분히 들었을 것이다. 청렴하고 효율적인 국가를 만들었으면 좋겠다"고 당부했다.

허우 후보는 "저는 여러분을 실망시켰습니다. 진심으로 사과의 말씀을 드립니다. 죄송합니다"라며 머리를 숙였습니다. 그는 "새로운 민주진보당 정부가 미국-중국-대만 관계를 잘 조율하여 대만 국민의 생활을 안정적으로 만들어주기를 바랍니다"라며 "지난 8년 동안 정부가 실수한 부분에 대해 선거를 통해 국민의 목소리를 충분히 들어왔을 것이라고 믿습니다. 우리는 청렴하고 효율적인 국가를 만들기를 바랍니다"라고 당부하였습니다.

이번 선거에서는 3위 커 후보의 '약진'이 두드러졌다. 360만표 이상을 얻은 만큼, 접전 끝 패한 허우 후보로서는 지난해 11월 성사됐던 국민당과 민중당간 후보 단일화 합의가 이견으로 인해 끝내 불발된 것이 치명타가 됐다. 대만 전문가들은 2030의 표심이 이번 선거 주요 변수가 될 것으로 관측됐는데 실제로 이들의 지지를 업은 커 후보가 애초 여론조사를 기초로 한 예상보다 높은 27%에 육박하는 득표율을 기록했다.

이번 선거에서는 3위로 나선 커원저 후보의 약진이 두드러졌습니다. 360만표 이상을 획득한 만큼, 허우 후보와의 접전에서 패배한 이유로는 지난해 11월 국민당과 민중당 사이의 후보 단일화 합의가 이견으로 인해 불발되었기 때문이었습니다. 대만의 전문가들은 2030 세대의 표심이 이번 선거의 주요 변수가 될 것으로 예측하고 있었는데, 실제로 커원저 후보는 예상보다 높은 27%에 육박하는 득표율을 기록하여 이들의 지지를 높이는데 성공하였습니다.

대선을 앞둔 미국 정치권에서 전혀 뜻밖의 역사 논쟁이 벌어지고 있다. 1861~1865년 있었던 남북전쟁의 원인 중에 흑인 노예 문제가 있었느냐는 것이다. 미국 공화당 경선 현장마다 후보들은 “‘남북전쟁의 원인’에 대한 입장을 밝히라”는 요구를 받고 있다. 우경화된 일부 유권자들이 후보들에 대한 사상검증에 나서고 있는 셈이다.

대선을 앞둔 미국 정치권에서 예상치 못한 역사적 논쟁이 일어나고 있습니다. 이는 1861년부터 1865년까지 진행된 남북전쟁의 원인 중 흑인 노예 문제에 대한 논의입니다. 미국 공화당 경선 현장에서는 후보들마다 "남북전쟁의 원인에 대한 입장"을 밝힐 것을 요구받고 있습니다. 이로 인해 일부 유권자들은 후보들의 사상과 입장을 심층적으로 검증하고 있는 상황입니다.

도널드 트럼프 후보는 이 같은 질문에 “너무 많은 사람이 죽었고 그것은 재앙이었다”, “만약 협상이 됐다면 에이브러햄 링컨이 누군지 당신은 모르겠지만 그것은 괜찮다”고 했다. 전쟁까지 안가도 협상을 통해서 해결될 수 있는 문제였고 그랬다면 링컨은 역사에 큰 이름을 남기지 못했을 것이라는 이야기를 한 것이다.

도널드 트럼프 후보는 이와 같은 질문에 대해 "너무 많은 사람들이 죽었고, 그것은 재앙이었습니다"라고 말하며, "만약 협상이 이루어졌다면, 에이브러햄 링컨이 누군지 알지 못할지도 모르겠지만, 그건 괜찮다"라고 언급하였습니다. 그는 전쟁까지 가지 않고 협상을 통해 문제를 해결할 수 있었으며, 그렇다면 링컨은 큰 역사적 이름을 남기지 못한 것일지도 모른다는 이야기를 한 것입니다.

[ERROR]이에 앞서 니키 헤일리 후보도 “남북전쟁의 원인이 무엇이냐”는 한 유권자 질문에 “기본적으로 정부가 어떻게 운영되느냐의 문제였다고 생각한다. 자유와 더불어, 사람들이 할 수 있었던 것과 할 수 없었던 것”이라고 모호하게 답했다. 당시 에이브러햄 링컨 대통령의 노예제 폐지 결정보다는 단지 정부 운영 방식에 대한 견해차 때문에 전쟁이 일어났다는 생각을 드러낸 것이다.

Exception in thread Thread-195 (send_thread_func): Traceback (most recent call last): File "C:\Users\smbae\AppData\Local\Programs\Python\Python310\lib\threading.py", line 1016, in _bootstrap_inner self.run() File "C:\Users\smbae\AppData\Local\Programs\Python\Python310\lib\threading.py", line 953, in run self._target(*self._args, *self._kwargs) File "F:\stable-diffusion-webui\extensions\sd-webui-chatgpt\scripts\main.py", line 286, in send_thread_func chatgpt_generate_result, chatgpt_generate_prompt = chat_gpt_api.send(text_input_str) File "F:\stable-diffusion-webui\extensions\sd-webui-chatgpt\scripts\chatgptapi.py", line 84, in send self.chatgpt_response = openai.ChatCompletion.create( File "F:\stable-diffusion-webui\venv\lib\site-packages\openai\api_resources\chat_completion.py", line 25, in create return super().create(args, **kwargs) File "F:\stable-diffusion-webui\venv\lib\site-packages\openai\api_resources\abstract\engine_apiresource.py", line 155, in create response, , api_key = requestor.request( File "F:\stable-diffusion-webui\venv\lib\site-packages\openai\api_requestor.py", line 299, in request resp, got_stream = self._interpret_response(result, stream) File "F:\stable-diffusion-webui\venv\lib\site-packages\openai\api_requestor.py", line 710, in _interpret_response self._interpret_response_line( File "F:\stable-diffusion-webui\venv\lib\site-packages\openai\api_requestor.py", line 775, in _interpret_response_line raise self.handle_error_response( openai.error.InvalidRequestError: This model's maximum context length is 4097 tokens. However, your messages resulted in 4272 tokens (4152 in the messages, 120 in the functions). Please reduce the length of the messages or functions.

--

NON906 commented 6 months ago

When I checked on the page below, There were about 4000 tokens in the entire conversation. https://platform.openai.com/tokenizer

The upper limit for gpt-3.5-turbo is 4096 tokens, so it must have been exceeded when replying.

onexzero commented 6 months ago

That might be possible. However, this is an intentionally long sentence entered to create an error. However, in my experience, I have seen the same error many times in conversations consisting of much shorter sentences than this. If there is a feature that automatically logs conversations, please let me know.

NON906 commented 6 months ago

Added and committed the feature to automatically save logs.

onexzero commented 6 months ago

Thanks!