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

📬По вопросам: https://t.me/yakvenalexx
🗣Сообщество: https://vk.cc/cxKNTb
Download Telegram
🤖 А что если LLM сам решает, какие функции использовать?

Легко! В этом поможет LangGraph с супер-инструментом Tools 🛠

🔥 Смотрите, что происходит:

Пользователь задает один сложный вопрос:

> "Сложи 100 + 123432134 и расскажи о погоде в Краснодаре на сегодня"

🧠 LLM анализирует и сам принимает решения:

# Шаг 1: LLM понимает, что нужно 2 разные задачи
AIMessage: "Я выполню оба ваших запроса - сложу числа и получу информацию о погоде"

# Шаг 2: Автоматически вызывает СРАЗУ 2 инструмента
tool_calls: [
{'name': 'add_tool', 'args': {'a': 100, 'b': 123432134}},
{'name': 'get_weather_tool', 'args': {'city': 'Краснодар'}}
]


⚡️ Результат - молниеносно!

Математика: 100 + 123432134 = 123432234
Погода: 🌤 37.21°C, небольшая облачность, влажность 33% 🌡

🚀 Почему это круто?

Умное планирование - LLM сам определяет нужные инструменты
Параллельное выполнение - несколько задач одновременно
Естественное общение - один запрос, полный ответ
Масштабируемость - можно добавлять любые функции

💡 Представьте возможности:

@tool
def analyze_image(image_path: str) -> str:
"""Анализирует изображение с помощью ИИ"""

@tool
def send_email(to: str, subject: str, body: str) -> str:
"""Отправляет email"""

@tool
def query_database(sql: str) -> str:
"""Выполняет SQL запрос"""


Один запрос: *"Проанализируй это фото, найди в базе похожие товары и отправь результат на email"*

LLM автоматически: Анализ → SQL → Email

🎯 Главная фишка:

Вы пишете функцииLLM сам решает, когда их использовать

Больше никаких if/else и сложной логики! Просто опишите, что умеет каждая функция, а ИИ сам составит план выполнения.

LangGraph превращает набор функций в умного помощника, который знает, что и когда делать! 🤖
2👍21🔥1653🎉1👌1🤨1🤝1
Приятно такое читать, конечно😊 Рассказать вам о подходах создания такой "армии"?
🔥42👍87👏1😁1👌1🤗1😎1
🎉 Друзья, нас уже больше 4 000!

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

Это очень ценно. Обещаю не пропадать надолго и продолжать делиться простыми и понятными вещами из мира Python, искусственного интеллекта и мира IT в целом. 💻🐍

Спасибо, что вы со мной! 🙌
9🔥6318👍11🎉6🥰3🕊1🏆1🤗1
🚀 MCP + LangGraph + AI-агенты: играем по-взрослому

Слышали про LangGraph, tool-юзинг, агентов, MCP — но в голове каша?
Пора навести порядок. В новой статье разложу всё по полочкам — просто, с примерами и кодом:

🔹 Подключим готовый MCP-сервер как внешний инструмент
🔹 Напишем свой мини FastMCP-сервер с простыми функциями
🔹 Разберёмся, как работает режим «чёрного ящика» (ReactAgent) и чем он отличается от ручного биндинга тулзов
🔹 Поговорим, как, когда и зачем модель вызывает инструменты, и кто вообще всё это решает

💡 Будет интересно, если вы:

– хотите реально пощупать LangGraph
– ищете идеи для интеграции своих сервисов
– устали от теории и хотите живой код

Будете ждать? 🤔
20👍80🔥25🎉5💯53🙏3🙉21🤔1👾1
Подготовка к выходу нового материала идет полным ходом🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥297🎉2👌2🤝2🕊1🍾1
📝 Материал готов — осталось оформить!

Закончил подготовку материала для новой статьи на Хабре. Остается только структурировать всё в осмысленную статью.

🎯 О чём будет статья:
Снова погружаемся в тему MCP серверов и кастомных tools — как и обещал!

🔧 Пока ждёте статью, изучите два репозитория:

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

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

Что внутри:

• Базовая структура математического MCP-сервера
• Подходы к масштабированию (подобие роутеров)
• Клиент для тестирования MCP

2️⃣ Примеры интеграции Tools и MCP (как собственного так и готовых) с LangGraph и LangChain:

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

Что внутри:

• Интеграция MCP с LangGraph и LangChain
• Работа с кастомными тулзами и инструментами из MCP серверов
• Практические примеры использования

💡 Главный принцип: поймете код — поймете разработку MCP серверов любой сложности!

📊 Материала накопилось уже на полноценный курс по Langchain + LangGraph + FastMCP. Если увижу вашу активность — обязательно сделаю!

Следите за обновлениями 🚀
6🔥48👍118🙈2🤯1🎃1
🚀 Новая статья на Хабре: Как создать 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🔥49👍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🔥107👍207🤝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 из текста 🙅‍♂️
🔥3811👍6🙏2🤔1🍾1👻1
Готов материал по первой части грядущего мини-курса по LangGraph. Публикацию планирую на понедельник. Осталось вычитать материал.
10🔥67👍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🔥6913👍10🥰1🤔1🤯1👌1
Поддержка автора ☕️
Даже скромный вклад помогает мне писать чаще и сосредоточиться на полезных публикациях,
а не на рутине разработки.
Ваша поддержка — буст для новых идей, статей и полезного контента! 🚀
3🔥2714👍9🥰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
🔥40👍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 для локальных моделей

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

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

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

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

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

💡 В итоге:

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

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

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

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

📺 Презентация и детали
13🔥12🎉4😱1🕊1😘1