[i]Или как ИИ может сэкономить вам часы работы, но не спасёт от необходимости проверять каждый шаг.[/i] [center][img=154508]claudeai-vs-chatgpt.jpg[/img][/center] Сентябрь 2024 года. Мы, команда [b]StockSharp[/b], активно используем ИИ для написания коннекторов к криптобиржам. Но спешу вас предупредить — если вы читаете эту статью в 2025 году или позже, всё это может уже устареть. Если вы из будущего, добро пожаловать в прошлое! И не забудьте проверить, актуальны ли наши методы. Наш путь с ИИ начался с [b]ChatGPT 3.5[/b], который, откровенно говоря, не мог бы написать не то что коннектор для криптобиржи, а даже простую торговую стратегию. Однако с приходом [b]ChatGPT 4.0[/b] и [b]Claude Sonnet 3.5[/b] ситуация резко изменилась. Теперь ИИ может писать сложные модули кода, хотя и с оговорками: приходится вмешиваться, уточнять и исправлять ошибки, что, впрочем, стало уже нормой в нашем процессе. [h2]Шаг 1. Запуск проекта в Claude.ai[/h2] Прежде чем начать писать новый коннектор, первым делом мы создаём [b]проект в Claude.ai[/b]. Это не просто чат, который забудет всё, как только вы его закроете. Проект позволяет сохранять всё, что вы туда загружаете: коды, документы, комментарии. Это аналог настроек [b]Custom GPT[/b], где ИИ «учится» на ваших примерах и указаниях, а не просто отвечает на вопросы. [center][img=154507]project.png[/img][/center] [b]Интерфейс создания проекта в Claude.ai. Здесь сохраняются все данные и примеры, что позволяет поддерживать контекст работы.[/b] Claude.ai — это как ваш личный программист, который что-то понимает, но без вашего надзора может написать что-то, от чего волосы на голове зашевелятся. Так что держите рядом документацию и свою бдительность. [h2]Шаг 2. Копируем существующий код[/h2] Чтобы не изобретать велосипед каждый раз, мы берем за основу уже существующий коннектор, например, для [b]Coinbase[/b]. Мы копируем структуру проекта и адаптируем все ключевые классы и методы под новую биржу. Это только начало пути — дальше начинается самое интересное. [h2]Шаг 3. Адаптация WebSocket клиента[/h2] Теперь пора настраивать WebSocket клиента для новой биржи. Для примера возьмем [b]GateIO Spot WebSocket v4[/b]. Claude.ai помогает с генерацией кода, но тут начинается наша постоянная борьба с неточностями. ИИ частенько генерирует код, который в теории кажется правильным, но на практике нужно дополнять и исправлять. [center][img=154495]1.png[/img][/center] [b]Исходный код WebSocket клиента для одной из бирж, сгенерированный Claude.ai. ИИ предлагает расширить типы данных и события.[/b] Когда доходит до аутентификации, ИИ часто ошибается, и приходится вручную добавлять недостающие элементы. Claude может забыть даже такие базовые вещи, как авторизация перед подпиской на каналы WebSocket. [center][img=154486]2.png[/img][/center] [b]Claude.ai допустил ошибку при реализации авторизации WebSocket. Мы исправили код и добавили корректную авторизацию перед подключением.[/b] Мы также переделываем код так, чтобы сделать его более гибким и передавать адрес WebSocket через параметр. Это позволяет нам легко адаптироваться к различным биржам и их API. [center][img=154499]3.png[/img][/center] [b]Пример кода, где веб-сокет передается как параметр, что делает архитектуру более гибкой.[/b] [h2]Шаг 4. Настройка REST клиента и адаптера[/h2] После настройки WebSocket клиента мы приступаем к REST клиенту. Claude.ai генерирует базовые запросы, но нам приходится вручную уточнять, корректны ли они. API бирж отличаются, и нужно быть внимательным, чтобы не пропустить важные детали в документации. Когда клиент готов, мы переходим к адаптеру для [b]StockSharp[/b], где происходит основная магия — обработка данных и их приведение к единому формату. Тут ИИ помогает с генерацией классов, но всегда стоит сверять каждый шаг. Особенно это важно при работе с JSON данными, передаваемыми через API биржи. [center][img=154488]5.png[/img][/center] [b]Сгенерированные классы для доменной модели. Мы вручную дополнили их атрибутами и исправили типы данных.[/b] Claude может предложить интересные решения, но нужно добавлять атрибуты, такие как [b]JsonProperty[/b], чтобы корректно обрабатывать данные биржи. Если вы этого не сделаете — готовьтесь к сюрпризам в виде неверных данных в отчётах. [center][img=154493]6.png[/img][/center] [b]Мы добавили атрибуты JsonProperty для правильной работы с JSON данными.[/b] Обработка торговых данных — ещё один важный этап, где ИИ не всегда справляется самостоятельно. Например, данные сделок и их обработка могут вызывать ошибки. [center][img=154497]7.png[/img][/center] [b]Claude исправляет код для обработки данных торгов, передаваемых через WebSocket и REST API.[/b] [h2]Шаг 5. Оптимизация и новые методы[/h2] Claude.ai неплохо справляется с написанием базовых методов, таких как работа со свечами и торговыми данными. Однако его предложения требуют оптимизации. Мы часто выносим логику в отдельные классы для лучшей структуры. [center][img=154489]8.png[/img][/center] [b]Оптимизация методов для работы со свечами и данными торговли через WebSocket, вынесенные в отдельные классы.[/b] Также приходится дорабатывать методы для работы с торговыми операциями через WebSocket. И хотя ИИ помогает автоматизировать такие процессы, код всё равно требует финальной доводки. [center][img=154494]9.png[/img][/center] [b]Claude.ai добавил методы для торговых операций в SocketClient, но их пришлось оптимизировать и исправить ошибки.[/b] [h2]Шаг 6. Тестирование — код работает не всегда с первой попытки[/h2] Когда код готов, самое время его протестировать. Здесь ИИ снова приходит на помощь, но все его предложения нужно тщательно проверять, потому что часто с первого раза всё работает некорректно. Например, при тестировании работы с API биржи мы сталкиваемся с ошибками при запросах инструментов и позиций. [center][img=154490]10.png[/img][/center] [b]Claude.ai предложил код для работы с REST API Gate.io, но его нужно было тестировать и дорабатывать.[/b] [h2]Шаг 7. Конвертация данных для спота и деривативов[/h2] Claude.ai помогает с генерацией классов для работы со спотом и деривативами, но опять же — будьте готовы к тому, что нужно будет корректировать методы и типы данных вручную. Например, работа с деривативами на Gate.io требует дополнительных проверок и доработок. [center][img=154492]11.png[/img][/center] [b]Claude.ai предложил класс Extensions для поддержки конвертации данных между спотом и деривативами на Gate.io.[/b] Мы также адаптируем [b]SpotAdapter[/b] для корректной обработки данных биржи, используя методы конвертации, предложенные Claude. [center][img=154498]12.png[/img][/center] [b]SpotAdapter был переписан с учетом изменений в HttpClient и SocketClient, используя методы из Extensions.[/b] [h2]Шаг 8. Адаптер для фьючерсов и исправления ошибок[/h2] Claude.ai помогает с написанием методов для работы с фьючерсами, но, как и прежде, требуется тщательная проверка логики и исправление ошибок. Например, при сборке стакана данных мы столкнулись с проблемой обработки исключений. [center][img=154496]13.png[/img][/center] [b]Сгенерированный HttpClient для работы с фьючерсами через REST API Gate.io.[/b] Claude также иногда ошибается с обработкой данных в адаптере фьючерсов. Приходится вручную настраивать методы для правильной работы со стаканом. [center][img=154491]14.png[/img][/center] [b]Исправленный адаптер для фьючерсов с правильной логикой работы со стаканом.[/b] В результате после исправлений ИИ предложил оптимизированный метод для работы с ордербуками и восстановления данных. [center][img=154501]15.png[/img][/center] [b]Оптимизация методов для восстановления и работы со стаканом данных на основе предложений Claude.ai.[/b] [h2]GitHub Copilot — разрекламированная игрушка или настоящий помощник?[/h2] GitHub Copilot, который Microsoft и GitHub активно продвигают как инструмент будущего, на самом деле в своём текущем виде является скорее интересной игрушкой, нежели полноценным помощником программиста. Copilot помогает писать нужные участки кода, но по-настоящему выдающихся результатов от него ждать не стоит — его сила в доработке и предложениях по улучшению кода. Однако его главный плюс — это тесная интеграция со средой разработки, что делает его удобным для быстрых правок и завершения шаблонного кода, с чем он справляется гораздо лучше, чем написание сложных логических модулей. [center][img=154506]copilot.gif[/img][/center] [h2]ИИ: усилитель возможностей для профессионалов и преграда для новичков[/h2] Если вы начинающий разработчик и только погружаетесь в мир программирования, то вам, мягко говоря, не повезло. На текущий момент ИИ никак не повысит вашу эффективность. Более того, доверяя ИИ в сложных задачах, вы можете ещё больше запутаться в коде и проблемах, которые он генерирует. Совсем другое дело — опытные программисты. Для профессионалов ИИ действительно становится мощным инструментом, который преумножает их возможности: увеличивает скорость разработки, предлагает решения, обогащает знания о различных технологиях и библиотеках. В таком тандеме ИИ помогает фокусироваться на ключевых аспектах проекта, оставляя рутину на его плечах. Однако, как мы уже упоминали, ИИ бьёт по самому слабому месту — начинающим разработчикам, делая разрыв между ними и профессионалами ещё большим. Опытные программисты могут быстро выявить ошибки ИИ, исправить их и продолжить работу, тогда как новичок просто утонет в этих проблемах. Иронично, что в то время, когда ИИ задумывался как помощь для всех, он пока лишь увеличивает этот разрыв. Но стоит надеяться, что в будущем ИИ станет более самостоятельным в программировании, и тогда этот разрыв может не только перестать расти, но и вовсе исчезнуть, выравнивая шансы для всех, независимо от их уровня подготовки.