Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Понимание и реализация стриминга токенов в ChatGPT для Delphi-проектов

Delphi , Синтаксис , API реализация

Вопрос, с которым сталкиваются разработчики, работающие с ChatGPT в среде Delphi, заключается в использовании механизма стриминга ответов. Это позволяет отображать генерируемые токены в реальном времени, как это реализовано на официальном сайте ChatGPT. В данной статье мы рассмотрим, как настроить стриминг в библиотеке DelphiOpenAI, чтобы получить подобное поведение.

Проблема

Разработчики, использующие библиотеку DelphiOpenAI для интеграции ChatGPT в свои проекты на Delphi, сталкиваются с трудностями при попытке активировать стриминг. В приведенном коде не удается включить стриминг, в результате чего возникает ошибка EConversionError с сообщением о том, что входное значение не является действительным объектом. Это приводит к возврату пустого или некорректного ответа.

var buf : TStringList;
begin
  ...
  var Chat := OpenAI.Chat.Create(
    procedure(Params: TChatParams)
    begin
      Params.Messages([TChatMessageBuild.Create(TMessageRole.User, Buf.Text)]);
      Params.MaxTokens(1024);
      // Params.Stream(True);
    end);
  try
    for var Choice in Chat.Choices do
    begin
      Buf.Add(Choice.Message.Content);
      Writeln(Choice.Message.Content);
    end;
  finally
    Chat.Free;
  end;
end;

Альтернативный ответ и Подтвержденный ответ

В режиме стриминга ответы от ChatGPT приходят не в виде обычного JSON-объекта, а в специальном формате, который необходимо корректно обработать. Пример такого ответа:

data: {"id": "cmpl-6wsVxtkU0TZrRAm4xPf5iTxyw9CTf", "object": "text_completion", "created": 1679490597, "choices": [{"text": "текст ответа", "index": 0, "logprobs": null, "finish_reason": null}], "model": "text-davinci-003"}

Для реализации стриминга необходимо обновиться до новой версии библиотеки DelphiOpenAI, в которой уже включена поддержка данного режима работы.

Решение проблемы

  1. Убедитесь, что вы используете последнюю версию библиотеки DelphiOpenAI.
  2. Включите стриминг в параметрах запроса, установив свойство Params.Stream(True).
  3. Настройте обработку ответов в формате, специфичном для стриминга, чтобы корректно получать и отображать генерируемые токены.
var buf : TStringList;
begin
  ...
  var Chat := OpenAI.Chat.Create(
    procedure(Params: TChatParams)
    begin
      Params.Messages([TChatMessageBuild.Create(TMessageRole.User, Buf.Text)]);
      Params.MaxTokens(1024);
      Params.Stream(True); // Включаем стриминг
    end);
  try
    while not Chat.HasEnded do
    begin
      var response := Chat.Read(); // Чтение ответа
      // Обработка ответа в формате стриминга
      Writeln(response.Choices[0].Text);
    end;
  finally
    Chat.Free;
  end;
end;

Заключение

Использование стриминга в ChatGPT для Delphi-проектов позволяет добиться более интерактивного поведения, аналогичного официальному сайту ChatGPT. Важно правильно настроить библиотеку и корректно обработать полученные данные. Следите за обновлениями библиотеки и обновляйте свой код в соответствии с лучшими практиками работы с API ChatGPT.

Создано по материалам из источника по ссылке.

Разработчики на Delphi сталкиваются с задачей реализации стриминга токенов в ChatGPT для обеспечения интерактивности, подобной официальному сайту сервиса.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: API реализация ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-05 11:45:04/0.0054450035095215/1