Нейросеть для 👨💻 программистов
Программистам — раздел онлайн нейросети Аливия на базе ИИ для разработчиков: код на десяти языках, SQL-запросы, вёрстка, разбор ошибок, подбор стека, проверка безопасности, идеи для ботов. Здесь 15 инструментов, а примеры взяты из реальных диалогов. Код компилируется, но читать его нужно: версию фреймворка и особенности проекта ИИ может не учесть.
Работает онлайнРусский и другие языкиТест бесплатно, без регистрацииБез VPNДоступ 24/7Голосовой ввод и файлы
Зарегистрируйтесь и подтвердите почту — начислим ещё 30 000 символов на 30 дней.ЗарегистрироватьсяОнлайн
Программистам · раздел нейросети Аливия
Конструктор запросов для программистов
Выберите задачу, язык и версии — запрос к коду соберётся сам. Или найдите инструмент под свой язык.
Ещё настройки
Запрос подставится в поле чата — его можно поправить перед отправкой.
План решения
- Чтение URL из файла:
- Создать функцию
read_urls_from_file(file_path), которая будет читать URLs из указанного файла и возвращать их в виде списка.
- Создать функцию
- Отправка запросов:
- Создать функцию
fetch_url(session, url), которая будет отправлять GET-запрос к переданному URL и обрабатывать ответы, включая ошибки 429 и таймауты.
- Создать функцию
- Основная логика:
- Создать функцию
fetch_all_urls(urls), которая будет использоватьhttpxдля управления асинхронными запросами с ограничением на 10 одновременных запросов. - Внутри этой функции обрабатывать ошибки входных данных и внешних вызовов.
- Создать функцию
- Запись результатов в CSV:
- Создать функцию
write_results_to_csv(results, output_file), которая будет записывать результаты в указанный CSV файл.
- Создать функцию
- Тестирование:
- Написать тесты для проверки:
- обычного случая (существующий файл с URL)
- граничного случая (пустой файл)
- ошибочного ввода (файл не существует)
- Написать тесты для проверки:
Код
import os
import httpx
import asyncio
import csv
async def fetch_url(session, url):
try:
response = await session.get(url, timeout=15)
return url, response.status_code, response.elapsed.total_seconds()
except httpx.HTTPStatusError as e:
if e.response.status_code == 429:
return await fetch_url(session, url) # повторный запрос
return url, e.response.status_code, None
except httpx.TimeoutException:
return url, 'Timeout', None
except Exception as e:
return url, f'Error: {str(e)}', None
async def fetch_all_urls(urls):
results = []
async with httpx.AsyncClient() as session:
tasks = []
for url in urls:
tasks.append(fetch_url(session, url))
responses = await asyncio.gather(*tasks, return_exceptions=True)
results.extend(responses)
return results
def read_urls_from_file(file_path):
try:
with open(file_path, 'r') as file:
urls = [line.strip() for line in file if line.strip()]
if not urls:
raise ValueError("Нет URL для обработки.")
return urls
except FileNotFoundError:
raise FileNotFoundError(f"Файл {file_path} не найден.")
except Exception as e:
raise e
def write_results_to_csv(results, output_file):
with open(output_file, 'w', newline='') as file:
writer = csv.writer(file)
writer.writerow(['URL', 'Статус', 'Время ответа'])
writer.writerows(results)
def main(input_file, output_file):
urls = read_urls_from_file(input_file)
results = asyncio.run(fetch_all_urls(urls))
write_results_to_csv(results, output_file)
if __name__ == "__main__":
input_file = 'urls.txt' # Укажите путь к файлу с URL
output_file = 'results.csv' # Укажите путь к выходному файлу CSV
main(input_file, output_file)Запуск
- Убедитесь, что у вас установлен Python 3.12 и библиотека
httpxверсии 0.27. - Создайте файл
urls.txtв той же директории, где находится ваш скрипт, и добавьте в него URL на каждой строке. - Запустите скрипт в командной строке:
python ваш_скрипт.pyТесты
Для тестирования кода, вы можете использовать библиотеку pytest. Создайте файл test_script.py:
import pytest
from ваш_скрипт import read_urls_from_file, write_results_to_csv, fetch_all_urls
def test_read_urls_from_file():
with open('test_urls.txt', 'w') as f:
f.write('http://example.com\nhttp://example.org\n')
urls = read_urls_from_file('test_urls.txt')
assert urls == ['http://example.com', 'http://example.org']
def test_empty_file():
with open('empty.txt', 'w'):
pass
with pytest.raises(ValueError, match="Нет URL для обработки."):
read_urls_from_file('empty.txt')
def test_non_existent_file():
with pytest.raises(FileNotFoundError):
read_urls_from_file('non_existent.txt')Запустите тесты с помощью команды:
pytest test_script.pyЭтот код должен соответствовать всем указанным требованиям и корректно функционировать.
Ошибка, с которой вы столкнулись, возникает из-за того, что метод fetch не встроен в Node.js по умолчанию. Вместо этого, вам нужно использовать пакет, который обеспечивает функциональность fetch. В последних версиях Node.js это можно сделать с помощью встроенного node-fetch, если вы используете его с import.
Вот исправленный код с использованием node-fetch:
import fetch from 'node-fetch';
const response = await fetch(url);
const data = await response.json();
console.log(data.items.length);Чтобы проверить, что ошибка ушла, выполните код и убедитесь, что массив data.items существует и его длина отображается без ошибок. Удачи!
Версия PostgreSQL: 15.3 (актуальная стабильная на момент my knowledge cutoff)
-- Запрос для получения топ-5 городов по выручке за последние 3 полных месяца
SELECT c.city, SUM(o.total) AS total_revenue
FROM orders o
JOIN customers c ON o.customer_id = c.id
WHERE o.created_at >= date_trunc('month', CURRENT_DATE - INTERVAL '3 months')
AND o.created_at < date_trunc('month', CURRENT_DATE)
GROUP BY c.city
ORDER BY total_revenue DESC
LIMIT 5;Этот код выбирает топ-5 городов по выручке за последние 3 полных месяца, объединяя таблицы orders и customers по идентификатору клиента. Запрос фильтрует заказы, чтобы учитывать только те, которые были созданы в пределах 3 полных месяцев до текущей даты (не включая текущий месяц). Затем он группирует результаты по городам и сортирует их по сумме выручки в порядке убывания, ограничивая результат пятью городами с наибольшей выручкой.
Ваш код анализирует текст из файла "text.txt", подсчитывает количество вхождений каждого слова и выводит 10 самых часто встречающихся слов вместе с их частотой. На вход подается текстовый файл, а на выходе — список из 10 слов и их количеств.
Блоки кода:
- Импорт библиотеки:
from collections import Counter- Чтение файла и подготовка текста:
words = open("text.txt", encoding="utf-8").read().lower().split()- Подсчет частоты слов:
top = Counter(w.strip(".,!?") for w in words).most_common(10)- Вывод результатов:
for word, n in top:
print(f"{word}: {n}")for word, n in top:: Цикл перебирает каждый элемент в спискеtop, гдеword— это слово, аn— количество его вхождений.print(f"{word}: {n}"): Выводит каждое слово и его частоту в формате "слово: количество".
Ошибки и опасные места:
- Не закрывается файл: В коде не указано, что файл нужно закрыть после его использования. Это может привести к утечке ресурсов. Лучше использовать конструкцию
with open(...) as file. - Предположения о содержимом файла: Код предполагает, что файл
text.txtсуществует и доступен для чтения. Если файл отсутствует, возникнет ошибка. - Обработка знаков препинания: Метод
strip()удаляет только указанные знаки в начале и в конце слова, но не учитывает их в середине. Это может привести к тому, что слово "слово," будет считаться другим от "слово".
Этот код подходит для Python 3.x.
Вот улучшенный код с учетом ваших требований:
<?php
function readCsvAndSumColumn($filename, $columnIndex) {
if (!file_exists($filename)) {
throw new Exception("Файл не найден: $filename");
}
if (($fileHandle = fopen($filename, 'r')) === false) {
throw new Exception("Не удалось открыть файл: $filename");
}
$sum = 0;
while (($row = fgetcsv($fileHandle)) !== false) {
if (isset($row[$columnIndex]) && is_numeric($row[$columnIndex])) {
$sum += (float)$row[$columnIndex];
}
}
fclose($fileHandle);
return $sum;
}
try {
$total = readCsvAndSumColumn('data.csv', 2);
echo $total;
} catch (Exception $e) {
echo 'Ошибка: ' . $e->getMessage();
}Изменения
- Функция
readCsvAndSumColumn→ Почему: Вынесена логика в отдельную функцию для повышения читаемости и переиспользуемости кода. - Проверка существования файла → Почему: Добавлена проверка на существование файла
data.csvдля обработки ошибки. - Обработка ошибок при открытии файла → Почему: Добавлена обработка исключений на случай, если файл не удалось открыть.
- Проверка на существование элемента в строке → Почему: Убедился, что индекс колонки существует и является числом, чтобы избежать предупреждений.
- Использование
floatдля суммирования → Почему: Приведение значений к типуfloatдля корректного суммирования чисел. - Обработка исключений → Почему: Использование блока
try-catchдля отлова и вывода ошибок, что улучшает устойчивость кода.
Код стал более структурированным, с понятными именами функций и улучшенной обработкой ошибок, при этом сохраняет прежнее поведение.
Ваш код содержит несколько уязвимостей. Вот анализ:
- Строка или фрагмент:
$res = mysqli_query($db, "SELECT * FROM users WHERE id = $id");- Категория OWASP: A1:2021 - Broken Authentication
- Опасность: Уязвимость SQL-инъекции; злоумышленник может изменить значение
idв URL и выполнять произвольные SQL-запросы. - Как исправить: Использовать подготовленные выражения (prepared statements) для безопасного выполнения SQL-запросов.
- Строка или фрагмент:
echo "<h1>Привет, " . $u['name'] . "</h1>";- Категория OWASP: A3:2021 - Sensitive Data Exposure
- Опасность: Потенциальная XSS-уязвимость; если пользовательское имя содержит вредоносный код, он будет выполнен в браузере.
- Как исправить: Экранировать выводимые данные с помощью
htmlspecialchars().
Исправленный код:
<?php
// Подключение к базе данных
$db = new mysqli([ЗАПОЛНИТЬ: хост], [ЗАПОЛНИТЬ: пользователь], [ЗАПОЛНИТЬ: пароль], [ЗАПОЛНИТЬ: база данных]);
// Проверка подключения
if ($db->connect_error) {
die("Connection failed: " . $db->connect_error);
}
$id = $_GET['id'];
// Использование подготовленных выражений для предотвращения SQL-инъекций
$stmt = $db->prepare("SELECT * FROM users WHERE id = ?");
$stmt->bind_param("i", $id);
$stmt->execute();
$res = $stmt->get_result();
$u = $res->fetch_assoc();
if ($u) {
// Экранирование данных перед выводом
echo "<h1>Привет, " . htmlspecialchars($u['name']) . "</h1>";
} else {
echo "<h1>Пользователь не найден</h1>";
}
// Закрытие соединения
$stmt->close();
$db->close();Замечания:
- Код должен работать на версиях PHP от 5.5 и выше (для поддержки
mysqliи подготовленных выражений). - Все ключи и пароли вынесены в переменные, которые должны быть объявлены отдельно в виде переменных окружения.
Ответы получены 29.09.2026 в этом чате и приведены без правок. Выделено то, чего не было в запросе.
💻 ИИ-инструменты для программистов
Что можно сделать в этом разделе
Раздел собран по языкам и типовым задачам разработки: сгенерировать функцию, разобрать чужой код, найти ошибку, написать запрос к базе или скрипт для сервера. На каждой странице свои примеры и кейсы с настоящим кодом, а не с псевдокодом из учебника.
| Задача | Инструмент | Что получите |
|---|---|---|
| Бэкенд и скрипты | Python, PHP, Java, C#, C++ | Рабочий фрагмент с комментариями и обработкой ошибок |
| Фронтенд и вёрстка | JavaScript, HTML, CSS | Разметка и стили с учётом адаптивности и доступности |
| Данные и интеграции | SQL, REST API | Запрос под вашу схему таблиц, примеры вызовов и разбор ответа |
| Администрирование | Linux, VBA | Команды и скрипты с объяснением каждого флага |
| Архитектура и безопасность | Выбор стека, Безопасность кода, Идеи ботов | Сравнение вариантов по критериям, разбор уязвимых мест |
Как получить код, который не придётся переписывать
Модель пишет тем лучше, чем точнее описано окружение. Разница между «напиши парсер» и запросом с версиями библиотек — это разница между демонстрацией и рабочим кодом.
- Назовите версии. Язык, фреймворк, база данных, окружение: Python 3.12, Laravel 11, PostgreSQL 16.
- Опишите вход и выход. Что приходит на вход, что должно получиться, что делать при ошибке.
- Приложите схему или фрагмент. Для SQL — структуру таблиц, для правки — сам код, а не его пересказ.
- Просите комментарии и тесты. Код с пояснениями и парой тест-кейсов проверяется в разы быстрее.
- Сообщайте текст ошибки целиком. Стектрейс говорит больше, чем описание «не работает».
Готовая формула запроса: «Python 3.12, библиотека httpx. Нужна функция, которая получает список из 500 URL и скачивает их с ограничением 10 одновременных запросов, повтором при 429 и таймаутом 15 секунд. Верни код с типами, комментариями и примером запуска».
Что проверять перед тем, как взять код в проект
- Запустите. Код может выглядеть корректно и не собираться: проверка занимает минуту.
- Сверьте API библиотек. Модель иногда использует методы, которых в вашей версии уже нет.
- Посмотрите на обработку ошибок. Счастливый путь пишется всегда, а таймауты и повторы — только если попросить.
- Проверьте безопасность. Параметризованные запросы вместо конкатенации, экранирование вывода, отсутствие секретов в коде.
- Не отправляйте закрытый код и ключи. Для разбора хватает обезличенного фрагмента.
Сгенерированный код — это черновик от коллеги, который не видел вашего проекта. Ревью и тесты никто не отменял, зато рутинную часть работы он снимает полностью.
Комментарий эксперта
«По логам видно закономерность: те, кто присылает текст ошибки и фрагмент кода, получают решение с первого раза; те, кто пишет «не работает, помоги», — переписываются по пять кругов. Ещё один приём, который экономит часы: попросите сначала план решения — какие функции нужны и как они связаны. Если план верный, код почти всегда будет верным».
— Аливия Кирсанова, основатель и руководитель Аливии
Кейсы: реальные задачи с кодом

Запрос: «Достался проект без автора, падает при запуске. Вот стектрейс и файл — объясни, что происходит»

Запрос: «Перепиши этот скрипт с PHP на Python, сохрани логику и добавь обработку ошибок»

Запрос: «Напиши тесты для модуля расчёта скидок, покрой крайние случаи»

Запрос: «Посмотри diff перед релизом: что здесь может выстрелить на проде»

Запрос: «Собери описание методов по коду контроллера: параметры, ответы, коды ошибок»

Частые вопросы о нейросети для программистов
На каких языках программирования помогает Аливия?
Можно ли доверять сгенерированному коду?
Поможет ли она найти ошибку в моём коде?
Заменит ли нейросеть программиста?
Можно ли учиться программированию с её помощью?
Как передать нейросети большой файл с кодом?
Пишет ли она тесты и документацию?
Понимает ли она контекст проекта?
Можно ли использовать код в коммерческом проекте?
Чем это лучше, чем искать ответ в поиске?
Итог
Раздел закрывает повседневную рутину разработчика: каркас функции, разбор ошибки, запрос к базе, скрипт для сервера. Проверка и ревью остаются за вами, а время на набор и поиск по документации экономится. Попробуйте на своей задаче бесплатно; при регулярной работе посмотрите тарифы.