npx skills add https://github.com/ccheney/robust-skills --skill clean-ddd-hexagonal --yesnpx skills add https://github.com/kadajett/agent-nestjs-skills --skill nestjs-best-practices --yesnpx skills add https://github.com/wshobson/agents --skill nodejs-backend-patterns --yesnpx skills add https://github.com/mrgoonie/claudekit-skills --skill backend-development --yesnpx skills add https://github.com/claude-office-skills/skills --skill telegram-bot --yesnpx skills add https://github.com/jeffallan/claude-skills --skill devops-engineer --yesnpx skills add https://github.com/jeffallan/claude-skills --skill architecture-designer --yesnpx skills add https://github.com/claude-office-skills/skills --skill telegram-bot --yesnpx skills add https://github.com/prisma/skills --skill prisma-database-setup --yesnpx skills add https://github.com/prisma/skills --skill prisma-client-api --yes
Декомпозиция задачи при разработке программного обеспечения с использованием больших языковых моделей (LLM)
— это ключевой подход для достижения более точных и надежных результатов. Вот как это можно реализовать, опираясь на методы промпт-инжиниринга:
При работе с LLM для сложных задач, таких как разработка программного обеспечения, необходимо разбивать запрос на более мелкие и управляемые шаги. Этот процесс позволяет LLM активировать релевантные фоновые знания и процессы рассуждения, прежде чем пытаться решить конкретную проблему. Это также помогает избежать неясных или неточных ответов, которые могут возникнуть из-за недостаточно детализированных промптов.
- Цепочка рассуждений (Chain of Thought, CoT):
- Суть: CoT промптинг заставляет LLM генерировать промежуточные шаги рассуждения, что помогает получить более точные ответы. Это особенно полезно для сложных задач, требующих логики, таких как математические проблемы или гене
Разбивка большой задачи на более мелкие, управляемые подзадачи — это очень эффективная стратегия в промпт-инжиниринге, которая часто приводит к более точным, связным и высококачественным результатам от больших языковых моделей (БЯМ). Этот подход предотвращает перегрузку БЯМ и позволяет ей сосредоточиться на конкретных аспектах, что похоже на то, как люди решают сложные проблемы.
Вот пошаговый пример того, как разбить большую задачу на подзадачи, используя различные методы промптинга:
Пример задачи: Написать всеобъемлющий и увлекательный пост для блога на тему "История и будущее возобновляемой энергии".
Почему стоит разбивать задачу? Единый промпт для такой широкой темы может привести к поверхностному или шаблонному ответу, или БЯМ может "галлюцинировать" неверную информацию из-за сложности. Разлагая задачу, вы направляете рассуждения БЯМ и обеспечиваете точное охват всех необходимых аспектов.
Введение: Что такое промпт-инжиниринг? Промпт-инжиниринг – это процесс разработки и оптимизации запросов (промптов), которые вы даете большой языковой модели (LLM), чтобы она максимально эффективно и точно выполняла поставленные задачи [1, 2]. По сути, это искусство формулирования инструкций для ИИ, чтобы получить желаемый результат [3]. LLM работает как предсказательный механизм: она принимает ваш текст (промпт) и, основываясь на данных, на которых она была обучена, предсказывает следующую наиболее вероятную последовательность токенов (слов или их частей) [4-6]. Создание эффективного промпта – это итеративный процесс, требующий постоянной доработки и тестирования [6-9].
Основные принципы промпт-инжиниринга Для создания эффективных промптов существуют универсальные принципы, которые применимы к большинству задач:
- Ясность и простота. Промпты должны быть лаконичными, четкими и легко понимаемыми как для вас, так и для модели. Избегай
For some reason, it is surprisingly hard to create a bootable Windows USB using macOS. These are my steps for doing so, which have worked for me in macOS Monterey (12.6.1) for Windows 10 and 11. After following these steps, you should have a bootable Windows USB drive.
You can download Windows 10 or Windows 11 directly from Microsoft.
After plugging the drive to your machine, identify the name of the USB device using diskutil list, which should return an output like the one below. In my case, the correct disk name is disk2.
| curl 'https://swap-builder.1inch.io/v4.0/1/swap/build' \ | |
| -H 'authority: swap-builder.1inch.io' \ | |
| -H 'accept: application/json, text/plain, */*' \ | |
| -H 'accept-language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7' \ | |
| -H 'cache-control: no-cache' \ | |
| -H 'content-type: application/json' \ | |
| -H 'origin: http://localhost:4200' \ | |
| -H 'pragma: no-cache' \ | |
| -H 'referer: http://localhost:4200/' \ | |
| -H 'sec-ch-ua: ".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"' \ |
| [ { privateKey: "0x60ddFE7f579aB6867cbE7A2Dc03853dC141d7A4aB6DBEFc0Dae2d2B1Bd4e487F", balance: _1e36Str }, | |
| { privateKey: "0xeaa445c85f7b438dEd6e831d06a4eD0CEBDc2f8527f84Fcda6EBB5fCfAd4C0e9", balance: _1e36Str }, | |
| { privateKey: "0x8b693607Bd68C4dEB7bcF976a473Cf998BDE9fBeDF08e1D8ADadAcDff4e5D1b6", balance: _1e36Str }, | |
| { privateKey: "0x519B6e4f493e532a1BEbfeB2a06eA25AAD691A17875cCB38607D4A4C28DFADC2", balance: _1e36Str }, | |
| { privateKey: "0x09CFF53c181C96B42255ccbCEB2CeE7012A532EcbcEaaBab4d55a47E1874FbFC", balance: _1e36Str }, | |
| { privateKey: "0x054ce61b1eA12d9Edb667ceFB001FADB07FE0C37b5A74542BB0DaBF5DDeEe5f0", balance: _1e36Str }, | |
| { privateKey: "0x42F55f0dFFE4e9e2C2BdfdE2FF98f3d1ea6d3F21A8bB0dA644f1c0e0Acd84FA0", balance: _1e36Str }, | |
| { privateKey: "0x8F3aFFEC01e78ea6925De62d68A5F3f2cFda7D0C1E7ED9b20d31eb88b9Ed6A58", balance: _1e36Str }, | |
| { privateKey: "0xBeBeF90A7E9A8e018F0F0baBb868Bc432C5e7F1EfaAe7e5B465d74afDD87c7cf", balance: _1e36Str }, | |
| { privateKey: "0xaD55BABd2FdceD7aa85eB1FEf47C455DBB7a57a46a16aC9ACFFBE66d7Caf |
| [ | |
| { | |
| "title":"Prod API", | |
| "lsPath":"1inchProdApi", | |
| "trueValue":"1" | |
| }, | |
| { | |
| "title":"Fake wallet enabled", | |
| "lsPath":"enableFakeWallet", | |
| "trueValue":"true" |
| { | |
| "name": "<name>", | |
| "type": "node", | |
| "request": "launch", | |
| "runtimeExecutable": "${env:HOME}/.nvm/versions/node/v11.15.0/bin/node", // path to node | |
| "args": [ | |
| "-r", | |
| "ts-node/register", | |
| "${workspaceRoot}/src/index.ts" // path to start file | |
| ], |
| move to parent folder and run | |
| `find . -name "node_modules" -type d -prune -exec rm -rf '{}' +` |