Можно ли заставить LLama2 выполнять действия?
Рубрика «мысли в час ночи»
Я заинтересовался языковыми моделями по типу LLama, и задался вопросом, а можно ли помимо генерации текста заставить модель выполнять действия? К примеру обращаться к API, исполнять скрипты или подобное, если да есть ли гайды в инете?
Также доп вопросы
Можно ли сделать API для самой ламы? Чтобы я мог через апи к ней обращаться.
Дополнительно:
Ответы:
И нет и, может быть, да. Помимо llama существует лучше модели, например mistral и основанные на нем типа openchat35 или лучше mixtral (он неожиданно умный и скорости как 7b) или или еще лучше от databrix (по скорости как llama30b).
У разработчиков языковых моделей например есть chat версии, есть instruct, а есть base. Общий смысл каждой определяется тем, на какое именно использование их заточили. Например instruct позволяет описывать инструкции на естественном языке и главное получать ответ тоже на естественном языке, со всеми вытекающими от сюда неудобствами (api предполагает стандартизацию форматов вывода). chat ожидает что с ним будут общаться в формате user: xxx, ну а base модели изначально работают только как completion, и их обычно дообучают до своих форматов и наборов знаний.
Кстати, к примеру модели, которые обучали программированию (а это почти все, ищи в бенчмарках HumanEval, потому что openai говорили что именно с этого начинали свою модель обучать и это очень было ей полезно), можно буквально попросить давать ответ в виде json, описав в промпте его формат и оно будет пытаться это делать, точно помню что прбовали за основу взять принцип - модель генерирует готовую программу, решающую вашу задачу, бакэнд ее запускает и выдает ответ и так на каждый запрос. Но чем глупее и проще модель, тем с большей вероятностью она будет отходить от строгого формата, а значит бакэнд приложение, которое будет обслуживать уже твой api должно ожидать эти расхождения и обрабатывать их не как ошибка (например лишнее текстовое описание типа "вот вам ответ в формате json: ...".
Так как llm это посимвольная (по токенам точнее) генерация ответа, на каждом из них, в момент когда происходит выбор следующего токена, можно вставить свой алгоритм, ограничивающий доступный список своими, по своему правилу. Например можно описать регулярное выражение, которое будет применяться к сгенерированному тексту плюс выбираемый токен и если оно не подходит, отказывать в выборе этого токена. Например какая то реализация этого есть в llama.cpp ищи grammar, это ключ у api вызова к server.
Использование llm это в первую очередь исследовательская работа, возможности языковых моделей иногда шокируют но часто раздражают. Например языковую модель научили играть в дум, причем максимально странным способом. Можно представить что описывая специфический запрос, можно заставить модель управлять роботом и т.п.
Есть общепринятые лайфхаки, повышающие качество ответа. Это добавление примеров (вопрос+ответ+вопрос+ответ+вопрос+...) т.е. one-shot/multi-shot, именно так слабые модели могут встать по бенчмаркам с zero-shot у сильных моделей, без примеров. Или попросить в запросе модель поразмышлять (think step by step), надавить на эмоции (найти ответ очень важно для меня, от этого зависит моя жизнь), ценой места в окне контекста. Еще есть подход, делать один и тот же запрос (или кстати слегка менять prompt) много раз, и сделать какой то механизм валидации ответа (например большая часть одних и тех же ответов считать верной) - как защита от галлюцинаций (был пример когда модель заставили миллион раз генерировать программу, запускать ее и проверять результат - так сделали реальное научное открытие)
НО! Просто не будет.
Можно, конечно вам нужна прослойка, которая будет действия llama интерпретировать и передавать на исполнения.
Например: Я модель Кукушка, всем ку-ку! [команда приветствия]
Вот то что в [] прослойкой отлавливается и передаётся нужному ПО на дальнейшие действие, а сама команда в тексте для конечного пользователя не выводится.
Так же вам нужно будет до обучить модель, чтобы она действовала в нужных вам рамках (например выводила [] команды), а это дорогое занятие, хотя может для 3b моделей хватит 3090 карты и несколько дней обучения.
Лама, это просто модель, то через что вы её запускаете имеет API, поэтому да, можно через API общаться.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы заставить LLama2 выполнять определенные действия, вам необходимо внести соответствующие изменения в код программы LLama2. В зависимости от того, какая функциональность вам требуется, вам может потребоваться изменить существующий код или добавить новый код.
Прежде всего, убедитесь, что у вас есть доступ к исходному коду LLama2. Если вы используете стороннюю библиотеку или фреймворк, может потребоваться обратиться к документации по этой библиотеке для понимания того, как внести изменения.
Далее, определите, какие именно действия вы хотите заставить LLama2 выполнять. Например, если вам нужно добавить новый функционал, вы можете создать новый метод или класс и вызывать его из существующего кода. Если вам нужно изменить поведение существующей функции, вы можете отредактировать соответствующий участок кода.
Пример:
class LLama2 { public function doSomething() { // Ваш код здесь } } $llama = new LLama2(); $llama->doSomething();
Важно помнить, что при внесении изменений в код LLama2 необходимо учитывать его структуру и зависимости, чтобы избежать ошибок и нежелательного поведения программы. Также рекомендуется проводить тестирование после внесения изменений, чтобы убедиться, что все работает корректно.
Надеюсь, это поможет вам заставить LLama2 выполнять необходимые действия. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их.