Легкий путь в Python
4.74K subscribers
96 photos
17 videos
3 files
153 links
Я — Алексей Яковенко, опытный разработчик Python. Здесь вы найдете статьи, заметки, посты и видео для прокачки навыков программирования 🐍 Интересное найдет и новичок, и профи 💡

📬По вопросам: https://t.me/yakvenalexx
🗣Сообщество: https://vk.cc/cxKNTb
Download Telegram
🚀 Новая статья на Хабре: Как создать MCP-сервер и научить ИИ работать с любым кодом и инструментами через LangGraph

Друзья, только что вышла моя новая большая статья про MCP (Model Context Protocol) — технологию, которая позволяет научить нейросети работать с вашим кодом и инструментами!

🎯 Что внутри:

• Разбираем отличия MCP от обычных tools
• Создаём собственные инструменты для ИИ
• Подключаем готовые MCP-серверы и обычные тулзы через LangGraph
• Пишем полноценный математический MCP-сервер с нуля
• Деплоим в облако и тестируем с реальными агентами

📖 Читать статью:
👉 https://habr.com/ru/companies/amvera/articles/931874/

💻 Исходный код из статьи:

1️⃣ Полноценный MCP-сервер + клиент для тестирования:

👉 https://github.com/Yakvenalex/FastMCP-Match-Example

2️⃣ Примеры интеграции Tools и MCP с LangGraph и LangChain (полные примеры кода из новой и предыдущей статьи):

👉 https://github.com/Yakvenalex/LangGraphExample

Статья получилась объёмная, но без воды — только практика и рабочий код. После неё сможете создавать собственные MCP-серверы и подключать их к любым ИИ-агентам 🔥

P.S. Если тема зайдёт — планирую серию по LangGraph с детальным разбором графов состояний. Пишите, интересно ли вам!
Please open Telegram to view this post
VIEW IN TELEGRAM
4🔥51👍108👎1🤔1🕊1🙈1
🚀АНОНС: Мини-курс "Создание умных AI-агентов с LangGraph"

Друзья, тема AI-агентов набирает просто космические обороты! 📈

Что происходит:

• Все больше компаний внедряют агентов в рабочие процессы
• LangGraph становится стандартом для сложных AI-систем
• Спрос на разработчиков AI-агентов растет как на дрожжах
• Но качественных материалов на русском языке катастрофически мало

Проблема в том, что большинство туториалов:

Поверхностные - показывают только "hello world"
Разрозненные - кусочки информации без системы
Без практики - теория без реальных примеров
Устаревшие - технологии развиваются быстрее материалов

💡 Поэтому я решил создать мини-курс из 4 статей

Каждая статья = практическое погружение с работающим кодом

📚 План курса:

Часть 1: Архитектура агентов

Фундамент графов состояний - узлы, рёбра, логика без AI

Цель: понять, как думают графы

Часть 2: Диалоговые агенты

Память, сообщения, контекст - интеграция LLM в графы

Цель: создать умного собеседника

Часть 3: Реактивные агенты

Инструменты, действия, MCP - агенты, которые умеют ДЕ-ЛАТЬ

Цель: от слов к реальным действиям

Часть 4: Intelligent RAG

Продвинутая работа с документами как граф состояний

Цель: система, которая умнее обычного RAG

🎯 Что получите:

Системное понимание LangGraph от основ до продвинутых паттернов
Готовый код для каждого примера - копируй и адаптируй
Практические кейсы - решения реальных задач
Пошаговые инструкции - без пропущенных деталей
Архитектурные решения - как строить масштабируемые системы

📅 Расписание:

Старт: через неделю
Периодичность: раз в неделю
Длительность: 4 недели

Формат: статьи на Хабре + эксклюзивные материалы здесь в канале

🔥 Почему сейчас самое время:

2025 год - это год массового внедрения AI-агентов. Те, кто освоит технологии сейчас, получат огромное преимущество на рынке.

Готовы погрузиться в мир умных агентов?

Пишите в комментариях, какие задачи планируете решать с помощью AI-агентов - учту в примерах! 👇

P.S. Все исходники будут доступны в канале. Плюс планирую разборы ваших вопросов в отдельных постах, так что включайте уведомления🔔
Please open Telegram to view this post
VIEW IN TELEGRAM
32🔥110👍218🤝7👏2🎉2🙏2🏆1🫡1🙊1
Печально, конечно, но он старался😅
😁30🤣31👍1🔥1👏1🤯1😢1🤓1👨‍💻1👀1
🔥 Как ГАРАНТИРОВАННО получать JSON из LLM с LangChain

Устали от того, что ваша модель возвращает "почти JSON" или обертывает ответ в лишний текст?

Сегодня покажу bulletproof решение с LangChain! 💪

🎯 Проблема
# Обычный запрос к LLM
response = model.invoke("Расскажи о Франции в JSON")
# Получаем: "Конечно! Вот информация о Франции: {"capital": "Париж"...} Надеюсь, это помогло!"


Куча лишнего текста
Нестабильный формат
Ошибки парсинга

Решение: JsonOutputParser + Pydantic

from langchain_core.output_parsers import JsonOutputParser
from langchain_core.prompts import PromptTemplate
from pydantic import BaseModel, Field

# 1️⃣ Определяем СТРОГУЮ структуру
class CountryInfo(BaseModel):
capital: str = Field(description="Столица страны")
population: int = Field(description="Население")
country_name: str = Field(description="Название страны")

# 2️⃣ Создаем умный парсер
parser = JsonOutputParser(pydantic_object=CountryInfo)

# 3️⃣ Магия format_instructions!
prompt = PromptTemplate(
template="""Информация о стране в JSON:

Страна: {country}
{format_instructions}

ТОЛЬКО JSON, никакого лишнего текста!""",
input_variables=["country"],
partial_variables={"format_instructions": parser.get_format_instructions()}
)


🚀 Результат
chain = prompt | model | parser
result = chain.invoke({"country": "Египет"})

# Получаем чистый dict:
{
"capital": "Каир",
"population": 104000000,
"country_name": "Египет"
}


🔍 Что происходит под капотом?

format_instructions автоматически генерирует инструкции:
The output should be formatted as a JSON instance that conforms to the JSON schema below.

{"properties": {"capital": {"title": "Capital", "type": "string"}, ...}}


LLM видит ТОЧНУЮ схему → возвращает правильный JSON!

💡 Pro Tips:

🔸 temperature=0.0 для максимальной стабильности
🔸 max_tokens=500 чтобы не получить роман вместо JSON
🔸 Всегда оборачивайте в try-catch для продакшена
🔸 Используйте Pydantic для валидации типов

🎁 Бонус: Отладка цепочки

def debug_chain(input_data):
step1 = prompt.invoke(input_data) # Смотрим промпт
step2 = model.invoke(step1) # Смотрим ответ модели
step3 = parser.invoke(step2) # Смотрим парсинг
return step3


🏆 Итог

JsonOutputParser + Pydantic = стабильный JSON в 100% случаев!

Больше никаких регулярок для извлечения JSON из текста 🙅‍♂️
🔥4014👍7🙏2🤔1🍾1👻1
Готов материал по первой части грядущего мини-курса по LangGraph. Публикацию планирую на понедельник. Осталось вычитать материал.
10🔥68👍208🥰2😱2🤓21🎉1🐳1
🚀 Обещанная первая часть мини-курса по LangGraph уже опубликована на Хабре!

В ней я рассказал про фундаментальные основы LangGraph — те самые "киты", на которых строятся все современные ИИ-агенты:

✔️ Графы состояний — почему это круче обычных if-else цепочек
✔️ Узлы и рёбра — как данные "путешествуют" по логике программы
✔️ Условные переходы — когда программа сама принимает решения
✔️ Циклы — как заставить код работать до достижения цели и почему это круче обычного цикла while
✔️ Визуализация — превращаем абстрактный код в понятные диаграммы

🎯 Главная фишка: никакого ИИ в первой части! Только чистая архитектура и логика. Зато теперь вы поймете, ПОЧЕМУ нейросети так идеально ложатся в концепцию графов.

📖 Читать на Хабре: "Создание умных AI-агентов: полный курс по LangGraph от А до Я. Часть 1. Архитектура: графы, узлы и состояния"

🧑‍💻Исходный код: GitHub

🔥 Во второй части подключим к графам настоящие нейросети и создадим первого умного агента!

Кто уже прочитал? Все ли было понятно? 👇
Please open Telegram to view this post
VIEW IN TELEGRAM
14🔥7215👍11🥰1🤔1🤯1👌1
Поддержка автора ☕️
Даже скромный вклад помогает мне писать чаще и сосредоточиться на полезных публикациях,
а не на рутине разработки.
Ваша поддержка — буст для новых идей, статей и полезного контента! 🚀
16🔥3014👍8🥰2🙈1🤝1🎄1😎1
Бесплатное сообщество «Легкий путь в Python» 🐍

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

💬 Там можно:

— Задавать вопросы и получать ответы от единомышленников
— Обсуждать Python, бэкенд и смежные технологии
— Делиться опытом, проектами и находками

Присоединяйтесь: @PythonPathMasterCommunity

Чем нас будет больше — тем живее и полезнее будут обсуждения. 🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥135👍2😁1🍌1🤝1😘1
🚀 OpenAI выпустили 2 модели GPT в открытый доступ!

OpenAI выкатили две open‑source модели с открытыми весами:

* gpt‑oss‑20B — запускается даже на ноутбуке с 16 ГБ памяти 💻
* gpt‑oss‑120B — почти уровень o4‑mini, для серверов и H100

🔥 Главное — поднять их можно буквально в пару команд через Ollama:

ollama pull gpt-oss:20b
ollama run gpt-oss:20b


Теперь мощь GPT у вас локально, с открытым кодом и без ограничений по API.

А Сэм Альтман тем временем намекает на скорый релиз GPT‑5 👀
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥42👍115🤯2😍2🎄2😘1
🚀 Подключаем нейросеть к PostgreSQL за 5 минут - минимум кода!

Показываю самый простой способ дать любой нейросети доступ к вашей базе данных PostgreSQL. Всего 30 строк кода! 💪

🔧 Установка зависимостей:
# MCP сервер для PostgreSQL
npm install -g mcp-postgres-server

# Python библиотеки
pip install langchain-deepseek langchain-mcp-adapters langgraph python-dotenv


📝 Создаем .env файл:
DB_HOST=localhost
DB_PORT=5432
DB_NAME=your_database
DB_USER=your_user
DB_PASSWORD=your_password
DEEPSEEK_API_KEY=your_api_key


💻 Полный рабочий код (30 строк!):

import asyncio
from dotenv import load_dotenv
from langchain_deepseek import ChatDeepSeek
from langchain_mcp_adapters.client import MultiServerMCPClient
from langgraph.prebuilt import create_react_agent
import os

load_dotenv()

async def get_all_tools():
"""Получение инструментов для работы с PostgreSQL"""
mcp_client = MultiServerMCPClient(
{
"postgres": {
"command": "npx",
"args": ["-y", "mcp-postgres-server"],
"env": {
"PG_HOST": os.getenv("DB_HOST"),
"PG_PORT": os.getenv("DB_PORT"),
"PG_USER": os.getenv("DB_USER"),
"PG_PASSWORD": os.getenv("DB_PASSWORD"),
"PG_DATABASE": os.getenv("DB_NAME"),
},
"transport": "stdio",
},
}
)
return await mcp_client.get_tools()

async def main():
# Получаем инструменты PostgreSQL
tools = await get_all_tools()

# Создаем агента с нейросетью
agent = create_react_agent(
model=ChatDeepSeek(model="deepseek-chat"),
tools=tools,
prompt="Ты помощник для работы с PostgreSQL базой данных.",
)

# Делаем запрос на естественном языке
result = await agent.ainvoke(
{
"messages": [
{
"role": "user",
"content": "Расскажи про пользователя с id 1",
}
]
}
)
# Выводим финальный ответ нейросети
final_message = result["messages"][-1]
print(final_message.content)

# Запуск
asyncio.run(main())


🎯 Пример вывода:
Пользователь с id 1 имеет следующие данные:

- **Имя**: Алексей (админ)
- **Email**: mr.mnogo@gmail.com (подтверждён)
- **Телефон**: не указан
- **Тип входа**: EMAIL
- **Роль**: 1 (предположительно администратор)
- **Юридическое лицо**: нет
- **Физическое лицо**: да

Пароль зашифрован и хранится в хешированном виде.


Что получаем:
• Нейросеть сама пишет и выполняет SQL запросы
• Отвечает на естественном языке
• Работает с любой PostgreSQL базой
• Всего 30 строк кода!

🔄 Смена нейросети:

Замените ChatDeepSeek на:
- ChatOpenAI для GPT
- ChatAnthropic для Claude
- ChatOllama для локальных моделей

💡 Примеры вопросов:
- "Сколько активных пользователей?"
- "Покажи заказы за вчера"
- "Найди самый популярный товар"
- "Кто не заходил более месяца?"

Просто спрашивайте на обычном языке - нейросеть все поймет! 🚀
🔥4513👍11❤‍🔥1🥰1🦄1
🚀 GPT‑5 теперь с нами — и умнее, чем когда-либо!

OpenAI не просто выкатили GPT‑5. Они сделали кое-что круче — внедрили автоматическую маршрутизацию моделей. Что это значит?

🤖 Больше не нужно выбирать модель вручную.
ChatGPT сам понимает, насколько сложный у тебя запрос, и:

- простые задачи решает супербыстрая mini‑модель,
- а вот на сложные рассуждения подключается мощнейшее ядро GPT‑5 (reasoning engine).

💡 В итоге:

- ты получаешь максимум скорости там, где это нужно,
- и глубокие, логичные ответы там, где нужна «мозговитость».

Что нового принесла GPT‑5?

Ещё более человеческий стиль ответов
Улучшено логическое и цепочечное мышление
Повышена точность кода, формул, reasoning
Быстрее, экономнее, умнее
Всё работает *на лету* — не надо переключать модели

🟢 Доступен всем — даже на бесплатном плане.
🔥 Plus / Pro / Team — получают полный доступ к reasoning‑ядру без серьёзных ограничений.

📺 Презентация и детали
4916🔥12🎉4😱1🕊1😘1
Сегодня особенный день - и не только потому, что 13 сентября официально День программиста с которым я вас поздравляю. Для меня это еще и день, когда я возвращаюсь к вам после более месячной паузы.

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

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

Что дальше:

- Вторая часть курса выйдет на следующей неделе - обещаю!
- Будем продолжать разбирать диалоговые агенты с практическими примерами
- Планирую учесть все ваши пожелания из комментариев

Спасибо, что остаетесь со мной и "Легким путем в Python". Программирование - это не только код, но и сообщество. И я рад быть частью нашего.

С праздником! 🐍
Please open Telegram to view this post
VIEW IN TELEGRAM
3🎉5925👍13🔥12❤‍🔥3🥰1🙏1🫡1
Процесс подготовки к выходу новой статьи идет полным ходом. Публикация, ориентировочно, выйдет в пятницу (19-го сентября). Будет много информации😉
239🔥27🎉10🤣4🥰1🤔1💘1
🤖 Вторая часть курса по LangGraph готова!

Статья уже написана и оформлена как черновик на Хабре, сейчас проходит финальную вычитку. В рамках статьи мы превратим безжизненные графы в настоящих AI-агентов с интеллектом и памятью! Что будет в статье?

Теоретическая база (без занудства):

- Типы сообщений (AIMessage, HumanMessage и зачем это нужно)
- Контекстная память агентов
- Шаблонизаторы и парсеры
- Архитектура мультимодельных систем

Практические кейсы:

- Агенты с долговременной памятью (100+ сообщений)
- Гарантированное получение валидного JSON от нейросетей
- Интеграция нескольких LLM в одном графе
- Интеллектуальная маршрутизация сообщений

Создадим агента, который запоминает ваше имя и профессию, ведет осмысленный диалог и получает функционал, который изначально в графовую систему не закладывали!

Пока ждете выхода:

📝 Первая часть: Архитектура: графы, узлы и состояния

💻 Исходный код второй части: GitHub

📅 Публикация: 20 сентября (суббота)

Ждете продолжение? 👀
Please open Telegram to view this post
VIEW IN TELEGRAM
4🔥6528🎉7❤‍🔥3👀2🙉2😘1
🎉 Вторая часть курса по LangGraph уже доступна!

Статья "Создание умных AI-агентов: полный курс по LangGraph от А до Я. Часть 2. Диалоговые агенты: память, сообщения и контекст" опубликована и готова к изучению!
В этой части мы превратили безжизненные графы в настоящих AI-агентов с интеллектом и памятью!

Что вы найдете в статье:

🧠 Теоретическая база (без занудства):

- Типы сообщений (AIMessage, HumanMessage и зачем это нужно)
- Контекстная память агентов
- Шаблонизаторы и парсеры
-Архитектура мультимодельных систем

⚡️ Практические кейсы:

- Агенты с долговременной памятью (100+ сообщений)
- Гарантированное получение валидного JSON от нейросетей
- Интеграция нескольких LLM в одном графе
- Интеллектуальная маршрутизация сообщений

Создадим агента, который запоминает ваше имя и профессию, ведет осмысленный диалог и получает функционал, который изначально в графовую систему не закладывали!

🔗 Читать статью: ЧИТАТЬ

📚 Полезные материалы:

📝 Первая часть: Архитектура: графы, узлы и состояния

💻 Исходный код: GitHub

🚀 А что дальше?

Уже собираю материал для третьей части! Там речь пойдет про Инструменты, действия, MCP - создадим агентов, которые умеют ДЕЛАТЬ, а не только говорить!

Понравилась статья? Делитесь впечатлениями! 👇
2🔥6315👍13🎉2🎄1💘1
🚀 Начал активную подготовку 3-й части курса по LangGraph!

После более чем месячной паузы между первой и второй частью решил не затягивать с продолжением. Материал уже собираю, код пишу — третья часть выйдет намного быстрее!

Тема: "Реактивные агенты: инструменты, действия, MCP"

🎯 От слов к делам:

Во второй части мы создали умных болтунов с памятью и JSON-ответами. Но они всё ещё не могут НИЧЕГО ДЕЛАТЬ в реальном мире.

В третьей части исправляем это критическое ограничение!

⚡️ Что будет в статье:

🔧 Model Context Protocol (MCP) — стандарт для подключения любых инструментов
📁 Файловые операции — агент читает CSV, создаёт отчёты
🗄 Работа с БД — SQL-запросы через естественный язык
🚀 DevOps-автоматизация — от git-мониторинга до автодеплоя
🛡 Безопасность — как дать агентам силу, но сохранить контроль

Представьте диалог:
"Проанализируй продажи за месяц"
🔍 Подключаюсь к БД...
📊 Анализирую данные...
📈 Создаю отчёт в Excel...
"Готово! Отчёт сохранён в sales_report.xlsx"


Пока кажется фантастикой? К концу статьи сами научитесь такое создавать!

📅 Планы по срокам:

Активно работаю над материалом, код уже тестирую. Третья часть выйдет в на следующей неделе (надеюсь), а не через месяц как в прошлый раз 😅

🔥 Будете ждать продолжение?
4🔥88👍22183🎉2🤩2👏1🤝1🙊1
⚡️ Как быстро превратить CSV в JSON на Python

Часто данные прилетают в формате CSV, а работать удобнее в JSON. Решается в пару строк кода:

import csv
import json

def csv_to_json(filename_in, filename_out):
with open(filename_in, "r", encoding="cp1251") as csvfile:
reader = csv.DictReader(csvfile, delimiter=";")
rows = list(reader)
with open(filename_out, "w", encoding="utf-8") as jsonfile:
json.dump(rows, jsonfile, ensure_ascii=False, indent=2)

# Пример:
csv_to_json("price.csv", "output.json")


🔑 На что стоит обратить внимание:

* Кодировка: в России CSV-файлы часто в cp1251, а JSON лучше сохранять в utf-8.
* Разделитель: Excel любит ; вместо привычной запятой ,. Если структура другая — не забудьте поменять delimiter.

В итоге получаем аккуратный output.json с красивыми отступами и без кракозябр. 🚀
22👍12🔥8🕊1👻1🤝1🤪1💘1
🚀 Третья часть курса по LangGraph практически готова!

После умных болтунов с памятью и JSON-ответами настало время дать агентам «руки» — инструменты для реальных действий.

Черновик статьи уже на Хабре, финальная вычитка идёт, код написан и проверен 😉

Что будет в статье?

📚 Теоретическая база (коротко и по делу):

- Что такое инструменты (Tools) и зачем они нужны
- Model Context Protocol (MCP) — стандарт для подключения любых действий
- Архитектура «реактивных» агентов

🛠 Практика и кейсы:

* Агент, который умеет читать файлы, анализировать CSV и сохранять отчёты
* SQL-запросы к базе прямо из естественного языка
* Мультиагентные системы: несколько агентов-экспертов в одном графе
* Безопасность: как дать агентам силу, но сохранить контроль

Пример диалога из статьи:

👩 Пользователь: «Проанализируй продажи за месяц»
🤖 Агент: «Подключаюсь к БД → Анализирую → Создаю отчёт…»
📊 «Готово! Отчёт сохранён в sales\_report.xlsx»

Уже не болтун, а настоящий цифровой ассистент!

📅 Публикация: 27 сентября (суббота)
💻 Исходный код третьей части: GitHub

🔗 Связь с предыдущими частями:

1️⃣Часть. Архитектура: графы, узлы и состояния

2️⃣Часть. Диалоговые агенты: память, сообщения и контекст

🔥 Название статьи:

Создание умных AI-агентов: полный курс по LangGraph от А до Я. Часть 3. Даём ИИ руки: работа с инструментами и MCP

Ждёте публикацию? 👀
Please open Telegram to view this post
VIEW IN TELEGRAM
542🔥32👍14🤩4🎉3👀3👌1💯1
🚀 Всё по плану!

Только что закончил финальную вычитку текста третьей части курса по LangGraph.

Уже завтра статья выйдет на Хабре 🙌

Будем давать ИИ «руки» — подключать инструменты и MCP, а агенты перестанут быть просто болтунами и начнут реально действовать

А дальше будет ещё интереснее 👉 Часть 4 задумывается как полноценный проект на LangGraph.

Но пока я не определился, какой именно — хочу услышать ваши идеи.

Что было бы круче разобрать:

— ассистента для работы с документами?
— мультиагентный проект с несколькими экспертами?
— или что-то под DevOps/кодинг?

Пишите в комментах 👇 именно ваши хотелки могут попасть в четвёртую часть 🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥3511👏3🎉21🙏1👀1