📌 Менеджер паролей 👨💻
#минипроект
import csv
from cryptography.fernet import Fernet
passwords = []
key = Fernet.generate_key()
cipher_suite = Fernet(key)
def encrypt_password(password):
return cipher_suite.encrypt(password.encode())
def decrypt_password(encrypted_password):
return cipher_suite.decrypt(encrypted_password).decode()
def add_password():
website = input("Website: ")
username = input("Username: ")
password = input("Password: ")
encrypted_password = encrypt_password(password)
passwords.append({
"website": website,
"username": username,
"password": encrypted_password
})
with open('passwords.csv', mode='a', newline='') as file:
writer = csv.writer(file)
writer.writerow([website, username, encrypted_password])
def get_password(website):
for entry in passwords:
if entry["website"] == website:
username = entry["username"]
encrypted_password = entry["password"]
decrypted_password = decrypt_password(encrypted_password)
print(f"Website: {website}")
print(f"Username: {username}")
print(f"Password: {decrypted_password}")
return
print("Website not found")
with open('passwords.csv', mode='r') as file:
reader = csv.reader(file)
for row in reader:
passwords.append({
"website": row[0],
"username": row[1],
"password": row[2]
})
while True:
print("\n1. Add Password")
print("2. Get Password")
print("3. Exit")
choice = input("Enter your choice: ")
if choice == '1':
add_password()
elif choice == '2':
website = input("Enter website: ")
get_password(website)
elif choice == '3':
break
else:
print("Invalid choice")
#минипроект
💩6🔥4🤡4💊3
Forwarded from Python вопросы с собеседований
🐍 Хитрая задача для опытных Python-разработчиков
Почему этот код не работает как ожидается?
На первый взгляд, ты ожидаешь результат:
Но на деле вывод будет:
🔍 Что пошло не так
lambda: i не захватывает значение i, а замыкается на саму переменную i, которая одна и та же для всех лямбд.
К моменту вызова всех функций i = 4 (последнее значение цикла), и все лямбды возвращают одно и то же.
Это классический пример late binding — лямбда "вспоминает" переменную, а не её значение в момент создания.
✅ Как исправить
Способ 1: фиксируем значение i через аргумент по умолчанию
Теперь вывод:
Способ 2: functools.partial
🧠 Почему это важно
Такие баги встречаются:
- в колбэках и ивентах (например, при работе с GUI или CLI)
- в генерации функций внутри циклов
- в async-замыканиях и DSL-интерпретаторах
- в тестовых фреймворках, где создаются сценарии динамически
Понимание области видимости, замыканий и позднего связывания (late binding) — необходимый навык для confident-сеньора.
@python_interview
Почему этот код не работает как ожидается?
def magic():
return [lambda: i for i in range(5)]
funcs = magic()
results = [f() for f in funcs]
print(results)
На первый взгляд, ты ожидаешь результат:
[0, 1, 2, 3, 4]
Но на деле вывод будет:
[4, 4, 4, 4, 4]
🔍 Что пошло не так
lambda: i не захватывает значение i, а замыкается на саму переменную i, которая одна и та же для всех лямбд.
К моменту вызова всех функций i = 4 (последнее значение цикла), и все лямбды возвращают одно и то же.
Это классический пример late binding — лямбда "вспоминает" переменную, а не её значение в момент создания.
✅ Как исправить
Способ 1: фиксируем значение i через аргумент по умолчанию
def magic():
return [lambda i=i: i for i in range(5)]
funcs = magic()
results = [f() for f in funcs]
print(results)
Теперь вывод:
[0, 1, 2, 3, 4]
Способ 2: functools.partial
from functools import partial
def f(x): return x
funcs = [partial(f, i) for i in range(5)]
results = [f() for f in funcs]
print(results)
🧠 Почему это важно
Такие баги встречаются:
- в колбэках и ивентах (например, при работе с GUI или CLI)
- в генерации функций внутри циклов
- в async-замыканиях и DSL-интерпретаторах
- в тестовых фреймворках, где создаются сценарии динамически
Понимание области видимости, замыканий и позднего связывания (late binding) — необходимый навык для confident-сеньора.
@python_interview
❤6👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Можно ли сделать так, чтобы весь Python-код, использующий for x in ..., внезапно начал вести себя иначе — без изменения самого цикла?
Ответ: да, если переопределить поведение итератора. На экране показа — трюк, где обычный список «врет» в цикле и выдает неожиданные значения.
Трюк можно использовать и с dict, set и кастомными генераторами. Особенно удобно в юнит-тестах или визуализациях.
class FakeList(list):
def __iter__(self):
return iter(["test", "mock", "override"])
data = FakeList([1, 2, 3])
for x in data:
print(x) # выведет: test, mock, override
https://youtube.com/shorts/QhZtRx1ukoc?feature=share
Please open Telegram to view this post
VIEW IN TELEGRAM
👎4
⚡ Microsoft выкатили **amplifier** - новую экспериментальную платформу для сборки AI-инструментов без лишнего кода.
Что это:
- способ описать экспертный процесс в виде шагов и автоматически превратить его в работающий инструмент;
- возможность комбинировать такие инструменты между собой, создавая цепочки автоматизации;
- платформа для исследований, поэтому всё ещё активно меняется.
Чем хорош инструмент:
- позволяет быстро превращать повторяющиеся задачи в автономные AI-процессы;
- помогает строить «агентов» с ролями — исследователь, критик, исполнитель;
- снижает порог входа: достаточно описать логику, а не писать всю реализацию.
Это пока исследовательский проект, но потенциал — большой.
👉 Репозиторий: https://github.com/microsoft/amplifier
@pythonl
Что это:
- способ описать экспертный процесс в виде шагов и автоматически превратить его в работающий инструмент;
- возможность комбинировать такие инструменты между собой, создавая цепочки автоматизации;
- платформа для исследований, поэтому всё ещё активно меняется.
Чем хорош инструмент:
- позволяет быстро превращать повторяющиеся задачи в автономные AI-процессы;
- помогает строить «агентов» с ролями — исследователь, критик, исполнитель;
- снижает порог входа: достаточно описать логику, а не писать всю реализацию.
Это пока исследовательский проект, но потенциал — большой.
👉 Репозиторий: https://github.com/microsoft/amplifier
@pythonl
❤6🦄2
This media is not supported in your browser
VIEW IN TELEGRAM
🚨 SQL Никогда НЕ ДЕЛАЙ ТАК #sql
НИКОГДА НЕ ЛОМАЙ ИНДЕКСЫ ФУНКЦИЯМИ: не оборачивай индексируемые поля в функции внутри WHERE.
Как только ты пишешь LOWER(), CAST(), COALESCE() или любые вычисления по колонке — индекс перестаёт работать, и запрос падает в полное сканирование таблицы.
Это одна из самых тихих причин, почему запросы внезапно превращаются в тормоза.
Вместо этого приводи значения заранее или используй функциональные индексы.
https://www.youtube.com/shorts/AyiAslOeJFA
НИКОГДА НЕ ЛОМАЙ ИНДЕКСЫ ФУНКЦИЯМИ: не оборачивай индексируемые поля в функции внутри WHERE.
Как только ты пишешь LOWER(), CAST(), COALESCE() или любые вычисления по колонке — индекс перестаёт работать, и запрос падает в полное сканирование таблицы.
Это одна из самых тихих причин, почему запросы внезапно превращаются в тормоза.
Вместо этого приводи значения заранее или используй функциональные индексы.
Плохо: индекс по email НЕ используется
SELECT *
FROM users
WHERE LOWER(email) = 'user@example.com';
-- Хорошо: нормализуем значение заранее
SELECT *
FROM users
WHERE email = 'user@example.com';
-- Или создаём функциональный индекс (PostgreSQL)
CREATE INDEX idx_users_email_lower ON users (LOWER(email));
https://www.youtube.com/shorts/AyiAslOeJFA
❤5👍2
This media is not supported in your browser
VIEW IN TELEGRAM
📃 КАК СОЗДАТЬ ФАЙЛ В PYTHON ПРОЩЕ ВСЕГО
Самый простой и надёжный способ создать файл в Python это использовать встроенную функцию open в режиме записи. Python автоматически создаёт файл если его нет и сразу даёт доступ для записи. Такой подход работает на любых системах и не требует дополнительных библиотек. Подписывайся, больше фишек каждый день !
Самый простой и надёжный способ создать файл в Python это использовать встроенную функцию open в режиме записи. Python автоматически создаёт файл если его нет и сразу даёт доступ для записи. Такой подход работает на любых системах и не требует дополнительных библиотек. Подписывайся, больше фишек каждый день !
❤4
⚡️ Полное руководство по Bash: от основ к продвинутым темам
Bash (Bourne Again SHell) — это одна из самых популярных Unix-оболочек, широко используемая для запуска команд и написания скриптов в Linux и macOS.
Скрипты Bash позволяют автоматизировать рутинные задачи, объединять команды в программы и управлять системой через командную строку.
Данное руководство последовательно познакомит вас с основами Bash (синтаксис, переменные, условия, циклы и т.д.), а затем перейдет к продвинутым возможностям (таким как настройка strict mode, использование trap-обработчиков, планирование задач через cron и др.). Мы рассмотрим практические примеры скриптов, сопровождая их поясняющими комментариями, чтобы у вас сложилось цельное понимание создания надежных Bash-скриптов.
https://uproger.com/polnoe-rukovodstvo-po-bash-ot-osnov-k-prodvinutym-temam/
Видео: https://www.youtube.com/watch?v=ei0a1TT4ukU
Bash (Bourne Again SHell) — это одна из самых популярных Unix-оболочек, широко используемая для запуска команд и написания скриптов в Linux и macOS.
Скрипты Bash позволяют автоматизировать рутинные задачи, объединять команды в программы и управлять системой через командную строку.
Данное руководство последовательно познакомит вас с основами Bash (синтаксис, переменные, условия, циклы и т.д.), а затем перейдет к продвинутым возможностям (таким как настройка strict mode, использование trap-обработчиков, планирование задач через cron и др.). Мы рассмотрим практические примеры скриптов, сопровождая их поясняющими комментариями, чтобы у вас сложилось цельное понимание создания надежных Bash-скриптов.
https://uproger.com/polnoe-rukovodstvo-po-bash-ot-osnov-k-prodvinutym-temam/
Видео: https://www.youtube.com/watch?v=ei0a1TT4ukU
❤9🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Нужно быстро поднять сервер под Python-проект без лишней возни?
Ставим системные пакеты, создаём отдельного пользователя, настраиваем venv, делаем systemd-сервис и сразу получаем автозапуск + рестарт при падении.
Идеально для FastAPI / Flask / любых API и ботов.
sudo apt update && sudo apt install -y python3-venv python3-pip nginx
sudo useradd -m -s /bin/bash app && sudo mkdir -p /opt/app && sudo chown -R app:app /opt/app
sudo -u app bash -lc 'cd /opt/app && python3 -m venv venv && ./venv/bin/pip install -U pip uvicorn fastapi'
sudo tee /etc/systemd/system/app.service >/dev/null <<'EOF'
[Unit]
After=network.target
[Service]
User=app
WorkingDirectory=/opt/app
ExecStart=/opt/app/venv/bin/uvicorn main:app --host 0.0.0.0 --port 8000
Restart=always
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now app
sudo systemctl status app --no-pager
https://www.youtube.com/shorts/cbUNWU1Sbsc
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍1
В этом бесплатном курсе вы шаг за шагом научитесь собирать данные с веб-сайтов с помощью Python. Мы начнём с основ парсинга (скрапинга) - автоматического сбора информации с веб-страниц – и постепенно перейдём к более продвинутым темам.
Материал разбит на модули с понятными примерами и практическими заданиями после каждой темы. Курс рассчитан на начинающих и продолжающих (junior/middle) разработчиков, знакомых с основами Python.
📌 Гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ Экономичный способ развернуть DeepSeek локально запускай модель через Ollama.
Так ты получаешь мощную LLM на своём ПК без облака и без огромных требований к железу.
Что важно:
- выбирай DeepSeek Distill 7B/8B или 14B
- формат GGUF + квантизация Q4 (лучший баланс)
- поднимаешь как локальный API и дергаешь из Python, бота или агента
Плюс:
- приватность - всё работает локально
- дешево - не нужен сервер
- можно быстро менять модель, не трогая код
https://www.youtube.com/shorts/zjn2pXrGbXI
Так ты получаешь мощную LLM на своём ПК без облака и без огромных требований к железу.
Что важно:
- выбирай DeepSeek Distill 7B/8B или 14B
- формат GGUF + квантизация Q4 (лучший баланс)
- поднимаешь как локальный API и дергаешь из Python, бота или агента
Плюс:
- приватность - всё работает локально
- дешево - не нужен сервер
- можно быстро менять модель, не трогая код
# 1) Установи Ollama (macOS/Linux/Windows)
# https://ollama.com
# 2) Запусти экономичную DeepSeek модель
ollama pull deepseek-r1:8b
ollama run deepseek-r1:8b
# 3) Проверка: запрос к локальному API
curl http://localhost:11434/api/generate \
-d '{"model":"deepseek-r1:8b","prompt":"Explain transformers simply","stream":false}'
# 4) Использование из Python
python - << 'PY'
import requests
r = requests.post(
"http://localhost:11434/api/generate",
json={
"model": "deepseek-r1:8b",
"prompt": "Сделай краткий план изучения SQL за 7 дней",
"stream": False
},
timeout=120
)
print(r.json()["response"])
PY
https://www.youtube.com/shorts/zjn2pXrGbXI
❤4👍4👎1🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Ппрофессиональный подход к математике в Python строится не вокруг «посчитать формулу», а вокруг правильного стека инструментов и воспроизводимости. Всегда разделяй символьную математику, численные методы и работу с данными.
Для аналитики и вывода формул используй SymPy, для быстрых численных расчётов - NumPy, для научных алгоритмов - SciPy, для больших таблиц экспериментов - Pandas.
Никогда не смешивай «магические числа» в коде - все параметры выноси в переменные. Работай в Jupyter или VS Code с ноутбуками, фиксируй версии библиотек и обязательно проверяй устойчивость решений через разные методы (например, интеграл численно и аналитически). Так код становится не просто расчётом, а научным инструментом.
import numpy as np
import sympy as sp
from scipy import integrate
# 1. Символьная математика
x = sp.symbols('x')
expr = sp.sin(x) / x
analytic_integral = sp.integrate(expr, (x, 1, 10))
# 2. Численная математика
f = lambda x: np.sin(x) / x
numeric_integral, error = integrate.quad(f, 1, 10)
# 3. Векторизация вместо циклов
arr = np.linspace(1, 10, 1_000_000)
fast_result = np.sin(arr) / arr
print("Analytic:", analytic_integral)
print("Numeric:", numeric_integral, "Error:", error)
https://www.youtube.com/shorts/UAcoiqRthrE
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Управление зависимостями в Python проектах
Важно знать, что управление зависимостями в проектах на Python - это ключевой аспект, который часто упускается из виду на курсах. Использование виртуальных окружений и файла зависимостей, таких как `requirements.txt`, поможет избежать конфликтов между библиотеками и упростит развертывание проектов.
Подписывайся, больше фишек каждый день !
Важно знать, что управление зависимостями в проектах на Python - это ключевой аспект, который часто упускается из виду на курсах. Использование виртуальных окружений и файла зависимостей, таких как `requirements.txt`, поможет избежать конфликтов между библиотеками и упростит развертывание проектов.
Подписывайся, больше фишек каждый день !
# Создание виртуального окружения
python -m venv myenv
# Активация виртуального окружения
# На Windows
myenv\Scripts\activate
# На macOS/Linux
source myenv/bin/activate
# Установка зависимостей
pip install requests numpy
# Сохранение зависимостей в файл
pip freeze > requirements.txt
# Установка зависимостей из файла
pip install -r requirements.txt
t.me/ai_machinelearning_big_data - наш телеграм канал с уроками
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ Python-код, который работает, но делает лишнее в 100 раз
Этот Python-код выглядит нормально.
Он работает.
Он проходит тесты.
Но делает лишнюю работу в десятки, а иногда и в сотни раз.
Самая частая причина — ты случайно превращаешь линейный алгоритм в квадратичный.
Типичный сценарий:
- есть список
- внутри цикла ты каждый раз делаешь in, count, index
- на маленьких данных всё быстро
- на реальных — приложение начинает «тормозить без причины»
Проблема в том, что:
- list — это O(n) для поиска
- поиск внутри цикла = O(n²)
- Python честно делает работу, которую ты ему попросил
Профи думают не «работает или нет», а сколько лишних операций выполняется.
Правильный подход:
- если нужны проверки принадлежности — используй set
- если считаешь элементы — используй dict или Counter
- если данные не меняются — предвычисляй один раз
Этот приём один из самых частых источников скрытых performance-багов в Python-коде.
Этот Python-код выглядит нормально.
Он работает.
Он проходит тесты.
Но делает лишнюю работу в десятки, а иногда и в сотни раз.
Самая частая причина — ты случайно превращаешь линейный алгоритм в квадратичный.
Типичный сценарий:
- есть список
- внутри цикла ты каждый раз делаешь in, count, index
- на маленьких данных всё быстро
- на реальных — приложение начинает «тормозить без причины»
Проблема в том, что:
- list — это O(n) для поиска
- поиск внутри цикла = O(n²)
- Python честно делает работу, которую ты ему попросил
Профи думают не «работает или нет», а сколько лишних операций выполняется.
Правильный подход:
- если нужны проверки принадлежности — используй set
- если считаешь элементы — используй dict или Counter
- если данные не меняются — предвычисляй один раз
Этот приём один из самых частых источников скрытых performance-багов в Python-коде.
# ❌ Плохо: O(n²)
users = ["alice", "bob", "carol", "dave"]
for u in users:
if u in users: # каждый раз полный проход списка
process(u)
# ✅ Хорошо: O(n)
users = ["alice", "bob", "carol", "dave"]
users_set = set(users)
for u in users:
if u in users_set:
process(u)
👎4❤2👍1
This media is not supported in your browser
VIEW IN TELEGRAM
👇Python баг, который выглядит безобидно… но ломает логику #python
fruits = ["apple", "lime", "orange",
"pineapple", "orange"]
for f in fruits:
if f == "orange":
fruits.remove(f)
print(fruits)
Ожидание: оба orange удалятся.
Реальность: один orange остаётся.
Почему так происходит?
Ты изменяешь список во время итерации.
После удаления элементы сдвигаются, и цикл пропускает следующий элемент.
Это классический сценарий продакшн-багов:
• код выглядит правильно
• тесты могут пройти
• но данные обрабатываются неправильно
Правильный вариант:
fruits = [f for f in fruits if f != "orange"]
Мораль:
Изменяешь коллекцию во время обхода -Deploy first. Pray later.
fruits = ["apple", "lime", "orange",
"pineapple", "orange"]
for f in fruits:
if f == "orange":
fruits.remove(f)
print(fruits)
Ожидание: оба orange удалятся.
Реальность: один orange остаётся.
Почему так происходит?
Ты изменяешь список во время итерации.
После удаления элементы сдвигаются, и цикл пропускает следующий элемент.
Это классический сценарий продакшн-багов:
• код выглядит правильно
• тесты могут пройти
• но данные обрабатываются неправильно
Правильный вариант:
fruits = [f for f in fruits if f != "orange"]
Мораль:
Изменяешь коллекцию во время обхода -Deploy first. Pray later.
❤3👍1💊1
Forwarded from Python вопросы с собеседований
Media is too big
VIEW IN TELEGRAM
🐍 Python-библиотеки - сложность изучения 🔥
• 🌐 Requests - 🟢 Легко
• 📊 Pandas - 🟢 Легко
• 🔢 NumPy - 🟢 Легко
• 📈 Matplotlib - 🟢 Легко
• 🕸️ BeautifulSoup - 🟢 Легко
• ⚡ FastAPI - 🟡 Легко–Средне
• 🧩 Pydantic - 🟡 Легко–Средне
• 📦 Pytest - 🟡 Легко–Средне
• 🗄️ SQLAlchemy - 🟠 Средне
• 🤖 Scikit-Learn - 🟠 Средне
• 🔥 PyTorch - 🟠 Средне
• 🧠 TensorFlow - 🟠 Средне
• 📉 Statsmodels - 🟠 Средне
• 🧬 Dask - 🔴 Сложно
• ⚡ Ray - 🔴 Сложно
• 🔗 LangChain - 🟠 Средне
• 🧠 LangGraph - 🟣 Очень сложно
Самые лёгкие, вроде Requests или BeautifulSoup, решают одну конкретную задачу.
У них простой API — сделал запрос, получил данные, готово.
Чуть сложнее библиотеки вроде FastAPI или Pydantic.
Они требуют понимания архитектуры приложений, валидации данных и работы серверов.
Средний уровень - SQLAlchemy, PyTorch, TensorFlow.
Здесь уже нужно понимать базы данных, машинное обучение и математические модели.
А вот Dask и Ray считаются сложными не потому, что код длинный. А потому что они работают с распределёнными вычислениями - кластеры, параллельность, управление ресурсами.
То есть чем выше уровень библиотеки, тем больше системного мышления и архитектуры нужно понимать.
Поэтому сложность Python-библиотек -
это не про Python. Это про уровень задач, которые они решают.
#Python #PythonDev #MachineLearning
https://www.youtube.com/shorts/vDm-vYmoxx0
🐍 Python полезные ресурсы 🚀Max
• 🌐 Requests - 🟢 Легко
• 📊 Pandas - 🟢 Легко
• 🔢 NumPy - 🟢 Легко
• 📈 Matplotlib - 🟢 Легко
• 🕸️ BeautifulSoup - 🟢 Легко
• ⚡ FastAPI - 🟡 Легко–Средне
• 🧩 Pydantic - 🟡 Легко–Средне
• 📦 Pytest - 🟡 Легко–Средне
• 🗄️ SQLAlchemy - 🟠 Средне
• 🤖 Scikit-Learn - 🟠 Средне
• 🔥 PyTorch - 🟠 Средне
• 🧠 TensorFlow - 🟠 Средне
• 📉 Statsmodels - 🟠 Средне
• 🧬 Dask - 🔴 Сложно
• ⚡ Ray - 🔴 Сложно
• 🔗 LangChain - 🟠 Средне
• 🧠 LangGraph - 🟣 Очень сложно
Самые лёгкие, вроде Requests или BeautifulSoup, решают одну конкретную задачу.
У них простой API — сделал запрос, получил данные, готово.
Чуть сложнее библиотеки вроде FastAPI или Pydantic.
Они требуют понимания архитектуры приложений, валидации данных и работы серверов.
Средний уровень - SQLAlchemy, PyTorch, TensorFlow.
Здесь уже нужно понимать базы данных, машинное обучение и математические модели.
А вот Dask и Ray считаются сложными не потому, что код длинный. А потому что они работают с распределёнными вычислениями - кластеры, параллельность, управление ресурсами.
То есть чем выше уровень библиотеки, тем больше системного мышления и архитектуры нужно понимать.
Поэтому сложность Python-библиотек -
это не про Python. Это про уровень задач, которые они решают.
#Python #PythonDev #MachineLearning
https://www.youtube.com/shorts/vDm-vYmoxx0
🐍 Python полезные ресурсы 🚀Max
👍4🤮1
Forwarded from Python/ django
This media is not supported in your browser
VIEW IN TELEGRAM
Внутри - 40+ моделей (2024–2026):
от DeepSeek и Qwen до Nemotron и Grok.
Для каждой модели есть:
• наглядная схема архитектуры
• размер и число параметров
• тип декодера
• ссылки на технические отчёты и конфиги
• иногда даже реализации
По сути это единая карта современных LLM, где можно быстро посмотреть, как устроены разные модели и как эволюционируют архитектуры.
https://sebastianraschka.com/llm-architecture-gallery/
🐍 Python полезные ресурсы 🚀Max
@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍2🔥1
🚀 Ты всё ещё называешь обёртку над ChatGPT «AI-продуктом»?
Пока ты пишешь промпты - рынок уже ушёл дальше.
Сейчас выигрывают не те, кто умеет красиво формулировать запросы, а те, кто строит агентные системы:
- принимают решения сами
- ходят в API
- работают с Postgres и Redis
- управляют браузером через Playwright
- доводят задачи до результата без человека
И вот правда, о которой мало говорят:
90% таких систем умирают между ноутбуком и продом.
Работает локально. Ломается в реальности.
Нет архитектуры. Нет устойчивости. Нет деплоя.
AI Agents Engineering - курс со Stepik, который закрывает этот разрыв.
- LangGraph, AutoGen, Computer Use
- архитектура агентов, а не «скрипты на коленке»
- LLMOps, логирование, стабильность
- деплой в Docker и работа в проде
8 модулей, 120+ шагов, всё через практику.
На выходе не «сертификат ради галочки», а:
- рабочий production-агент
- понимание, как строить такие системы с нуля
- навыки, за которые уже платят
Сейчас самое окно входа.
Через полгода это станет базой, а не преимуществом.
Скидка 55% действует ещё 48 часов: https://stepik.org/a/276971/
Пока ты пишешь промпты - рынок уже ушёл дальше.
Сейчас выигрывают не те, кто умеет красиво формулировать запросы, а те, кто строит агентные системы:
- принимают решения сами
- ходят в API
- работают с Postgres и Redis
- управляют браузером через Playwright
- доводят задачи до результата без человека
И вот правда, о которой мало говорят:
90% таких систем умирают между ноутбуком и продом.
Работает локально. Ломается в реальности.
Нет архитектуры. Нет устойчивости. Нет деплоя.
AI Agents Engineering - курс со Stepik, который закрывает этот разрыв.
- LangGraph, AutoGen, Computer Use
- архитектура агентов, а не «скрипты на коленке»
- LLMOps, логирование, стабильность
- деплой в Docker и работа в проде
8 модулей, 120+ шагов, всё через практику.
На выходе не «сертификат ради галочки», а:
- рабочий production-агент
- понимание, как строить такие системы с нуля
- навыки, за которые уже платят
Сейчас самое окно входа.
Через полгода это станет базой, а не преимуществом.
Скидка 55% действует ещё 48 часов: https://stepik.org/a/276971/
👍3❤2
Создание новой переменной в Python фактически означает создание нового имени для уже существующего объекта. Именно поэтому этот процесс называется связыванием имени (name binding).
Существует множество способов связать имя с объектом. Вот примеры того, как можно связать
Также можно привязать имя к объекту, манипулируя глобальным пространством имен:
Однако нельзя сделать то же самое с
Существует множество способов связать имя с объектом. Вот примеры того, как можно связать
x:
x = y # Присваивание
import x # Импорт модуля
class x: pass # Определение класса
def x(): pass # Определение функции
def y(x): pass # Определение аргумента функции
for x in y: pass # Перебор элементов в цикле
with y as x: pass # Использование в конструкции with
except y as x: pass # Обработка исключения
Также можно привязать имя к объекту, манипулируя глобальным пространством имен:
In : x
NameError: name 'x' is not defined # Ошибка: переменная x не определена
In : globals()['x'] = 42 # Присваивание через globals()
In : x
Out: 42 # Теперь x привязан к 42
Однако нельзя сделать то же самое с
locals(), так как изменения словаря locals() игнорируются.👍2❤1
🚀 Browser Harness - это легкий инструмент, позволяющий LLM выполнять любые задачи в браузере с полной свободой действий. Он самозаживляющийся и работает напрямую с Chrome через WebSocket, позволяя агенту добавлять недостающие функции по мере выполнения задач.
Основные моменты:
- Полная свобода действий для LLM в браузере.
- Самообучение: агент создает недостающие функции.
- Поддержка бесплатных удаленных браузеров.
- Простой и понятный код (~592 строки Python).
- Возможность добавления новых доменных навыков.
📌 GitHub: https://github.com/browser-use/browser-harness
#python
Основные моменты:
- Полная свобода действий для LLM в браузере.
- Самообучение: агент создает недостающие функции.
- Поддержка бесплатных удаленных браузеров.
- Простой и понятный код (~592 строки Python).
- Возможность добавления новых доменных навыков.
📌 GitHub: https://github.com/browser-use/browser-harness
#python
❤1👍1
Большой русскоязычный roadmap по машинному обучению: от первого
import numpy до LLM, RAG, fine-tuning, AI-агентов и MLOps.И это не просто очередной список ссылок в стиле «посмотри 40 курсов и станешь ML engineer». Внутри нормальная структура: что учить, в каком порядке, зачем это нужно и какой практический артефакт должен появиться после каждого этапа.
Roadmap разбит на 7 треков:
- фундамент: Python, математика, статистика, инструменты
- классический ML: scikit-learn, табличные данные, метрики, валидация
- Deep Learning: PyTorch, CNN, RNN, training loop
- LLM и трансформеры: attention, KV-cache, RAG, LoRA, агенты
- Generative AI: изображения, видео, аудио, мультимодальность
- MLOps и прод: Docker, Kubernetes, CI/CD, мониторинг, serving
- специализация: CV, NLP, RecSys, RL, Safety
Самое полезное - там честно написано, что ML это не только «обучить модель». В реальности большая часть работы живёт вокруг данных, метрик, деплоя, мониторинга, воспроизводимости и понимания, почему модель вообще ошибается.
Хорошая мысль из roadmap: LLM не делает джуна сениором. Она ускоряет того, кто понимает базу. Без базы человек просто превращается в оператора Copilot, который не может объяснить, почему модель сломалась.
По времени тоже без инфоцыганства:
- 0-3 месяца: Python, математика, классический ML
- 3-6 месяцев: Deep Learning и PyTorch
- 6-12 месяцев: LLM, RAG, fine-tuning, AI-агенты
- 12+ месяцев: MLOps, прод, масштабирование, специализация
Короче, если давно хотели системно зайти в ML, а не прыгать между роликами про ChatGPT, Stable Diffusion и «топ-10 библиотек», это хороший ориентир.
https://github.com/justxor/MachineLearningRoadmap/tree/main
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤2🔥2😭1