Ответы пользователя по тегу API
  • Как обойти блокировку сайта при создании множества запросов Python Requests?

    @rPman
    Убери скрин кода, за это тут ругают и могут забанить, тут есть отличная кнопочка Код </>

    По теме, открой документацию в разделе websocket и получай уведомления в реальном времени без задержек
    Ответ написан
    Комментировать
  • Как лучше спроектировать апи с большой нагрузкой?

    @rPman
    Ты не сообщил самое главное - как будут читаться собираемые данные. Будут ли они считываться и тем более фильтроваться в процессе записи, можно ли вводить запаздывание при чтении данных (например до 'некоторых' данных в прошлом).

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

    Проблема не столько в данных и в их объеме, а в надежности всей схемы, т.е. например можно не делать единую точку отказа и сделать несколько независимых api endpoint, клиенты должны сами переключаться между ними, при ошибках, ну а сам выбор куда подключаться делать случайным.

    Кстати, собственно сбор оперативных данных не обязательно делать в ОДНОЙ физической базе, это могут быть разные БД, а вот последующий анализ уже делать следующим сервисом (так же может быть несколько нод), собирающим данные из разных первичных источников в какой то единый или еще в какой то форме... именно подготовка данных к последующему их использованию и есть вопрос реализации.

    Настоятельно не советую городить зоопарк из разных баз данных типа редис и sql-db.. когда sql база используется без индексов (и тем более без транзакций) на последовательную запись у нее нет конкурентов (ну только что совсем низкоуровневым программированием заняться)
    Ответ написан
    3 комментария
  • Как загрузить файл через API в диалог Claude?

    @rPman
    превышается максимальное количество токенов

    Никак, придется делать что то с файлом, что бы он влез в контексте окно.

    Человек точно так же не сможет переварить за один раз большой объем информации, llm-ки тут наследовали эту ограниченность и невнимательность.

    Самое простое, если исходные данные можно разделить, и они независимые, можно поделить исходные данные на части и вызвать для каждой части тот же самый промпт, полученные ответы затем собрать в новый промпт, плюс старый, и получить ответ.

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

    Тупой пример - у вас есть исходники приложения, которые нужно проанализировать, суммарный объем значительно превышает контекстное окно. Вы разбиваете из на методы/классы/исходные файла (выбор степени и способа разбиения отдельная не простая задача) затем по каждому куску проводите анализ отдельным запросом, который самморизует информацию в нем (например попроси описать хелп по методу, короткое описание что метод делает и какие входные параметры) и объединив их в один файл, чтобы он влез в окно контекста, уже задавал вопросы.

    Метод/класс/файл это не 'или', собирать информацию нужно параллельно на всех уровнях.

    Можно итеративно задавать ИИ вопросы, добавив, информацию о каком методе/классе/файле необходимо для ответа на вопрос, замена этот уменьшенный кусок на исходный файл. Речь не идёт о непрерывном чате, внутри каждый запрос это полное окно контекста и лучше самому выбрать, что именно в него должно попасть, т.е. каждый раз формируется новый запрос .. но так как облачные ИИ стали добавлять управление кешем, можно создать несколько сессий, одни собирают информацию по частям, задавая разные вопросы к одному и тому же стартовому контексту, другие работают с агрегированной информацией, третьим с человеком...
    Ответ написан
    2 комментария
  • Как поставить правильные инструкции для GPT API для обхода цензуры?

    @rPman
    Полистай идеи в старых jailbreak типа таких (лучше погугли, можно найти больше)

    Но главное, не надейся что такие промпты будут долго работать, с той стороны не идиоты сидят, и промпты пользователей анализируют максимально тщательно, так как эта информация наиценнейший актив, позволяющий значимо улучшать модели.

    p.s. ты пробовал открытые аналоги, ты пробовал уйти от изображений к текстовому описанию, который получаешь сторонними средствами (недавно вышла facebook sam - модель для сегментирования объектов на изображении, можно разобрать, каждое по отдельности проанализировать, и серией запросов набрать описание)
    Ответ написан
    Комментировать
  • Как лучше всего хранить данные для доступа к api?

    @rPman
    Никогда не храни критичные данные в коде сайта, так как они могут попасть к примеру в git (начнешь раздавать его своей команде) или к примеру когда отправишь сайт на верификацию. Да даже в пределах своей инфраструктуры, зачем копировать чувствительные данные туда, где они не понадобятся.

    Самое простое, размести свой config файл где-нибудь вне каталога с исходными файлами (например в /etc/ ) а в проекте размещай и поддерживай config.example со всеми доступными настройками с комментариями (грустно, что этот момент часто забывают и не документируют, и приходится выковыривать нужные настройки из исходников)

    Еще можно использовать другие способы, которые можно привязать к конкретному серверу и его установке, если по простому, то действительно - разместить в переменных окружения (.bashrc пользователя, под которым будет запускаться сервис), это удобно, потому как машина разработчика работает с одними базами данных, а production версия - с другими.
    p.s. лично мне не очень нравится хранение чего либо в переменных окружения, особенно если данных много, так как они будут все копироваться в память каждому приложению, запускаемому от этого пользователя, так же были разные уязвимости, позволяющие вытаскивать именно переменные окружения сетевым запросом.

    Так же существуют готовые централизованные инструменты по хранению и управлению такими данными (например централизованно отозвать доступ у машины, или сменить пароль и т.п.) типа azure key vault.
    Ответ написан
    Комментировать
  • Можно ли создать аналог my gpts с загрузкой производных файлов через API open AI?

    @rPman
    В общем случае скорее всего нет.
    Лучший gpt у нас у openai, ему на пятки наступают anthropic claude и google gemini (их нормальные модели не доступны бесплатно, а от гугла еще и очень в ограниченном количестве стран, и формально все они не доступны в России). По деньгам они будут сравнимы.

    Если брать готовые модели, они могут оказаться тупо дороже (с оговорками про свое железо но добыть по адекватным ценам это не просто) и главное, открытые модели (с доступными весами) в разы слабее.

    https://chat.lmsys.org/?leaderboard выбирай

    К сожалению ни одна из адекватных доступных моделей не является мультимодальной, т.е. не сможет принимать на вход pdf файл или изоброжения, а значит адекватного ответа универсально с их помощью не получить. Это значит, pdf файл необходимо преобразовать в текст и это большая проблема, особенно для русского языка. Таблицы, графики, все это проблема, которую не решить простыми способами но по отдельности возможны разные варианты (очень не простые).

    Так же проблема открытых моделей - маленькое контекстное окно (llama3 - 8k токенов, только очень маленькие pdf файлы можно в них поместить). А раз не помещаются в контекстное окно, значит потребуется самморизация и деление на части, в общем когда доберешься до конца, итоговый результат будет низкого качества.

    p.s. такие решения на сколько я знаю пилят с переменным успехом, и универсального решения точно не будет.
    Ответ написан
  • Есть ли какие есть варианты api для отправки файлов?

    @rPman
    http (тип upload - multipart/form-data), самый простой и функциональный, поддерживается всеми и везде.

    Например прием файла на php тут разные методы и примеры использования, полистай примеры еще и по ссылкам.
    Ответ написан
    Комментировать
  • Как связать YandexGPT с базой данных?

    @rPman
    При наличии доступа к весам llm, мощностям для finetuning и переобучения, специалистам по нейронным сетям, можно сделать ряд сопроводительны нейронок, которые будут помогать принимать решение о дальнейших действиях, закодировать большое количество 'дорожек' из llm к формальным базам данных, и сделать задачу якобы решенной.

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

    Если не углубляться
    - во первых, тебе нужно на основе llm сделать классификатор, который будет из текста пользователя понимать, intent - какое именно действие он желает сделать (для этого обучают нейронку на основе pretrained llm, возможно убирают последние слои, заменяя их на новые, веса которых нужно будет найти и обучить на основе подготовленной базы вопросов пользователей и соответствующих им реакций, с некоторой долей вероятности можно попробовать без обучения спрашивать у умной llm типа chatgpt4, к сожалению chatgpt3.5 и сравнимые с ней плохо с этим справляются, точнее это вопрос творческий и возможно вместо одного универсального промпта тут нужно готовить франкенштейна из большого количества разных, llm-ка от яндекса не подойдет).
    - во вторых, это сбор информации, отличный пример - человек спрашивает брать ли завтра зонтик, мало сети понять что для ответа на вопрос нужно знать какая будет погода завтра (а завтра это через сколько часов?), нужно понять где этот человек находится и возможно задать наводящий вопрос... это я еще молчу про контекст беседы, может пользователь обсуждает о том что взять с собой в поездку на следующей неделе, т.е. вот уже другое время и место (фраза взять с собой может подразумевать - положить в багаж).
    Я видел примеры промптов, с помощью которых из лога беседы можно вытягивать элементы информации (список этих элементов придется заранее забивать соответственно тому интерфейсу, который выбран как целевой на первом шаге), что то типа проанализируй, достаточно ли в данном тексте информации для ответа на вопрос, выделяя в промпте цель, собранную информацию и часть лога беседы, может сжатой через саморизацию с фильтром - нужную для данной задачи (этакая симуляция большого окна контекста).
    Вот тут у директора по развитию ии от яндекс спрашивали как раз

    Не получится брать сырой поток сообщений, добавлять к ним промпт и надеяться получить сразу результат, это кропотливая работа, по преобразованию потока сообщений в некую выжимку, работа с ней разными запросами и заранее подготовленными нейронками (это на порядок эффективнее, кстати то где слабые сети еще могут давать результат, повторяю, нужен доступ к весам, оборудованию и собирать датасеты)

    p.s. С некоторой долей риска можно просить на ходу нейронку генерировать sql запросы на основе вопросов пользователя, результат будет с большими ошибками, чем умнее llm-ка тем сложнее эти ошибки будет обнаружить (в автоматическом режиме я имею в виду).

    upd. вот тут из гигачата сделали внутреннюю базу и как то интегрировали нейронку чтобы ею пользоваться, подробности не сообщили но в статье и комментариях есть ссылки на работы и технологии
    Ответ написан
    1 комментарий
  • Обход блокировки API openai?

    @rPman
    Мой ответ не про openai в частности а в целом про прокси.

    Арендуешь vps с поддержкой ssh (т.е. любой) и ничего не настраивая на нем кроме может пользователя (команда useradd ... и пароль passwd) и опционально настраиваешь беспарольную авторизацию ssh на своем локальном компьютере (смотри как настраивать твой любимый клиент ssh) делов на 1 минуту. А дальше, в своем клиенте добавляешь настройку тунеля -Dпорт (это ключ ssh, например в putty он называется Dynamic) и после подключения к своей vps-ке (в этом окне ssh ничего больше не надо делать, пусть висит) у тебя локально на комьютере будет поднят socks прокси сервер, который прописываешь в браузере или где тебе надо. Например -D1080 даст socks5 прокси по адресу localhost:1080

    Теперь про аренду vps, идешь на поисковик дешевых vps-ок lowendstock и выбираешь себе от 2 бакса в год (но это совсем ущербные), там же почти все принимают оплату биткоинами. У меня годами работают vps-ки с ценой от 1$ в месяц до 3$ (последняя для моих скриптов с 1gb ram и 20gb ssd, не самая шустрая но свои $ отрабатывает на ура)

    p.s. если vps-ка на основе kvm (точнее можно и на любом но нужен модуль tun) то есть шанс настроить ssh сервер на работу vpn-ом буквально

    upd. к сожалению в россии провайдеры стали потихоньку ломать ssh протокол
    , и он рандомно может быть очень медленным, больших скоростей не жди, у меня на ростелекоме с 5мбайт/с может упасть до 100кбайт/сек и держаться так часами (притом что канал у ростелекома широкий, я с того же huggingface на 25мбайт/cек качал гигабайтами нейронки)
    Ответ написан
    3 комментария
  • Существует ли альтернатива видео api ютуба?

    @rPman
    В целом альтернатив youtube нет, любые варианты будут хуже, так как за ними не стоит компании, готовой вкладывать миллиарды годами в убыточный проект до тех пор пока даже самые стойкие конкуренты не протухнут, а население мира не станет воспринимать площадку как естественно единственный вариант.

    youtube это не только api но и люди, без них любая технология будет в забвении.

    p.s. попробуй peertube, технология позволяет во первых не зависеть от центра, не требует держать действительно дорогие сервера чтобы удерживать большие всплески посетителей (за счет того что видео грузится по технологии torrent с других веб клиентов) и там какие то механизмы объединения списка медиа в какой то каталог чтобы все было в одном месте а не миллион независимых сайтов... может у них получится.
    Ответ написан
    Комментировать
  • Модуль python информация о клиенте Minecraft?

    @rPman
    Правильно, написать (легким гуглением не нашел но наверняка похожее кто то запилил) мод к майнкрафту, который каким то образом сообщает все необходимое твоему python приложению, на выбор от промежуточного файла до полноценного IPC

    По простому, кажется все что тебе нужно находится в лог файлах, там и никнейм, и запускаемый мир,и является ли он мультиплеером или это сингл... но скорее всего эта информация будет сильно зависеть от версии майнкрафт, в общем изучи вопрос
    Ответ написан
    Комментировать
  • Есть ли бесплатный api переводчика?

    @rPman
    Запусти фейсбуковский переводчик локально (вопросы лицензии и прав использования изучи сам, если тебе для бизнеса)
    https://huggingface.co/facebook/nllb-200-3.3B
    (там есть куча моделей ищи nllb) код использования может быть таким (он автоматически скачает модель):
    #!/usr/bin/python
    from transformers import AutoTokenizer, AutoModelForSeq2SeqLM, pipeline
    
    # available models: 'facebook/nllb-200-distilled-600M', 'facebook/nllb-200-1.3B', 'facebook/nllb-200-distilled-1.3B', 'facebook/nllb-200-3.3B'
    model_name = 'facebook/nllb-200-distilled-600M'
    
    # add .to('cuda') to use nvidia gpu 
    model = AutoModelForSeq2SeqLM.from_pretrained(model_name) #.to('cuda')
    tokenizer = AutoTokenizer.from_pretrained(model_name)
    
    source = 'eng_Latn' # English
    target = 'rus_Cyrl' # Russian
    
    text = 'Information about training algorithms, parameters, fairness constraints or other applied approaches, and features. The exact training algorithm, data and the strategies to handle data imbalances for high and low resource languages that were used to train NLLB-200 is described in the paper.'
    
    # code to use cpu only
    translator = pipeline('translation', model=model, tokenizer=tokenizer, src_lang=source, tgt_lang=target)
    output = translator(text, max_length=512)
    translated_text = output[0]['translation_text']
    
    # code to use gpu
    #inputs = tokenizer(text, return_tensors="pt").input_ids.to('cuda')
    #outputs = model.generate(inputs, max_new_tokens=512, do_sample=True, temperature=0.001, forced_bos_token_id=tokenizer.lang_code_to_id[target])
    #translated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
    
    # you can loop this three code lines to translate multiple texts (it's fast even on cpu)
    print(translated_text)
    Список кодов языков и оценку качества перевода бери из метрик
    Ответ написан
    1 комментарий
  • Получение курса по API Binance?

    @rPman
    Напоминаю, ticker выдает курс последней совершенной сделке по паре, что на неликвидных парах (да и вообще всегда) абсолютно бесполезен (зачем тебе знать что пять минут назад кто то купил по какой то цене, а в реальности она уже убежала на 10%). А график на скриншоте - фиктивный, вычисляется на основе курса основных пар.

    Обменный курс (любой спот биржи) - это два значения BUY и SELL, зависящие от разового объема AMOUNT сделки (чем больше объем сделки тем сильнее отличаются buy и sell друг от друга, это называется спред, и да цены на всех биржах таковы что buy выше sell), обычно разница между ними сравнима с величиной комиссии на сделку на бирже (точнее 2x).

    Смотреть оперативную информацию о стакане (список текущих лимитных ордеров) нужно либо тут либо собирать самостоятельно на основе websocket потока depth
    Ответ написан
    Комментировать
  • Как правильно передать данные?

    @rPman
    Первое, sh - отвратительный язык программирования, именно для задач работы с данными, т.е.он конечно может но сильно неудобно. В метках php, он отлично подходит для написания скриптов, поддержка json есть.

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

    Иногда вместо разработки сетевой коммуникации и сопутствующих им проблем, проще разрабатывать централизованную систему управления, запускать скрипты на удаленных машинах с помощью ssh, но реализовать скрипты так, чтобы они н отрабатывали быстро, репортуя состояния, без ожидания, особенно если система распределенная через ненадежный интернет
    Ответ написан
  • (вопрос от полного чайника) Как писать код, который будет работать с внешним сайтом?

    @rPman
    У тебя тут сразу несколько технологий и задач, достаточно сложных и сильно друг от друга отличающихся:
    1. сбор данных с сайта
    целая вселенная - это и реверсинженеринг сайта, и борьба против автоматизированных сборщиков (в зависимости от того как заморочился с этим владелец сайта)
    Настоятельно рекомендую сразу работать с сайтом из браузера, техник много, от простого открытия сайта в обычном браузере с инжектом твоего javascript (например расширение tempermonkey), который будет ходить по сайту, до запуска безголового браузера и управление им из своей программы с помощью selenium, а там кликать кнопки и собирать данные, отправляя их тебе на сервер или сохраняя в локальной базе браузера - localStorage/indexeddb/...
    2. обработка данных
    тесно связана со сбором, данные нужно не просто собрать но и привести к машиночитаемому виду (бывают ситуации когда данные создаются людьми без определенного формата, в этом случае совсем туго), так же это тесно перекликается с технологиями борьбы владельцев сайтов с автоматическими собирателями данных
    Совет, вместе с текстовыми данными собирай информацию о расположении, гораздо проще догадываться о назначении данных, если знаешь их относительную позицию.
    3. анализ данных и поиск закономерностей плюс визуализация
    это не только нейронные сети, алгоритмов тьма, разбираться хотя бы на уровне что это и в каких ситуациях применять, придется... и самое главное результата может и не получиться но узнаешь ты только потом
    работа творческая, и готовых решений скорее всего нет (хотя спасибо, за последние лет 10 собран такой пласт библиотек для работы, один tenserflow и torch чего стоит. Загляни на weka, это огромный сет библиотек и алгоритмов (java) как источник информации об этих алгоритмах
    Ответ написан
    1 комментарий
  • Защита данных в API?

    @rPman
    Обычно два направления атак, от которых нужно защищаться:
    1. защита от кражи передаваемых данных провайдером (любым, на пути следования пакетов, например публичный wifi)
    2. защита от подмены передаваемых данных, так же провайдером
    Для первой задачи нужно шифрование HTTPS, для второй хватит цифровой подписи но при использовании HTTPS это не актуально, так как подменить зашифрованные данные не получится

    Клиент должен не игнорировать предупреждения о невалидности цифровой подписи (любят тут люди вместо корректной настройки последних версий openssl отключать контроль curl --insecure).

    Есть еще защита от фальсификаций истории действий клиентом и сервисом (как доказать что ты отправил сервису сигнал на покупку и он его принял, а серверу доказать что ты отправлял этот сигнал), это реализуется цифровой подписью, сервер и клиент сначала обмениваются ключами шифрования (или просто солью для хешей) и каждое свое сообщение подписывают, если клиент будет хранить всю коммуникацию, эти цифровые подписи будут доказательством.
    Ответ написан
    Комментировать
  • Как разобраться в api php Binance?

    @rPman
    Installation

    composer require binance/binance-connector-php

    composer есть в поставке любой linux либо скачай с офф сайта последний (тогда запускать composer.phar, он написан на php)

    p.s. есть библиотека ccxt ставится так же через composer, поддерживает кучу бирж (наверное все имеющие смысл) для бинанса там помню максимум проблема будет с coin-m futures и то это было несколько лет назад, когда они только только появились

    хорошая документация, и главное унификация, написал код для одной биржи, с минимумом телодвижений переносишь на другую
    Ответ написан
    Комментировать
  • Всем привет. Я зарегистрировала свое приложение на hh.api, получила client id и client secret. Не разобралась, что делать дальше?

    @rPman
    а дальше идешь на сайт с документацией
    https://github.com/hhru/api
    там будет все красиво описано со ссылками на другую документацию, с примерами, по русски (так не привычно), оформлено очень качественно
    https://api.hh.ru/openapi/redoc
    Ответ написан
    6 комментариев
  • Как оптимизировать работу PHP интеграции?

    @rPman
    Со своим сервисом - сделать batch запросы, позволяющие одним запросом выполнять несколько операций, например запрашивать/модифицировать информацию сразу по нескольким объектам. Но еще лучше, реализовать требуемую логику изменения объектов прямо на сервере, грубый пример - нужно сдвинуть координаты объектов на величину [dx,dy,dz], вместо того чтобы все с сервиса выгружать, менять координаты и загружать обратно, нужно сделать команду, которая на вход получит этот вектор и все сделает на сервере (это самый быстрый вариант)

    С чужими сервисами, либо искать api для batch операций, либо переделать код на параллельные запросы, надеясь что этот сервис оптимизирован на такую работу (не факт, и даже если есть, количество параллельных запросов могут быть ограничены). Если ни то ни другое не доступно, размести свой сервис территориально максимально близко к чужому сервису (так как очень часто задержки сетевых запросов вносят очень большую задержку), само собой сначала удостовериться что причина именно в этом а не тормозах сервиса
    Ответ написан
    3 комментария