Pull to refresh
34
0
Кирилл Белов @KirillBelovTest

Инженер по автоматизации тестирования

Send message

AILink для Wolfram и плагины для ChatGPT

Reading time7 min
Views1.5K

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

Зачем я это делаю?

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

Во-вторых, у Wolfram Language есть фантастически крутой блокнотный пользовательский интерфейс. Речь конечно же про Mathematica и про наш родной отечественный WLJS Notebook. Формат интерактивного блокнота как нельзя лучше подходит для работы с чат-ботами, LLM и нейросетями.

В-третьих, в пакете AILink есть киллер-фича WL из коробки, которая доступна всем пользователям Wolfram Language - это Cloud Evaluate. С его помощью вам не потребуется VPN для обхода блокировки по региону со стороны OpenAI. То есть AILink в Wolfram Language работает в РФ без использования прокси!

В-четвертых, я как фанат Wolfram Language просто в очередной раз хочу про него рассказать.

Читать далее

12 причин, почему технологии Wolfram — это не Open Source

Reading time18 min
Views5.9K

На протяжении многих лет меня много раз спрашивали о моем мнении по поводу бесплатного программного обеспечения с открытым исходным кодом. Иногда вопросы вызваны сравнением с каким-либо перспективным или недавно вошедшим в моду проектом с открытым исходным кодом, иногда сравнением с застойным проектом с открытым исходным кодом, а иногда убеждением, что технологии Wolfram были бы лучше, если бы они были с открытым исходным кодом.

Я рискую тем, что спровоцирую open-source сообщество, но решил поделиться некоторыми своими взглядами. Хотя есть контрпримеры к большинству моих слов, не все пункты применимы к каждому проекту, и я несколько упускаю из виду различные виды "свободного" и "открытого", я надеюсь, что мне удалось выкристаллизовать некоторые ключевые моменты.

Подскаст, посвященной это теме размещен в SoundCloud.

TLDR: Большая часть этой статьи может быть подытожена двумя выводами: (1) бесплатное программное обеспечение с открытым исходным кодом может быть очень хорошим, но оно плохо справляется с тем, что мы пытаемся сделать; и большая часть причины в том, что (2) открытый исходный код распределяет разработку среди небольших, самостоятельно собирающихся групп, которые по отдельности решают части общей задачи, но масштабная, единая разработка требует централизованного контроля и постоянных усилий.

Я описал 12 причин, по которым считаю, что создание технологического стека Wolfram с использованием бесплатной модели с открытым исходным кодом было бы невозможным. Мне было бы интересно узнать ваше мнение в комментариях к этой статье.

Читать далее

Обзор изменений в WLJS Notebook

Level of difficultyEasy
Reading time6 min
Views1.2K

WLJS Notebook - это приложение, похожее на Jupyter и Mathematica. Пользовательский интерфейс сделан на Electron, а сервер работает на Wolfram Language. Т.е. это не очередная оболочка для Jupyter, а полностью самостоятельное приложение. Более подробно о проекте можно почитать в предыдущих статьях: Wolfram Language JavaScript Frontend и Open-source блокнот Wolfram Language или как воссоздать минимальное ядро Mathematica на Javascript. В этой статье я постараюсь рассказать о том, чего мы достигли за последнее время. Мы добавили новую функциональность, исправили множество ошибок оптимизировали взаимодействие с сервером и ускорили выполнение кода в интерфейсе. И конечно же внесли множество изменений в пользовательский интерфейс и улучшили графику. Обо всем этом подробнее под катом!

Читать далее

Как я реализовывал алгоритм маскирования для протокола WebSocket на Wolfram Language и подключал Си-библиотеку

Level of difficultyMedium
Reading time14 min
Views2.8K

Всем привет! Эта статья - про очень простой алгоритм маскирования данных при пересылке по протоколу WebSocket. Но рассказать я хочу не про сам алгоритм, а про путь оптимизации, который я прошел, чтобы сделать его эффективным. Я до сих пор уверен, что можно еще лучше и если так, то надеюсь уважаемые читатели мне подскажут! Приступим...

Читать далее

Как торгуют профессиональные трейдеры — анализ результатов конкурса Лучший Частный Инвестор

Level of difficultyEasy
Reading time8 min
Views8.3K

Каждый год Московская Биржа проводит конкурс Лучший Частный Инвестор (ЛЧИ). В 2023 году конкурс проходил с 5 октября по 21 декабря. В конкурсе мог поучаствовать любой желающий, а итоговые результаты опубликованы на странице со статистикой. Но чем же примечателен этот конкурс? Дело в том, что кроме результатов биржа также публикует полную историю торгов всех участников конкурса! Когда я впервые об этом узнал, то очень обрадовался. До сих пор я нигде не встречал такой же подробной статистики для реальных трейдеров по торгам на бирже. Все статьи на Хабре, которые я читал по данной тематике, обычно оперируют данными из отчетов бирж, которые обычный пользователь никак не может использовать и проверить самостоятельно. Здесь же нам доступно все. Поэтому я решил проанализировать эти замечательные результаты и выяснить насколько хорошо торгуют профессиональные трейдеры! Кого-то результаты удивят, а для кого-то они покажутся очевидными. Моя основная цель в том, чтобы просто изучить их и продемонстрировать сам способ анализа и визуализации.

Читать далее

Реализация динамического списка на WL

Level of difficultyEasy
Reading time7 min
Views616

Это тематическое продолжение моей предыдущей статьи, которая описывала реализацию связанного списка на Wolfram Language. На этот раз мы будем делать динамический список. Где-то его называют просто список либо динамический массив. В C# эта структура представлена типом List<T>, а в Java наиболее похожим классом является ArrayList, хотя насколько я помню называют его динамический массив.

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

Ниже реализация динамического массива/списка на Wolfram Language.

Читать далее

Велосипедим связанный список на Wolfram

Level of difficultyEasy
Reading time8 min
Views1K

Возможно 11 подписчиков моего блога обратили внимание на тот факт, что все мои статьи касаются языка Wolfram, а несколько последних статей вышли довольно громоздкими. Одна из последних статей была помечена Хабром как требующая в среднем 32 минуты на прочтение. Я посчитал, что это может отпугнуть пользователей (все 11 человек и не факт, что все они до сих пор читают Хабр) и решил попробовать писать более короткие статьи. Плюс я сам перестану теряться в большом количестве текста.

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

Ниже реализация структуры данных LinkedList на Wolfram Language.

Читать далее

Стиль написания кода на Wolfram Language

Level of difficultyEasy
Reading time18 min
Views4.2K

Я как большой фанат Wolfram Language (WL) очень часто изучаю открытые репозитории с кодом на этом языке. Изучив достаточно много кода я заметил, что стиль написания этого кода очень сильно разнится от проекта к проекту. Но так же я изучил много встроенных пакетов в Mathematica/Wolfram Language, которые были написаны разработчиками из Wolfram Research. В большинстве случаев они были написаны еще хуже (т.е. более неструктурированно и без единого стиля) чем пакеты такого же объема и сложности в открытом доступе. Но и среди проектов на GitHub и среди пакетов в языке мне попадались те, которые действительно хорошо написаны. Постепенно у меня сформировалось понимание того стиля, который будет наиболее прост и понятен большинству пользователей WL. В этой статье я хочу поделиться своим мнением и задокументировать тот стиль и ту конвенцию, которую я постепенно выработал для себя. Возможно, это станет еще кому-то полезно и изучив от корки до корки эту статью, а лучше вызубрив, чтобы от зубов отскакивало, вы станете так быстро решать уравнения и строить графики, что...

Читать далее

Вся мощь паттернов в Wolfram Language

Level of difficultyMedium
Reading time32 min
Views5K

Редкая птица долетит до середины Днепра, не каждый разработчик осилит все паттерны в WL. Нет ему равных языков в паттерн-матчинге. Чуден и необычен язык этот. Изобилует он точками, подчеркиваниями, да запятыми так, что в глазах рябит, да разум мутнеет.

В этой статье я постараюсь сделать как можно более подробный обзор на механизм сопоставления с образцом в Wolfram Language (WL) и покажу реальные примеры, где я сам и мои товарищи его активно используют. А также я поделюсь всеми неочевидными тонкостями работы с шаблонами, с которыми лично я столкнулся в процессе написания кода на WL. По возможности я буду приводить примеры на других языках программирования - на Python и C#. Это позволит всем, кто не знаком с WL лучше понять код и сравнить синтаксис.

Читать далее

ООП в Wolfram Mathematica

Level of difficultyMedium
Reading time13 min
Views3.1K

В комментариях к мой статье пользователь @Refridgeratorв ответ на мой вопрос написал, что в Wolfram Language (WL) не хватает следующего:

"ООП, перегрузки операторов, строгой типизации, событийно-ориентированного
программирования, дата-ориентированного программирования, параллельного программирования с примитивами синхронизации, средств отладки, скорости исполнения." (с) @Refridgerator

Я отлично понимаю, что вокруг Mathematica сложились некоторые исторические стереотипы. В них обычно WL представляется как калькулятор на стероидах или просто игрушка, или больше язык запросов, которым можно дополнительно решать уравнения и строить графики. Сегодня я попытаюсь показать, что в языке есть не только лишь графики, уравнения и интегралы. Вряд ли у меня хватит сил написать подробно касательно каждого пункта списка, но я постараюсь объяснить хотя бы часть.

Читать далее

Что вы знаете о символьном программировании?

Level of difficultyMedium
Reading time15 min
Views18K

Кликбейтный заголовок, риторический вопрос и обещание раскрыть тайну! Не самый лучший набор, но нормального названия для статьи мне в голову не пришло. Что же здесь все таки будет? Речь пойдет о реализации символьного программирования в Wolfram Language (WL). Я не буду рассказывать про отличия от других парадигм. А также здесь точно не будет общих определений. Вместо этого я попытаюсь ответить на несколько вопросов исходя из своего личного опыта и наблюдений.

Внимание! Я не математик и не знаю haskell и lisp! И буду рад если меня поправят настоящие математики, которые с ними знакомы.

Читать далее

Wolfram Language JavaScript Frontend

Level of difficultyEasy
Reading time10 min
Views3.8K

Wolfram Language JavaScript Frontend - это проект, цель которого в создании бесплатной альтернативы для Mathematica с открытым исходным кодом, но со своими особенностями и преимуществами, а если точнее то в реализации пользовательского интерфейса для ядра Wolfram Language (WL). Ядро входит в состав Математики либо распространяется в виде бесплатной утилиты командной строки - Wolfram Engine. То есть данное приложение это именно пользовательский интерфейс для WL, а не попытка полностью переписать язык. Ниже будет демонстрация возможностей, а так же отличия от Mathematica и других приложений. Вам это точно будет интересно, если вам нравится подход к программированию, который используют такие платформы как Mathematica, Jupyter, NTeract, JupyterLab, DeepNote, ObservableHQ, Google Collab и некоторые другие.

Внимание! В статье много изображений!

Читать далее

Публикация пакета Wolfram Language

Reading time11 min
Views1.7K

Несколько месяцев назад компания Wolfram Research открыла общий доступ к Wolfram Language Paclet Repository. Это централизованное хранилище пользовательских пакетов, написанных на языке Wolfram. Данное хранилище не является чем-то новым само по себе. Для языка Wolfram уже есть несколько возможных способов публикации пакетов. Однако, у официального репозитория есть несколько очень важный преимуществ перед существующими решениями. В этой статье я сначала коротко расскажу что из себя представляет репозиторий, а затем пошагово покажу как опубликовать в него свой собственный пакет при помощи предоставленных компанией Wolfram Research инструментов.

Читать далее

Вычисление весового спектра линейного подпространства в Wolfram Mathematica

Reading time14 min
Views4.2K


Процесс вычисления весового спектра


Первопричина


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

Читать дальше →

TelegramBot в облаке Wolfram

Reading time9 min
Views5.9K

Введение


Прошел тот период, когда каждая вторая статья на Habrahabr была посвящена написанию своего телеграмм-бота. Также прошел период времени, когда бота без трудностей можно было разместить на своем компьютере или хостинге в России. Еще полгода назад мой бот запускался просто на ноутбуке и не испытывал никаких проблем с подключением к API. Но сейчас, когда я задумался над тем, чтобы вернуть его в работу, я понял, что это будет не так легко. Не хотелось искать и настраивать прокси-сервер и тем более за рубежом. Также до этого я писал бота на Wolfram Language и не имел представления о том, как язык работает с прокси-серверами, так как до сих пор их не использовал. И тут появилась замечательная идея! Использовать Wolfram Cloud. В этой статье я хочу показать, как очень просто с регистрацией, но без смс можно запустить своего простого телеграм-бота, написанного на Wolfram Language. Из инструментов понадобится для этого только браузер.

Читать дальше →

Простой http-сервер на Wolfram Language

Reading time14 min
Views6.4K

Преамбула



Принципиальная схема работы сервера


Идея написания этой статьи возникла у меня после прочтения похожей статьи на Хабрахабр, где рассказывается о том, как создать собственный сервер на localhost с использованием Mathematica. Сам веб-сервер был написан с использованием Python и расширяемого сервера Tornado. Он обрабатывал запросы и отправлял ответы в формате json, а логика была реализована в Mathematica. При этом общение между Python и Mathematica происходило при помощи командной строки, а каждый запрос на сервер перезапускал ядро Математики. Остальные подробности можно прочитать в самой статье автора @Nilis. Здесь я хотел бы показать как написать простой код, который будет выполнять аналогичные функции — то есть создать http-сервер для обработки запросов и отправки ответов. Плюс хотелось бы показать некоторые интересные возможности Wolfram Language и его синтаксиса.

Читать дальше →

Information

Rating
Does not participate
Location
Саратов, Саратовская обл., Россия
Registered
Activity