$ sudo teach IT

Вы уже умеете писать промпты и использовать модели в интерактивном режиме — через ChatGPT, Claude или другие интерфейсы. Но как быть, если вы хотите подключить LLM к своему продукту? Например:

  • сделать Telegram-бота, который генерирует тексты;
  • создать AI-интерфейс для анализа данных в Notion;
  • автогенерировать отчёты из CRM по расписанию.

В этом уроке вы научитесь использовать OpenAI API и познакомитесь с библиотеками, которые помогают автоматизировать работу: LangChain, Flowise и аналоги.

Что вы узнаете в рамках статьи

  • Как получить ключ OpenAI API и отправить первый запрос;
  • Как учитывать токены, лимиты и ограничения контекста;
  • Как построить пайплайн с LangChain или Flowise;
  • Как вызывать модель из бота, приложения или сервиса;
  • Как проектировать надёжную LLM-интеграцию.

📓 Ключевые термины

  • API (Application Programming Interface) — интерфейс взаимодействия с моделью через код.
  • Token — минимальная единица текста, за которую списывается плата.
  • Rate limiting — ограничение частоты запросов к API.
  • Context window — максимальный объём текста, который модель может обработать за один раз.
  • LangChain / Flowise — фреймворки для работы с LLM и создания цепочек обработки.

📡 Подключение к OpenAI API

Если вы хотите использовать LLM в своём проекте — например, создать умного бота, генератор текстов или ассистента для анализа данных — вам понадобится подключиться к OpenAI API. Это как подключить "мозг" к вашему приложению.

🧰 1. Получите API-ключ

Перейдите в профиль OpenAI и сгенерируйте ключ. 📎 Аналогия: это как цифровой пропуск или бейджик — он подтверждает, что именно вы обращаетесь к модели и позволяет учитывать лимиты.

💡 Не публикуйте этот ключ публично (например, в GitHub) — с ним можно делать запросы от вашего имени.

📦 2. Установите библиотеку

Чтобы общаться с моделью на Python, используйте официальный клиент OpenAI. Установка простая:

pip install openai

📎 Аналогия: Вы устанавливаете “переводчика”, который будет пересылать ваши запросы к модели и возвращать ответы.

🧪 3. Простейший запрос

Вот минимальный рабочий пример на Python:

import openai

openai.api_key = "ваш_ключ"

response = openai.ChatCompletion.create(
  model="gpt-4",
  messages=[
    {"role": "user", "content": "Сделай краткое резюме этой статьи"}
  ]
)

print(response["choices"][0]["message"]["content"])

Что здесь происходит:

Строка Объяснение
import openai Подключаем библиотеку
openai.api_key = ... Указываем ключ доступа
ChatCompletion.create(...) Отправляем диалог модели
model="gpt-4" Выбираем нужную модель
messages=[...] Передаём историю общения: кто и что сказал
print(...) Показываем ответ модели

📎 Аналогия: Представьте, что вы отправляете письмо в очень умный call-центр (GPT). Вы формулируете свой запрос, указываете, кто вы (роль "user"), и получаете развёрнутый ответ, оформленный по нужному протоколу.

⚖️ Работа с токенами и ограничениями

Когда вы общаетесь с LLM, каждый символ в запросе и ответе превращается в токены — это минимальные смысловые единицы, с которыми работает модель. Они похожи на "монетки", которые тратятся при каждом запросе. Чтобы эффективно использовать модель, нужно понимать, как эти токены считаются и как избежать переполнения.

🧮 Что такое токены

Токен — это не обязательно слово. Это может быть часть слова, служебный символ, даже пробел. Например:

  • Hello → 1 токен
  • unbelievable → может разбиться на un, believ, able (3 токена)
  • , или . — тоже отдельные токены

📎 Аналогия: Токены — это как пиксели в изображении. Даже если глаз видит одно целое, модель разбивает всё на маленькие части и считает по ним.

💡 В среднем 100 токенов ≈ 75 слов на английском. На русском — чуть меньше (≈ 60–70 слов), потому что слова длиннее.

📏 Ограничения на размер

У разных моделей — разные максимумы. Например:

Модель Лимит токенов
gpt-3.5-turbo 16 385 токенов
gpt-4 (базовая) 8 192 токена
gpt-4-1106-preview 128 000 токенов

Всё, что вы передаёте в messages, а также то, что модель генерирует в ответ — суммируется. Если лимит превышен, запрос не выполнится и вы получите ошибку.

📎 Аналогия: Это как переполнить корзину в магазине: касса откажется пробивать, если вещей слишком много.

🧹 Как не выйти за лимит

Чтобы избежать ошибок и контролировать расходы:

  • Очищайте старую историю. Не нужно держать в messages весь диалог с начала времён. Оставляйте только релевантное.
  • Ограничьте длину входных данных. Например, урезайте текст до 500 слов или заранее сжимайте его.
  • Контролируйте генерацию. Ставьте max_tokens, чтобы ответ не превысил нужную длину.

📎 Аналогия: Вы не печатаете всю историю чата перед каждым сообщением — вы просто продолжаете с того места, где нужно.

🛠 Инструменты для работы с токенами

Чтобы точно оценить длину запроса, можно использовать библиотеку tiktoken:

import tiktoken

enc = tiktoken.encoding_for_model("gpt-4")
tokens = enc.encode("Пример текста для оценки")
print(len(tokens))  # Выводит количество токенов

📎 Аналогия: Это как весы: вы заранее знаете, поместится ли ваш “багаж” в лимит модели.

🧱 LangChain и Flowise: как строить цепочки действий

Когда вы работаете с LLM, часто одного запроса недостаточно. Нужно получить данные из базы, затем передать их в модель, потом обработать результат… И тут на помощь приходят специальные фреймворки — LangChain и Flowise. Они позволяют соединять действия в логические цепочки, где каждое звено решает свою задачу.

🔗 Зачем нужны цепочки

Один промпт — это хорошо, но в реальных проектах часто нужно:

  • Сначала понять, что хочет пользователь
  • Затем извлечь нужную информацию (из базы или документа)
  • Потом передать всё в модель
  • И наконец — красиво оформить или переслать результат

📎 Аналогия: Это как кулинарный рецепт: не просто "сделай суп", а "возьми овощи → нарежь → обжарь → добавь воду → вари → подай с зеленью".

⚙️ Что такое LangChain

LangChain — это Python-фреймворк, который позволяет строить цепочки запросов и логики вокруг LLM.

Например:

from langchain.chains import LLMChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate

template = "Составь описание товара: {product}"
prompt = PromptTemplate.from_template(template)

llm = OpenAI(model_name="gpt-3.5-turbo")
chain = LLMChain(llm=llm, prompt=prompt)

response = chain.run(product="умные часы для бега")
print(response)

Здесь prompt — как шаблон, chain.run() — как вызов всей цепочки.

📎 Аналогия: LangChain — это как Lego для работы с LLM. Вы собираете кирпичики: промпт, модель, память, внешние вызовы — и создаёте собственные мини-программы.

🧩 Что такое Flowise

Flowise — это визуальный no-code редактор, построенный поверх LangChain. Вы работаете не с кодом, а с блоками, которые соединяются стрелками:

  • Блок "User Input" — принимает ввод от пользователя
  • Блок "Retrieval" — ищет нужную информацию (например, в PDF или базе)
  • Блок "Chat Model" — общается с LLM
  • Блок "Output" — показывает или передаёт результат

📎 Аналогия: Flowise — это как Figma, но для AI: вы визуально проектируете поток взаимодействия между пользователем и моделью.

💡 Где это особенно полезно

LangChain и Flowise идеально подходят для:

  • 👨‍💼 Создания AI-ассистентов для бизнеса
  • 🗂 Интеграции с базами знаний (вики, CRM, Notion)
  • 📊 Генерации отчётов и визуализаций
  • 🤖 Разработки чат-ботов с памятью и логикой
  • 🧪 Прототипирования и экспериментов без кода

🤖 Интеграция в приложения: ваш собственный ChatGPT

После того как вы настроили взаимодействие с LLM и построили цепочки, возникает следующий шаг: встроить интеллект в реальные интерфейсы. То есть — соединить модель с привычными для пользователей платформами: Telegram, веб-приложением, отчетной системой.

📎 Аналогия: Это как вырастить искусственный мозг (LLM), а потом встроить его в тело: чат-бот, сайт, инструмент для команды. Без "тела" интеллект не может быть полезным.

📨 Telegram-бот: быстрый старт

Вы можете создать собственного бота на базе OpenAI с помощью библиотеки python-telegram-bot:

from telegram import Update
from telegram.ext import ApplicationBuilder, MessageHandler, filters, ContextTypes
import openai

openai.api_key = "ваш_ключ"

async def handle(update: Update, context: ContextTypes.DEFAULT_TYPE):
    user_input = update.message.text
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": user_input}]
    )
    await update.message.reply_text(response["choices"][0]["message"]["content"])

app = ApplicationBuilder().token("ваш_тг_токен").build()
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle))
app.run_polling()

📎 Аналогия: это как посадить GPT за экран Telegram и позволить пользователям общаться напрямую, но в вашем сценарии: HR-бот, консультант, генератор писем и т.п.

🌐 Веб-приложение: React + backend

Если вы делаете сайт, где нужно взаимодействие с LLM (например, генерация описаний, ответ на вопросы, персонализированный интерфейс) — вы можете интегрировать OpenAI API через свой backend (Node/Python/Go), а на фронте использовать React или любую другую SPA-библиотеку.

Клиент отправляет запрос → бэкенд формирует prompt → отправляет его в OpenAI → возвращает результат.

📎 Аналогия: это как если бы вы добавили на сайт кнопку "Спросить эксперта", и вместо того, чтобы писать самому, за вас отвечает LLM.

🕒 Cron-задачи: автоматизация генерации

Иногда LLM не нужен в реальном времени, а работает в фоне. Например:

  • Раз в день — генерировать и отправлять отчёты
  • Каждую ночь — подготавливать резюме новых новостей
  • Раз в час — проверять тональность отзывов

Вы настраиваете cron (или любой планировщик задач), и Python-скрипт вызывает OpenAI API по расписанию.

📎 Аналогия: это как нанять невидимого помощника, который работает ночью: пишет отчёты, сортирует отзывы, подводит итоги — и вы приходите с утра, а всё готово.

🎯 Что важно при встраивании

Когда вы интегрируете LLM в приложения, важно проектировать устойчивую систему:

  • 💬 Fallback-ответы — что делать, если модель "зависла" или не дала ответа?
  • 🛠 Логирование — записывайте ошибки и время выполнения, чтобы понимать, где узкие места.
  • ♻️ Замена промптов — держите шаблоны промптов в отдельных файлах или базе, чтобы можно было обновлять их без деплоя.

📎 Аналогия: вы делаете не "магическую" кнопку, а интерфейс с разумной логикой, резервами и управляемостью — как настоящий пользовательский продукт.

❌ Наиболее частые ошибки

  • Игнорируют лимит токенов - Модель не завершает ответ или выдаёт ошибку — разработчик забывает учитывать длину запроса и ответа.
  • Забывают про rate limiting - При высоком трафике API блокируется — нужно добавлять паузы и повторные попытки.
  • Жёстко прошиты промпты - Любое изменение требует правки кода — стоит выносить шаблоны отдельно.
  • Невнятные ошибки - Пользователь не понимает, что пошло не так — отсутствуют fallback-сообщения и логирование.
  • Слишком длинный ввод - Модель не справляется с большим контекстом — нужен контроль длины и сжатие текста.

🤔 Частые вопросы

  • Нужно ли всегда использовать LangChain? 
    Нет. Если у вас простой бот или скрипт — хватит прямого запроса к API.
  • Что делать, если превышен лимит токенов? 
    Обрезать ввод или использовать сжатие (compression, summarization).
  • Можно ли подключить другие модели? 
    Да. LangChain и Flowise работают и с Claude, Mistral, Gemini и другими.

✅ Итоги

Теперь вы умеете подключать LLM к своим продуктам:

  • знаете, как устроен API и как обрабатывать токены;
  • умеете вызывать модель через код или визуальные пайплайны;
  • можете встраивать генерацию и анализ в ботов, UI, задачи.

Это делает LLM не просто "игрушкой для чата", а реальным помощником в вашем продукте или проекте.

На следующий урок