Как я могу заставить LLama2 выполнять определенные действия?

Как можно расширить функциональность языковых моделей, подобных LLama, чтобы они не только генерировали текст, но и могли выполнять действия, такие как обращение к API или запуск скриптов? Существуют ли руководства или инструкции в сети для этого? Также интересует возможность создания API для модели LLama, чтобы можно было взаимодействовать с ней через это API.
  • 6 апреля 2024 г. 23:19
Ответы на вопрос 3
Для того чтобы заставить LLama2 выполнять определенные действия, вам понадобится добавить соответствующий код в исходный код модели. LLama2 предоставляет возможность расширения функциональности с помощью пользовательских плагинов, которые можно написать на Python.

Чтобы расширить функциональность языковой модели, вы можете реализовать функции ваших действий в виде плагина и добавить их к LLama2. Например, вы можете написать плагин для выполнения HTTP-запросов к API, запуска скриптов или других задач.

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

Что касается создания API для модели LLama2, это также возможно. Для этого вам потребуется написать скрипт, который будет принимать запросы через API и взаимодействовать с моделью LLama2 для выполнения соответствующих действий. Возможно, вам придется использовать библиотеки для работы с HTTP-запросами и обработки данных.

В целом, процесс написания плагинов и создания API для модели языковой модели подобной LLama2 может быть сложным и требует хороших знаний Python, а также понимания работы модели и ее 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 это в первую очередь исследовательская работа, возможности языковых моделей иногда шокируют но часто раздражают. Например языковую модель научили играть в дум, причем максимально странным способом. Можно представить что описывая специфический запрос, можно заставить модель управлять роботом и т.п.

НО! Просто не будет.
Можно, конечно вам нужна прослойка, которая будет действия llama интерпретировать и передавать на исполнения. 
Например: Я модель Кукушка, всем ку-ку! [команда приветствия]
Вот то что в [] прослойкой отлавливается и передаётся нужному ПО на дальнейшие действие, а сама команда в тексте для конечного пользователя не выводится.

Так же вам нужно будет до обучить модель, чтобы она действовала в нужных вам рамках (например выводила [] команды), а это дорогое занятие, хотя может для 3b моделей хватит 3090 карты и несколько дней обучения.

Лама, это просто модель, то через что вы её запускаете имеет API, поэтому да, можно через API общаться.
Похожие вопросы