PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Порт llama.cpp в PureBasic через Object Pascal


Порт llama.cpp в PureBasic через Object Pascal

Сообщений 1 страница 2 из 2

1

Приветствую участников форума. Все, наверное, знают о llama.cpp, консольной программе под винду, позволяющей запускать на пк большие языковые модели в формате ггуф. Её исходники написаны на с++, сложном языке программирования. Но вот недавно в сети обнаружился порт лламы.cpp на объектном паскале, языке, который, конечно, несколько сложнее PureBasic, но в то же время проще С++. Исходник порта относительно небольшой - 252 строчки кода (пустые строчки в счёт не идут). Фактически это враппер функций, вызываемых из библиотеки llama.dll. Ссылка на код: https://github.com/ortegaalfredo/fpc-ll … /llama.pas Было бы здорово, если бы на форуме нашлись фанаты PB, которым было бы интересно попробовать преобразовать код паскаля в код PureBasic. Сделал бы сам, но соответствующими навыками, увы, не обладаю. Всем добра.

Отредактировано NikolayKozloff (10.04.2024 00:30:31)

0

2

Нашёл упрощённую имплементацию llama.cpp, сделанную на Дельфи: https://github.com/tinyBigGAMES/Dllama

Минимальный код для общения с оффлайн моделями ИИ:

uses
  System.SysUtils,
  Dllama,
  Dllama.Ext;

var
  LResponse: string;
  LTokenInputSpeed: Single;
  LTokenOutputSpeed: Single;
  LInputTokens: Integer;
  LOutputTokens: Integer;
  LTotalTokens: Integer;

begin
  // init config
  Dllama_InitConfig('C:\LLM\gguf', -1, False, VK_ESCAPE);

  // add model
  Dllama_AddModel('Meta-Llama-3-8B-Instruct-Q6_K', 'llama3', 1024*8, '<|start_header_id|>%s %s<|end_header_id|>',
    '\n assistant:\n', ['<|eot_id|>', 'assistant']);

  // add messages
  Dllama_AddMessage(ROLE_SYSTEM, 'you are Dllama, a helpful AI assistant.');
  Dllama_AddMessage(ROLE_USER, 'who are you?');

  // display the user prompt
  Dllama_Console_PrintLn(Dllama_GetLastUserMessage(), [], DARKGREEN);

  // do inference
  if Dllama_Inference('llama3', LResponse) then
    begin
      // display usage
      Dllama_Console_PrintLn(CRLF, [], WHITE);
      Dllama_GetInferenceUsage(@LTokenInputSpeed, @LTokenOutputSpeed, @LInputTokens, @LOutputTokens,
        @LTotalTokens);
      Dllama_Console_PrintLn('Tokens :: Input: %d, Output: %d, Total: %d, Speed: %3.1f t/s',
        [LInputTokens, LOutputTokens, LTotalTokens, LTokenOutputSpeed], BRIGHTYELLOW);
    end
  else
    begin
      Dllama_Console_PrintLn('Error: %s', [Dllama_GetError()], RED);
    end;
  Dllama_UnloadModel();
end.

Если здесь есть желающие добавить в Purebasic библиотеку функций общения с ИИ, присоединяйтесь к дискорду Dllama: https://discord.gg/tPWjMwK

Отредактировано NikolayKozloff (25.04.2024 20:09:53)

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Порт llama.cpp в PureBasic через Object Pascal