• Можно ли заставить LLama2 выполнять действия?

    @rPman
    И нет и, может быть, да. Помимо 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) много раз, и сделать какой то механизм валидации ответа (например большая часть одних и тех же ответов считать верной) - как защита от галлюцинаций (был пример когда модель заставили миллион раз генерировать программу, запускать ее и проверять результат - так сделали реальное научное открытие)

    НО! Просто не будет.
    Ответ написан
    Комментировать
  • Возможно ли установить Windows XP на внешний жесткий диск?

    saboteur_kiev
    @saboteur_kiev Куратор тега Windows
    software engineer
    Проблема не в самом диске Hitachi, а в интерфейсе (драйвер материнки который отвечает за подключение). XP не умеет с ним работать и поэтому не видит диска.
    Если для этой материнки нет драйверов на XP (производитель не выпускал), то не факт что у вас получится что-то сделать.
    Ответ написан
    Комментировать
  • Как исправить ошибку php Call to a member function bind_param() on boolean in?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Call to a member function bind_param() on boolean
    Где вызывается bind_param()?
    $stmt->bind_param("ssisss", $plaintiffs_json, $respondents_json, $type, $reason, $petition, $video);
    Где stmt получает значение?
    $stmt = $conn->prepare("INSERT INTO `cases`(`nickname`, `respondent`, `type`, `reason`, `petition`, `video`) VALUES (?, ?, ?, ?, ?, ?)");
    В каком случае prepare может вернуть значение типа boolean?
    mysqli_prepare() returns a statement object or false if an error occurred.
    Вывод - при вызове prepare возникает ошибка.
    Как найти ошибку? Либо проверить $conn->error после вызова prepare, либо, что правильнее, сразу настроить mysqli на выброс исключений при ошибке, добавив перед соединением с базой вызов
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    Ответ написан
    Комментировать
  • Как мне отобразить выключен ли элемент?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    <?php 
    $elements = (тут вытаскиваем из бд все элементы);
    ?>
    ...
    <?php 
    if($elements[35]['status'] ==1){?>
    <div class="absolute top-[514px] left-[30px]" style="transform: rotate(15deg);">
    ...
    <?php } ?>
    Ответ написан
    2 комментария
  • Какой ивент поставить чтобы работало при вводе?

    ddv88
    @ddv88
    Binance Futures
    Ответ написан
    Комментировать
  • Как сделать вывод юзеров из бд?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Делаем загадочные движения руками, незаметно меняем тег br на td и... Магия!
    foreach($row as $v) {
        echo "<td>$v</td>";
    }


    Но на самом деле обычно так не делают, и действительно вытаскивают "что-то одно". Попутно разделяя работу с SQL и HTML и защищаясь от инъекцй. Для этого:

    • сначала получаем нужные на странице данные. Если выводим список, то записываем его в массив
    • только после того как все данные получены и обработаны, можно начинать вывод. В простейшем варианте закрываем тег РНР и начинаем выводить HTML и в нужных местах - запрошенные выше данные
    • не забывая их в обязательном порядке экранировать

    $data = $mysqli->query('SELECT * FROM users')->fetch_all(MYSQLI_ASSOC);
    ?>
    <table>
      <?php foreach($data as $row): ?>
        <tr>
            <td><?=htmlspecialchars($row['id'], ENT_QUOTES) ?></td>
            <td><?=htmlspecialchars($row['name'], ENT_QUOTES) ?></td>
            <td><?=htmlspecialchars($row['email'], ENT_QUOTES) ?></td>
        </tr>
      <?php endforeach ?>
    </table>
    Ответ написан
    1 комментарий