
{
guidance}
Хотел бы поделиться инструментами, которые сам часто использую. Начну с прекрасного тула для ЛЛМок, позволяющего структурировать выходные данные. Называется он Guidance. На самом деле это больше чем просто контроль аутпута, это целая парадигма взаимодействия с языковыми моделями, позволяющая легко строить логику над полученными ответами. Так, например, всего в несколько строк можно получить классификатор, вместо того, чтобы писать кучу условий в промпте и надеяться, что модель не напишет отсебятины:
from guidance import models, select
llama2 = models.LlamaCpp(path)
llama2 + 'Who loves their owner more? Answer: ' + select(['cat', 'dog'])
Иными словами мы смотрим на самый вероятный токен из представленных вариантов, а не всех, что есть в словаре. Такие варианты можно определять как списком, так и, например, регулярными выражениями. И это лишь толика того, что можно вытворять с помощью этой штуки. Еще один пример использования я прикреплю картинкой, но лучше заглянуть в репу и ознакомиться со всем функционалом (благо в ридми много подробных примеров). Эта либа прекрасно дружит и с Transformers, и с llama.cpp.
Допом можно ознакомиться с LMQL (аналог с кучей своих преимуществ).
#useful