Skip to content

Instantly share code, notes, and snippets.

View isaldin's full-sized avatar
🏠
Working from home

SALDIN ILYA isaldin

🏠
Working from home
View GitHub Profile

Декомпозиция задачи при разработке программного обеспечения с использованием больших языковых моделей (LLM)

— это ключевой подход для достижения более точных и надежных результатов. Вот как это можно реализовать, опираясь на методы промпт-инжиниринга:

Общие принципы декомпозиции

При работе с LLM для сложных задач, таких как разработка программного обеспечения, необходимо разбивать запрос на более мелкие и управляемые шаги. Этот процесс позволяет LLM активировать релевантные фоновые знания и процессы рассуждения, прежде чем пытаться решить конкретную проблему. Это также помогает избежать неясных или неточных ответов, которые могут возникнуть из-за недостаточно детализированных промптов.

Техники декомпозиции задач

  1. Цепочка рассуждений (Chain of Thought, CoT):
  • Суть: CoT промптинг заставляет LLM генерировать промежуточные шаги рассуждения, что помогает получить более точные ответы. Это особенно полезно для сложных задач, требующих логики, таких как математические проблемы или гене

Разбивка большой задачи на более мелкие, управляемые подзадачи — это очень эффективная стратегия в промпт-инжиниринге, которая часто приводит к более точным, связным и высококачественным результатам от больших языковых моделей (БЯМ). Этот подход предотвращает перегрузку БЯМ и позволяет ей сосредоточиться на конкретных аспектах, что похоже на то, как люди решают сложные проблемы.

Вот пошаговый пример того, как разбить большую задачу на подзадачи, используя различные методы промптинга:

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

Почему стоит разбивать задачу? Единый промпт для такой широкой темы может привести к поверхностному или шаблонному ответу, или БЯМ может "галлюцинировать" неверную информацию из-за сложности. Разлагая задачу, вы направляете рассуждения БЯМ и обеспечиваете точное охват всех необходимых аспектов.


Отчет о промпт-инжиниринге для ИИ-ассистента в разработке

Введение: Что такое промпт-инжиниринг? Промпт-инжиниринг – это процесс разработки и оптимизации запросов (промптов), которые вы даете большой языковой модели (LLM), чтобы она максимально эффективно и точно выполняла поставленные задачи [1, 2]. По сути, это искусство формулирования инструкций для ИИ, чтобы получить желаемый результат [3]. LLM работает как предсказательный механизм: она принимает ваш текст (промпт) и, основываясь на данных, на которых она была обучена, предсказывает следующую наиболее вероятную последовательность токенов (слов или их частей) [4-6]. Создание эффективного промпта – это итеративный процесс, требующий постоянной доработки и тестирования [6-9].

Основные принципы промпт-инжиниринга Для создания эффективных промптов существуют универсальные принципы, которые применимы к большинству задач:

  • Ясность и простота. Промпты должны быть лаконичными, четкими и легко понимаемыми как для вас, так и для модели. Избегай
@isaldin
isaldin / bootable-win-on-mac.md
Created August 30, 2024 15:54 — forked from acarril/bootable-win-on-mac.md
Create a bootable Windows USB using macOS

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.

1. Download a Windows disc image (i.e. ISO file)

You can download Windows 10 or Windows 11 directly from Microsoft.

2. Identify your USB drive

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
@isaldin
isaldin / ff.json
Last active October 13, 2022 13:58
[
{
"title":"Prod API",
"lsPath":"1inchProdApi",
"trueValue":"1"
},
{
"title":"Fake wallet enabled",
"lsPath":"enableFakeWallet",
"trueValue":"true"
@isaldin
isaldin / launch.json
Created March 6, 2020 12:36
vscode: debug ts project with nvm
{
"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 '{}' +`
@isaldin
isaldin / launch.json
Created March 5, 2020 10:16 — forked from cecilemuller/launch.json
Run ts-node in VSCode Debugger
{
"version": "0.2.0",
"configurations": [
{
"name": "Node Inspector",
"type": "node",
"request": "launch",
"args": ["${workspaceRoot}/src/service.ts"],
"runtimeArgs": ["-r", "ts-node/register"],
"cwd": "${workspaceRoot}",