• XSS.stack #1 – первый литературный журнал от юзеров форума

ИИ с большим контекстом для реверса?

dunkel

(L1) cache
Пользователь
Регистрация
29.06.2023
Сообщения
921
Реакции
1 102
Гарант сделки
1
Депозит
0.012 Ł
Какие есть llm которым можно скинуть выхлоп дизассемблера (огромную стену кода 10к строк) и попросить переименовать переменные и функции на понятные, убрать джанк, оптимизировать a=b, b=c и т.д.
Думаю оплатить chatgpt pro за 200$ (жалко каждый месяц оплачивать ради пары больших запросов). Интересуют также бесплатные ии или модели которые можно скачать себе. Хочу купить отдельный ssd под llama 405b и озу, т.к во всяких говносервисах где ее можно попробовать маленький контекст, какие то бессмысленыне ограничения и т.д
Нужен именно большой контекст, т.к ии не поймет как допустим назвать функцию если она находиться за контекстом
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
Какие есть llm которым можно скинуть выхлоп дизассемблера (огромную стену кода 10к строк) и попросить переименовать переменные и функции на понятные, убрать джанк, оптимизировать a=b, b=c и т.д.
Думаю оплатить chatgpt pro за 200$ (жалко каждый месяц оплачивать ради пары больших запросов). Интересуют также бесплатные ии или модели которые можно скачать себе. Хочу купить отдельный ssd под llama 405b и озу, т.к во всяких говносервисах где ее можно попробовать маленький контекст, какие то бессмысленыне ограничения и т.д
Нужен именно большой контекст, т.к ии не поймет как допустим назвать функцию если она находиться за контекстом
То что ищешь всё равно будет платной, если хочешь сэкономить заходишь на фанпей в раздел аккаунтов gpt, https://funpay.com/uk/lots/offer?id=35231775 (не реклама) к любому продавцу, даёшь имя лог-пасс от свежесозданного аккаунта, он тебе за 30$ оформляет подписку со спиженой картой, меняешь пароль и у тебя личный акк с PRO подпиской за 30$
 
То что ищешь всё равно будет платной, если хочешь сэкономить заходишь на фанпей в раздел аккаунтов gpt, https://funpay.com/uk/lots/offer?id=35231775 (не реклама) к любому продавцу, даёшь имя лог-пасс от свежесозданного аккаунта, он тебе за 30$ оформляет подписку со спиженой картой, меняешь пароль и у тебя личный акк с PRO подпиской за 30$
там барыги plus перепродают за 30$ (который стоит 20$), а мне надо pro, с радостью бы брал карженую подписку каждый месяц
1736516350509.png


1736516269268.png
 
Пожалуйста, обратите внимание, что пользователь заблокирован
у меня прошка есть, но не думаю что там 10к строк влезит
В этом основная проблема, т.к декомпиляторы и деобфускаторы генерят в 100 раз больше кода чем было исходно, chatgpt pro поддерживает 120k токенов, это гдето 5-10к строк (по 10 токенов на строку), а часто надо больше.
Хз че придумать, поставить llama 3 70b которая будет сжимать и рефакторить код частями, а потом отдавать более умной чатжпт про или клауд про на ренейминг и обьяснение
 
Пожалуйста, обратите внимание, что пользователь заблокирован
В этом основная проблема, т.к декомпиляторы и деобфускаторы генерят в 100 раз больше кода чем было исходно, chatgpt pro поддерживает 120k токенов, это гдето 5-10к строк, а часто надо больше.
Хз че придумать, поставить llama 3 70b которая будет сжимать и рефакторить код частями, а потом отдавать более умной чатжпт или клауд на ренейминг и обьяснение
Мне вот интересно можно ли придумать какой то инструмент чтоб ИИ сама к себе обращалась и сама код делала полностью проекты, условно дать полный доступ к консоли, и тем самым тестила код
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Мне вот интересно можно ли придумать какой то инструмент чтоб ИИ сама к себе обращалась и сама код делала полностью проекты, условно дать полный доступ к консоли, и тем самым тестила код
Да есть даже расширения для vsc. Видел еще статьи про софт где chatgpt сам писал код, сам получал вывод об ошибках, сам их исправлял и так в цикле. Но там вроде все заканчивается тем что его уносит куда то нетуда и он сам додумывает и пишет не то что хотел человек, либо количество ошибок растет в прогрессии.
Можешь попробовать Gemini 2.0 в https://aistudio.google.com/prompts/new_chat (бесплатно), там 1кк токенов контекст.

Посмотреть вложение 101635 Посмотреть вложение 101636
ну кстати конкретно на поддомене aistudio он не зависает, а на gemini виснет и ошибку выдает когда вставляют 30к строк, либо нормальное начало кода выдает на 100 строк и все
thx буду пробовать, если норм будет может даже плагин для binary ninja напишу и выложу тут, а то там только для локальной mixtral 8b который тупой
 
проверь этот

Сверхмощный аналог ChatGPT от китайцев вышел в открытый доступ — это чат-бот Qwen, который не хуже, а в моментах даже лучше GPT4o.

Эта зверюга предлагает все те же фичи, что и ChatGPT, но самое главное — вам не нужно платить за них или покупать подписку:

— Модель Qwen2.5-Plus является самой продвинутой: подойдет как для легкого общения, так и для более сложных задач;
— Модель Qwen2.5-Turbo поддерживает длиннющие контексты до 1 000 000 токенов: можно накатать целую книгу или диплом за пару заходов;
— Можно загрузить любой документ и получить краткую выжимку или перевод;
— Умеет читать картинки и смотреть ваши видосы: выплюнет их описание, объяснение и расшифровка со всеми таймингами.
— Сравнивайте ответы сразу нескольких моделей на одном экране: выбираете нужные модели, а затем просто пишите промпт;
— Моментальная генерация кода: проверить и запустить его можно прямо тут, безо всяких сторонних приложений;
— В математике и вычислениях Qwen2.5 никто не переплюнет.

Пользуемся — тут. (https://chat.qwenlm.ai/)
 
— Модель Qwen2.5-Turbo поддерживает длиннющие контексты до 1 000 000 токенов: можно накатать целую книгу или диплом за пару заходов;
1736520786626.png
 
Последнее редактирование:
Можешь попробовать Gemini 2.0 в https://aistudio.google.com/prompts/new_chat (бесплатно), там 1кк токенов контекст.

Посмотреть вложение 101635 Посмотреть вложение 101636
А вот gemini 2.0 flash experimental именно на поддомене aistudio.google.com дошла до конца, потратив 320к токенов на 32к строк (~10 токенов на строку).
На входе был выход js деобфускатора, работоспособность не тестил, надо будет проверить обфусцировав заведомо рабочий детерминированный скрипт который принимает на вход допустим число, делает череду сложных разнообразных манипуляций и выводит результат. Если gemini нигде не накосячил при рефакторинге тогда скрипт должен работать и после выполнения и выводить одинаковый результат для всех четырех образцов: чистый сурс, обфусцированный, деобфусцированный, и переписанный gemini
 
Мне вот интересно можно ли придумать какой то инструмент чтоб ИИ сама к себе обращалась и сама код делала полностью проекты, условно дать полный доступ к консоли, и тем самым тестила код
JavaScript:
const readline = require("readline");
const axios = require("axios");
const { exec } = require("child_process");
const chalk = require("chalk");

const model = "gemma2:9b-instruct-q4_K_S";
const modelNameForUser = "gemma2"
const messages = [
  {
    role: "system",
    content: "Ты - персональный помощник, и твоя основная задача - помогать пользователю, выполняя команды в терминале и предоставляя ответы на вопросы. Вот как это работает:\n\n1. **Выполнение команд**: Если пользователь просит выполнить команду в терминале или намекает на это, заключай команду в теги `<api></api>`.\n\n2. **Обработка результата**: После использования тега `<api></api>` в ответе, никакого дополнительного текста до или после этого тега быть не должно. Дождись результата выполнения команды и используй только его для формирования ответа.\n\n3. **Формирование ответа**: Ответы должны основываться исключительно на результатах выполнения команд в `bashsession`. Не делай предположений или выводов, которые не поддерживаются результатами команд.\n\n4. **Отправка результатов**: Ответы, содержащие теги `<api>`, не будут показаны пользователю. Эти теги используются только для выполнения команд. Формируй ответ исключительно на основе результата выполнения команды. Не показывай пользователю свои интерпретации или пояснения, не относящиеся к результату команды.\n\n5. **Язык общения**: Всегда отвечай пользователю на русском языке.\n\n6. **Регистры символов**: Важно учитывать регистр символов при выполнении команд. Команды в Linux и Unix-системах чувствительны к регистру, поэтому всегда учитывай это при написании и интерпретации команд."
  },
  // Примеры сообщений для обучения модели
  {
    role: "user",
    content: "посмотри, что находится в текущей папке"
  },
  {
    role: "assistant",
    content: "<api>ls</api>"
  },
  {
    role: "bashsession",
    content: "1.txt"
  },
  {
    role: "assistant",
    content: "В текущей папке находится только один файл, его название - 1.txt"
  },
  {
    role: "user",
    content: "какие файлы в папке documents?"
  },
  {
    role: "assistant",
    content: "<api>ls documents</api>"
  },
  {
    role: "bashsession",
    content: "file1.txt, file2.txt"
  },
  {
    role: "assistant",
    content: "В папке documents находятся следующие файлы: file1.txt, file2.txt"
  },
  {
    role: "user",
    content: "в какой ты сейчас папке?"
  },
  {
    role: "assistant",
    content: "<api>pwd</api>"
  },
  {
    role: "bashsession",
    content: "/home/meth/projects/ollama-agent"
  },
  {
    role: "assistant",
    content: "Я сейчас нахожусь в папке: /home/meth/projects/ollama-agent"
  }
];

let verboseMode = false; // Переменная для хранения состояния verbose режима

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

function startSpinner() {
  const spinnerChars = ['|', '/', '-', '\\'];
  let index = 0;
  return setInterval(() => {
    process.stdout.write(chalk.gray('\r' + spinnerChars[index++]));
    index = index % spinnerChars.length;
  }, 100);
}

function stopSpinner(spinner) {
  clearInterval(spinner);
  process.stdout.write('\r'); // Clear the spinner line
}

function executeCommand(command) {
  return new Promise((resolve, reject) => {
    if (!command) {
      reject("Команда не должна быть пустой");
      return;
    }

    exec(command, (error, stdout, stderr) => {
      if (error) {
        reject(stderr.trim()); // Only capture stderr for error messages
      } else {
        resolve(stdout.trim());
      }
    });
  });
}

async function processBashCommands() {
  const assistantMessage = messages[messages.length - 1];
  const commandMatches = Array.from(assistantMessage.content.matchAll(/<api>([\s\S]*?)<\/api>/g));

  if (commandMatches.length === 0) return;

  const commands = commandMatches.map(match => match[1].trim()).join(' && ');

  if (commands) {
    if (verboseMode) {
      console.log(chalk.gray(modelNameForUser+` выполняет в терминале команду: ${commands}`));
    }
    const spinner = startSpinner();
    try {
      const commandOutput = await executeCommand(commands);
      stopSpinner(spinner);
      if (verboseMode) {
        console.log(chalk.gray(`Результат команды: ${commandOutput}`));
      }
      messages.push({ role: "bashsession", content: commandOutput });
      const userResponse = await chat([...messages, { role: "user", content: commandOutput }]);
      messages.push(userResponse);
      if (verboseMode) {
        if (userResponse.content.includes("<api>")) {
          console.log(chalk.gray(modelNameForUser+`: ${userResponse.content}`));
        } else {
          console.log(chalk.yellow(modelNameForUser+`: ${userResponse.content}`));
        }
      } else {
        if (!userResponse.content.includes("<api>")) {
          console.log(chalk.yellow(modelNameForUser+`: ${userResponse.content}`));
        }
      }
      if (userResponse.content.includes("<api>")) {
        await processBashCommands(); // Process any additional commands in the new response
      }
    } catch (error) {
      stopSpinner(spinner);
      if (verboseMode) {
        console.error(chalk.red(`Ошибка выполнения команды: ${error}`));
      }
      messages.push({ role: "bashsession", content: `Ошибка выполнения команды: ${error}` });
      const errorResponse = await chat([...messages, { role: "user", content: `Ошибка выполнения команды: ${error}` }]);
      messages.push(errorResponse);
      if (verboseMode) {
        console.log(chalk.gray(modelNameForUser+`: ${errorResponse.content}`));
      } else {
        console.log(chalk.yellow(modelNameForUser+`: ${errorResponse.content}`));
      }
      if (errorResponse.content.includes("<api>")) {
        await processBashCommands(); // Process any additional commands in the new response
      }
    }
  }
}

async function chat(messages) {
  const body = {
    model: model,
    messages: messages,
    stream: false // Disable streaming
  };

  let spinner = startSpinner();

  try {
    const response = await axios.post("http://127.0.0.1:11434/api/chat", body);
    stopSpinner(spinner);

    let content = response.data.message.content;
    return { role: "assistant", content: content.trim() };
  } catch (error) {
    stopSpinner(spinner);
    console.error("Ошибка подключения к серверу:", error.message);
    throw error;
  }
}

async function processCommand(user_input) {
  const [command, ...args] = user_input.trim().split(' ');

  switch (command) {
    case '/help':
    case '/h':
    case '/?':
      console.log("Команды:\n" +
        "/help - Показать это сообщение.\n" +
        "/sm [N] - Показать последние N сообщений. По умолчанию последние 10.\n" +
        "/verbose [on|off] - Включить/выключить режим verbose. По умолчанию выключен.\n" +
        "/quit или /q - Завершить работу программы."
      );
      break;
    case '/sm':
      {
        const count = args[0];
        const numMessages = count === 'all' ? messages.length : parseInt(count) || 10;
        const filteredMessages = messages.slice(-numMessages);
        filteredMessages.forEach(msg => {
          // Показать все сообщения, включая системные, при команде /sm
          console.log(`${msg.role}: ${msg.content}`);
        });
      }
      break;
    case '/verbose':
    case '/v':
      if (args[0] === 'on') {
        verboseMode = true;
        console.log("Режим verbose включен.");
      } else if (args[0] === 'off') {
        verboseMode = false;
        console.log("Режим verbose выключен.");
      } else {
        console.log("Использование: /verbose [on|off]");
      }
      break;
    case '/quit':
    case '/q':
      rl.close();
      console.log("Спасибо. До свидания.");
      break;
    default:
      messages.push({ role: "user", content: user_input });
      try {
        const assistantMessage = await chat(messages);
        messages.push(assistantMessage);
        if (verboseMode) {
          if (assistantMessage.content.includes("<api>")) {
            console.log(chalk.gray(modelNameForUser+`: ${assistantMessage.content}`));
          } else {
            console.log(chalk.yellow(modelNameForUser+`: ${assistantMessage.content}`));
          }
        } else {
          if (!assistantMessage.content.includes("<api>")) {
            console.log(chalk.yellow(modelNameForUser+`: ${assistantMessage.content}`));
          }
        }
        if (assistantMessage.content.includes("<api>")) {
          await processBashCommands();
        }
      } catch (error) {
        if (verboseMode) {
          console.error(chalk.red("Ошибка чата:"), error.message);
        }
      }
  }
}

async function askQuestion() {
  return new Promise((resolve) => {
    rl.question(chalk.blue("Пользователь: "), async (user_input) => {
      if (user_input.trim() === "") {
        rl.close();
        console.log(chalk.green("Спасибо. До свидания."));
        resolve();
      } else {
        await processCommand(user_input);
        await askQuestion(); // Ask the next question
      }
    });
  });
}

async function main() {
  await askQuestion();
}

main();
ollama gemma2:9b-instruct-q4_K_S

она у меня сама себя загитовала, создала файлик "долговременной памяти" - можно просить её создать его и к нему обращаться
если я не ошибаюсь, это та версия, которая доделывает дела если её не устраивает результат. т.е. если в ответ терминал прислал не то, что ожидается - она попробует еще раз
 
Пожалуйста, обратите внимание, что пользователь заблокирован
JavaScript:
const readline = require("readline");
const axios = require("axios");
const { exec } = require("child_process");
const chalk = require("chalk");

const model = "gemma2:9b-instruct-q4_K_S";
const modelNameForUser = "gemma2"
const messages = [
  {
    role: "system",
    content: "Ты - персональный помощник, и твоя основная задача - помогать пользователю, выполняя команды в терминале и предоставляя ответы на вопросы. Вот как это работает:\n\n1. **Выполнение команд**: Если пользователь просит выполнить команду в терминале или намекает на это, заключай команду в теги `<api></api>`.\n\n2. **Обработка результата**: После использования тега `<api></api>` в ответе, никакого дополнительного текста до или после этого тега быть не должно. Дождись результата выполнения команды и используй только его для формирования ответа.\n\n3. **Формирование ответа**: Ответы должны основываться исключительно на результатах выполнения команд в `bashsession`. Не делай предположений или выводов, которые не поддерживаются результатами команд.\n\n4. **Отправка результатов**: Ответы, содержащие теги `<api>`, не будут показаны пользователю. Эти теги используются только для выполнения команд. Формируй ответ исключительно на основе результата выполнения команды. Не показывай пользователю свои интерпретации или пояснения, не относящиеся к результату команды.\n\n5. **Язык общения**: Всегда отвечай пользователю на русском языке.\n\n6. **Регистры символов**: Важно учитывать регистр символов при выполнении команд. Команды в Linux и Unix-системах чувствительны к регистру, поэтому всегда учитывай это при написании и интерпретации команд."
  },
  // Примеры сообщений для обучения модели
  {
    role: "user",
    content: "посмотри, что находится в текущей папке"
  },
  {
    role: "assistant",
    content: "<api>ls</api>"
  },
  {
    role: "bashsession",
    content: "1.txt"
  },
  {
    role: "assistant",
    content: "В текущей папке находится только один файл, его название - 1.txt"
  },
  {
    role: "user",
    content: "какие файлы в папке documents?"
  },
  {
    role: "assistant",
    content: "<api>ls documents</api>"
  },
  {
    role: "bashsession",
    content: "file1.txt, file2.txt"
  },
  {
    role: "assistant",
    content: "В папке documents находятся следующие файлы: file1.txt, file2.txt"
  },
  {
    role: "user",
    content: "в какой ты сейчас папке?"
  },
  {
    role: "assistant",
    content: "<api>pwd</api>"
  },
  {
    role: "bashsession",
    content: "/home/meth/projects/ollama-agent"
  },
  {
    role: "assistant",
    content: "Я сейчас нахожусь в папке: /home/meth/projects/ollama-agent"
  }
];

let verboseMode = false; // Переменная для хранения состояния verbose режима

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

function startSpinner() {
  const spinnerChars = ['|', '/', '-', '\\'];
  let index = 0;
  return setInterval(() => {
    process.stdout.write(chalk.gray('\r' + spinnerChars[index++]));
    index = index % spinnerChars.length;
  }, 100);
}

function stopSpinner(spinner) {
  clearInterval(spinner);
  process.stdout.write('\r'); // Clear the spinner line
}

function executeCommand(command) {
  return new Promise((resolve, reject) => {
    if (!command) {
      reject("Команда не должна быть пустой");
      return;
    }

    exec(command, (error, stdout, stderr) => {
      if (error) {
        reject(stderr.trim()); // Only capture stderr for error messages
      } else {
        resolve(stdout.trim());
      }
    });
  });
}

async function processBashCommands() {
  const assistantMessage = messages[messages.length - 1];
  const commandMatches = Array.from(assistantMessage.content.matchAll(/<api>([\s\S]*?)<\/api>/g));

  if (commandMatches.length === 0) return;

  const commands = commandMatches.map(match => match[1].trim()).join(' && ');

  if (commands) {
    if (verboseMode) {
      console.log(chalk.gray(modelNameForUser+` выполняет в терминале команду: ${commands}`));
    }
    const spinner = startSpinner();
    try {
      const commandOutput = await executeCommand(commands);
      stopSpinner(spinner);
      if (verboseMode) {
        console.log(chalk.gray(`Результат команды: ${commandOutput}`));
      }
      messages.push({ role: "bashsession", content: commandOutput });
      const userResponse = await chat([...messages, { role: "user", content: commandOutput }]);
      messages.push(userResponse);
      if (verboseMode) {
        if (userResponse.content.includes("<api>")) {
          console.log(chalk.gray(modelNameForUser+`: ${userResponse.content}`));
        } else {
          console.log(chalk.yellow(modelNameForUser+`: ${userResponse.content}`));
        }
      } else {
        if (!userResponse.content.includes("<api>")) {
          console.log(chalk.yellow(modelNameForUser+`: ${userResponse.content}`));
        }
      }
      if (userResponse.content.includes("<api>")) {
        await processBashCommands(); // Process any additional commands in the new response
      }
    } catch (error) {
      stopSpinner(spinner);
      if (verboseMode) {
        console.error(chalk.red(`Ошибка выполнения команды: ${error}`));
      }
      messages.push({ role: "bashsession", content: `Ошибка выполнения команды: ${error}` });
      const errorResponse = await chat([...messages, { role: "user", content: `Ошибка выполнения команды: ${error}` }]);
      messages.push(errorResponse);
      if (verboseMode) {
        console.log(chalk.gray(modelNameForUser+`: ${errorResponse.content}`));
      } else {
        console.log(chalk.yellow(modelNameForUser+`: ${errorResponse.content}`));
      }
      if (errorResponse.content.includes("<api>")) {
        await processBashCommands(); // Process any additional commands in the new response
      }
    }
  }
}

async function chat(messages) {
  const body = {
    model: model,
    messages: messages,
    stream: false // Disable streaming
  };

  let spinner = startSpinner();

  try {
    const response = await axios.post("http://127.0.0.1:11434/api/chat", body);
    stopSpinner(spinner);

    let content = response.data.message.content;
    return { role: "assistant", content: content.trim() };
  } catch (error) {
    stopSpinner(spinner);
    console.error("Ошибка подключения к серверу:", error.message);
    throw error;
  }
}

async function processCommand(user_input) {
  const [command, ...args] = user_input.trim().split(' ');

  switch (command) {
    case '/help':
    case '/h':
    case '/?':
      console.log("Команды:\n" +
        "/help - Показать это сообщение.\n" +
        "/sm [N] - Показать последние N сообщений. По умолчанию последние 10.\n" +
        "/verbose [on|off] - Включить/выключить режим verbose. По умолчанию выключен.\n" +
        "/quit или /q - Завершить работу программы."
      );
      break;
    case '/sm':
      {
        const count = args[0];
        const numMessages = count === 'all' ? messages.length : parseInt(count) || 10;
        const filteredMessages = messages.slice(-numMessages);
        filteredMessages.forEach(msg => {
          // Показать все сообщения, включая системные, при команде /sm
          console.log(`${msg.role}: ${msg.content}`);
        });
      }
      break;
    case '/verbose':
    case '/v':
      if (args[0] === 'on') {
        verboseMode = true;
        console.log("Режим verbose включен.");
      } else if (args[0] === 'off') {
        verboseMode = false;
        console.log("Режим verbose выключен.");
      } else {
        console.log("Использование: /verbose [on|off]");
      }
      break;
    case '/quit':
    case '/q':
      rl.close();
      console.log("Спасибо. До свидания.");
      break;
    default:
      messages.push({ role: "user", content: user_input });
      try {
        const assistantMessage = await chat(messages);
        messages.push(assistantMessage);
        if (verboseMode) {
          if (assistantMessage.content.includes("<api>")) {
            console.log(chalk.gray(modelNameForUser+`: ${assistantMessage.content}`));
          } else {
            console.log(chalk.yellow(modelNameForUser+`: ${assistantMessage.content}`));
          }
        } else {
          if (!assistantMessage.content.includes("<api>")) {
            console.log(chalk.yellow(modelNameForUser+`: ${assistantMessage.content}`));
          }
        }
        if (assistantMessage.content.includes("<api>")) {
          await processBashCommands();
        }
      } catch (error) {
        if (verboseMode) {
          console.error(chalk.red("Ошибка чата:"), error.message);
        }
      }
  }
}

async function askQuestion() {
  return new Promise((resolve) => {
    rl.question(chalk.blue("Пользователь: "), async (user_input) => {
      if (user_input.trim() === "") {
        rl.close();
        console.log(chalk.green("Спасибо. До свидания."));
        resolve();
      } else {
        await processCommand(user_input);
        await askQuestion(); // Ask the next question
      }
    });
  });
}

async function main() {
  await askQuestion();
}

main();
ollama gemma2:9b-instruct-q4_K_S

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

Скармливать псевдокод нейронке для преобразования в более читаемый - есть сомнения, заключающиеся в том, что нейронка может накосячить
 
но думаю купить какой то мощный компик под сервер и делать там все.
Как вариант арендовать сервер с гпу
 
Как вариант арендовать сервер с гпу
Сейчас же нвидиа выпустила какой то мощный специальный проц для ИИ, (заголовок скопипастил)

настольный ИИ-суперкомпьютер Project Digits на суперчипе Grace Blackwell за $3000​

 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх