Хоча визначення схеми складне, у мене є доступна функція Node.js, яка перевіряє, чи правильний документ чи ні.

Якщо ви можете визначити функцію, яка визначає, який текст буде дійсним наступним, ви можете використовувати її, щоб обмежити модель лише передбачити дійсний продовження.

З моделями, які можна запускати локально через HuggingFace Transformers, наприклад LLaMA 2 від Meta, prefix_allowed_tokens_fn визначить (враховуючи номер партії та маркери на даний момент), які маркери слід дозволити наступним чином. Щось схоже на такий наступний зразок має бути достатнім:

def allowed_fn(b, ts):
    якщо ts[-1] у whitespace_ids:
        return begin_with_s_ids
    інакше:
        return all_allowed_ids

...

model.generate(input_ids=input_ids, prefix_allowed_tokens_fn=allowed_fn, num_beams=3, ...)

Tokenizer матиме функції, необхідні для отримання ідентифікаторів маркерів і їх текстове представлення (наприклад)

Через API OpenAI еквівалент буде logits_bias, але я б не рекомендував використовувати таку віддалену модель, оскільки це вимагало б повторного перемикання між вашим кодом і OpenAI API із завершенням одного маркера.


Як альтернатива, це може допомогти спростити форматувати в те, що йому легше зрозуміти, а потім вручну розібрати його у формат JSON.

Наприклад, markdown підтримує багато функцій, які ви хочете, є досить поширеним, щоб модель бачила його багато, і розширення, ймовірно, будуть можливими за допомогою кількох наочних прикладів.

Previous Article

Як я можу заохотити ChatGPT бути більш "неприємним" чи твердо ставитися до того, що висловив, замість того, щоб відступити, коли кажуть, що це неправильно?

Next Article

Write a Comment

Leave a Comment

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *