• Как сделать данное действие?

    Vindicar
    @Vindicar
    RTFM!
    Ну т.е.:
    1. ты хочешь получить список пар ключ-значение из словаря
    2. каждое значение содержит список/кортеж строк
    3. тебя интересуют только те пары, в значении которых встречаются строки из заданной коллекции
    Так?
    b_set = frozenset(b)  # переделываем список b в неизменяемое множество
    result = {
        key: value  # генерируем словарь
        for key, value in a.items()  # на основании пар key-value словаря a
        if not b_set.isdisjoint(value)  # берём только те пары, в value которых есть элементы из b_set
    }

    А дальше итерируешь словарь result и делаешь с ним что тебе надо.
    Ответ написан
    1 комментарий
  • Как исправить ошибку с ИИ на tensorflow?

    Vindicar
    @Vindicar
    RTFM!
    Ты код-то сам писал вообще? Потому что какую-то абсолютно несвязную фигню творишь, как будто чатгпт что-то нагенерил.

    При обучении у тебя на входе модели свёрточный слой Conv2D. Такой слой по определению принимает на вход изображение. Ты задаёшь размер этого изображения как 28х28, что напоминает о популярной базе картинок цифр для обучения простых сетей MNIST. А дальше идёт вроде как простой классификатор на 10 классов, что тоже соответствует MNIST. Как будто из примера код взят.

    А при тестировании ты делаешь embedding текста и подаёшь на вход какие-то обрывки полученных токенов.
    Всё равно что пытаться присобачить половину ручной мясорубки к дизельному компрессору, потому что "ну оно же и там и там крутится!" Это вообще не может заработать в принципе.
    Ответ написан
    Комментировать
  • Как получить содержимое сообщения и ответа?

    Vindicar
    @Vindicar
    RTFM!
    Просто реагируешь на сообщение. В объекте сообщения есть свойство reference, которое может содержать ссылку на отвечаемое сообщение (или None, если это не ответ).

    Читай доки, там много интересного.
    Ответ написан
    Комментировать
  • Загрузка картинок через асинхронные коллбэки в JavaScript?

    Vindicar
    @Vindicar
    RTFM!
    JS на странице вообще-то не может обращаться к произвольным файлам на машине клиента - иначе сайты бы брутили важные пути к файлам, чтобы их скопировать и отослать на сервер.
    JS может обращаться только к файлам, которые пользователь поместил в поле выбора файла, или к файлам, доступным в Сети по URL (с поправкой на возможный контроль origin).

    По идее, ты можешь попробовать обращаться по относительному пути, а не по абсолютному - если скрипт запускается из сохранённого HTML-файла, то он может суметь это сделать, но вроде там тоже есть ограничения на путь.
    Ответ написан
  • В чём заключается ошибка?

    Vindicar
    @Vindicar
    RTFM!
    Если ты используешь aiosqlite, то нужно использовать async with, а не просто with.
    Ответ написан
    Комментировать
  • Как удалить ссылку из txt после использования?

    Vindicar
    @Vindicar
    RTFM!
    Вместо random.choice() делаешь index = random.randrange(0, len(lines))
    Тогда у тебя не только будет random_line = lines[index], но и возможность сделать del lines[index] чтобы удалить эту строку. Однако удаление произойдёт только в твоём списке в памяти - тебе нужно будет записать список обратно. Открываешь файл для записи в текстовом режиме, и используешь метод writelines().
    Ответ написан
  • Не получается вывести число, как это можно исправить?

    Vindicar
    @Vindicar
    RTFM!
    for i in range (m, n ): перебирает числа от m до n-1 включительно, т.е. он не включает n.
    Ответ написан
    Комментировать
  • Disnake непонятная ошибка. Кто может помочь?

    Vindicar
    @Vindicar
    RTFM!
    Какие интенты ты задаёшь боту?
    Если приложить волевое усилие и открыть документацию, то можно увидеть, что для работы on_raw_reaction_add требуется интент reactions.
    Ответ написан
    Комментировать
  • Стираются данные при записи в коде телеграм бота, как исправить?

    Vindicar
    @Vindicar
    RTFM!
    Читаем доки.
    Синхронный телебот по умолчанию выполняет обработчики в пуле потоков, чтобы один медленный обработчик не ставил колом всего бота. Как следствие, ты ловишь т.н. состояние гонки, когда несколько обработчиков (или несколько копий одного обработчика), работающих в разных потоках, одновременно обращаются к одному ресурсу - например, к твоему словарю suggested_photos, или к файлу, или ещё к чему. Косяки при этом могут возникать самые весёлые - и, что самое неприятное, они будут то появляться, то исчезать в зависимости от порядка исполнения потоков.

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

    Также можешь попробовать перейти на асинхронный вариант телебота, но там нужно понимать как вообще устроены асинхронные приложения.
    Ответ написан
    Комментировать
  • Как сделать параллельный цикл aiogram?

    Vindicar
    @Vindicar
    RTFM!
    Выносишь цикл проверки в отдельную корутину check_loop(), в main() делаешь
    async def main():
        logging.basicConfig(level=logging.INFO)
        async with ClientSession() as session:  # сессию лучше по сто раз не создавать
            check_task = asyncio.create_task(check_loop(session))  # создай её однажды и передай в check_loop
            try:
                bot = Bot(
                    token='"'
                )
                await dp.start_polling(bot)
            finally:
                check_task.cancel()  # внутри check_loop() сгенерируется прерывание asyncio.CancelledError

    Единственное, придётся в коде/конфиге прописать id чата, куда check_loop() будет отправлять сообщение с результатами.
    Ответ написан
    Комментировать
  • Как сделать программу для перемещения файлов?

    Vindicar
    @Vindicar
    RTFM!
    Составляешь список документов в постановлениях (модуль pathlib, метод Path.glob).
    Перебираешь строки csv файла (стандартный модуль csv в помощь).
    Для каждого уникального ID (номера) в csv ищешь подходящее имя файла в постановлениях. Можно простым разбиением имени по символу № (смотри str.split() и str.partition()).
    Определяешь желаемый путь, куда записать файл. Стандартный модуль pathlib в помощь.
    Перемещаешь файл вызовом shutil.move() (стандартный модуль shutil).
    Ответ написан
    2 комментария
  • Как сделать генерацию паролей на python?

    Vindicar
    @Vindicar
    RTFM!
    itertools.product() позволит перебрать все сочетания символов. Поиграв с параметрами, можно даже задать правила вида "первый символ - согласная, второй - цифра, ..." . Но для брутфорса обычно лучше словарная атака.
    Ответ написан
    Комментировать
  • Отправка сообщения aiogram в произвольной функции без handler использовав существующий bot?

    Vindicar
    @Vindicar
    RTFM!
    Очевидно, хранить существующего бота где-то. Или в глобальной переменной, или переделать функцию в метод класса и хранить ссылку на бота в поле класса. Главное, чтобы эта ссылка была в поле видимости твоего кода.

    Но я бы заметил, что слишком частое редактирование сообщения - не лучшая идея. Я бы разбил процесс на две части - обработчик обновлений от OpenAI складывает в какой-то буфер полученные части текста, а бот время от времени проверяет буфер и дописывает всё, что там лежит, в сообщение.
    Ответ написан
    1 комментарий
  • Функция - global - какая очередность?

    Vindicar
    @Vindicar
    RTFM!
    Не путай определение функции с её вызовом.
    В твоём коде замена значения переменной происходит, когда ты вызываешь функцию, а не когда ты её определяешь.
    Ответ написан
  • Как в переменную добавить данные без перезаписи?

    Vindicar
    @Vindicar
    RTFM!
    Ну для начала определись, какой тип данных у твоей переменной?
    Если ты хочешь добавить символ, то переменная должна быть строкой.
    i = "5"  # обрати внимание, кавычки означают строку
    i = i + ' +'
    print(i)  # 5 +
    Ответ написан
    9 комментариев
  • Где хранится информация и откуда её берет нейросеть для ответа?

    Vindicar
    @Vindicar
    RTFM!
    Окей, если объяснить на пальцах, то есть два варианта.
    1. Собственные знания модели. Большие языковые модели, по сути, умеют только одно: предсказывать следующее слово по набору предыдущих. Почти все остальные задачи сводятся к этому. Так что веса модели - это описание офигительно сложной функции, которая описывает взаимосвязь между предшествующим набором слов и последующим словом. Все "знания" модели, таким образом, сводятся к ответу на вопрос "какое слово будет дальше с наибольшей вероятностью?" Отсюда вытекают и слабые стороны языковых моделей - они не понимают, что пишут, они просто пишут "по аналогии".
    2. Retrieval Augmented Generation. Грубо говоря, в распоряжении модели есть база текстов, где каждому фрагменту сопоставлено некоторое описание его смысла. Модель использует такое же представление смысла слов в запросе, чтобы найти подходящие по смыслу фрагменты. Найдя эти фрагменты, модель строит ответ уже на основании фрагментов И запроса. Это не требует переобучения модели для добавления новых знаний, как в первом случае. Но будут проблемы, если фрагменты слишком длинные или их слишком много.
    Ответ написан
    Комментировать
  • Как вывести значения таблицы SQLite3 в inline-кнопках?

    Vindicar
    @Vindicar
    RTFM!
    А ты прочитай свой код внимательно.
    @router.message(F.text == 'Каталог')
    async def catalog(message : Message):
        categories_kb = InlineKeyboardBuilder()
        categories = db.get_group_name_from_db()
        for category in categories:
            categories_kb.add(InlineKeyboardButton(text=categories, callback_data=f'category_'))  # чему-чему равен text?
        return categories_kb.adjust(2).as_markup()  # ты же понимаешь, что строка ниже не выпонится?
    
        await message.answer('Выберите категорию товара:', reply_markup=await categories)  # что ещё за await? categories - это список.
        # или ты имел ввиду categories_kb?
    Ответ написан
    5 комментариев
  • Как float данные из БД добавить в массив и найти самое близкое число к числу из БД?

    Vindicar
    @Vindicar
    RTFM!
    Тебе не нужно вычитывать все данные из БД, чтобы потом искать их на питоне - задача прекрасно решается в рамках SQL запроса.
    Если под "самым близким" числом ты понимаешь самое близкое по модулю, то задача звучит так: найти в таблице число, модуль разности которого с заданным числом минимален.
    Например, если у нас таблица Numbers, в которой есть столбец num, содержащий искомые числа, то запрос будет иметь вид:
    SELECT * FROM Numbers ORDER BY ABS(num - заданное_число) ASC LIMIT 1

    Т.е. мы для все строк в Numbers рассчитываем разность между num и заданным числом, находим модуль, сортируем по возрастанию этого модуля (т.е. сортируем числа от близких к далёким), а потом берём первый (т.е. самый близкий) результат.

    К своему коду адаптируешь самостоятельно.
    Ответ написан
    3 комментария
  • Как связать переменные i и result в функции range?

    Vindicar
    @Vindicar
    RTFM!
    Вместо перезаписи result собирай отдельные строки в список, а потом используй str.join() чтобы объединить список в одну длинную строку.
    Ответ написан
    Комментировать
  • Ошибка в aiogram :'cannot import name 'executor' from 'aiogram'', почему?

    Vindicar
    @Vindicar
    RTFM!
    Под какую версию aiogram код, и какая версия установлена у тебя? aiogram изменил API при переходе с версии 2 на версию 3.
    Ответ написан
    Комментировать