169 похожих чатов

Всем привет. Пару дней назад я задавал вопрос о том как

реализовано взаимодействие с бэком в клиенте ChatGPT.
(вот тут https://t.me/js_ru/505732 )
Были выдвинуты некоторые гипотезы, но они не подтвердились.

В итоге я нашёл вот такую статью которая описывает как якобы это реализовано.
https://blog.theodormarcu.com/p/how-chatgpt-streams-responses-back

"Якобы" т.к. я не смог проверить описанное. В статье указано то что используется Server-sent events (SSE), но не указано как увидеть его работу в Chrome Devtools.

Есть идеи как это проверить? А именно где/как посмотреть обмен данными через SSE?

17 ответов

24 просмотра

вот тут можно попробовать: https://sse-demo-dot-rd---product.uc.r.appspot.com/flights/

Виталий- Автор вопроса
Anton Piliugin
вот тут можно попробовать: https://sse-demo-dot-rd...

Спасибо. Тут вижу. Но мой вопрос он про клиент ChatGPT. Там я не вижу ничего в EventStream. Просто пусто на вкладке.

Виталий
Спасибо. Тут вижу. Но мой вопрос он про клиент Cha...

в консоли добавьте обработчик событий на события EventSource

Виталий- Автор вопроса
Anton Piliugin
в консоли добавьте обработчик событий на события E...

А как это сделать? Согласно документации для подписки на события нужен доступ к инстансу EventSource.

Виталий
А как это сделать? Согласно документации для подпи...

В примере с тем же сайтом с таблом const evtSource = new EventSource('https://sse-demo-dot-rd---product.uc.r.appspot.com/flights/stream') evtSource.onmessage = console.log

Виталий- Автор вопроса
Anton Piliugin
В примере с тем же сайтом с таблом const evtSource...

Попробовал. Ничего не выводится. const evtSource = new EventSource('https://chat.openai.com/backend-api/conversation') evtSource.onmessage = console.log https://chat.openai.com/backend-api/conversation - это урл появляющийся в запросе который происходит при отправке вопроса

Виталий
Попробовал. Ничего не выводится. const evtSource ...

посмотрите как выглядит оригинальный запрос, какие там заголовки отправляются

Виталий- Автор вопроса

эту библиотеку попробуйте использовать: https://github.com/mpetazzoni/sse.js

Виталий- Автор вопроса
Anton Piliugin
эту библиотеку попробуйте использовать: https://gi...

Добавил этот полифил в на страницу. Подменяю EventStream этим полифилом. Подписываюсь на события. Ничего) В чём была идея? Зачем надо было эту либу использовать? Какой у вас ход мыслей?

Виталий
Добавил этот полифил в на страницу. Подменяю Event...

посмотрите оригинальные параметры запроса, что там передаётся в POST data

Виталий- Автор вопроса
Виталий
Посмотреть и что затем сделать?)

понять что нужно отправлять в запросе (https://github.com/mpetazzoni/sse.js#making-a-post-request-and-overriding-the-http-method)

Виталий- Автор вопроса
Anton Piliugin
понять что нужно отправлять в запросе (https://git...

Сложно. На стэковерфлоу пишут что в чат гепт SSE уже заполифилено, и якобы поэтому вкладка EventStream пуста (она умеет отображать только нативные события SSE).

Через Fiddler Classic пустите браузер и смотрите что летает от сервера к клиенту только емнип для HTTPS соединений надо ставить рут сертификат фиддлера (но могу ошибаться)

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта