Функции на Python для API, пайплайнов и ML-инструментов

Функции на Python 3.12 работают в изолированных контейнерах: numpy, pandas, scikit-learn и любой пакет из PyPI работают из коробки. Подключайте функции к HTTP-маршрутам для инструментов AI-агентов или шагам пайплайна для ETL и ML-инференса. Ночные запуски задаются расписанием пайплайна.

Обновлено: 2026-10-26

Где edge-среды и управляемые сервисы ограничивают Python

Среды выполнения на edge Python не поддерживают вовсе. Lambda и GCP Cloud Functions поддерживают, но большие деревья зависимостей бьют по холодному старту: numpy, pandas и scikit-learn без аккуратной работы со слоями уводят его в секунды.

AI-командам Python часто нужен для бэкендов инструментов: вызвать OpenAI, прогнать инференс scikit-learn, обработать датафреймы или запустить пайплайны Hugging Face — всему этому нужен настоящий контейнер Python 3.12 с полной поддержкой PyPI.

Почему Python только на Lambda создаёт трение

Lambda Layers для numpy, pandas и ML-библиотек добавляют возни с упаковкой: лимит платформы в 250 МБ в распакованном виде заставляет аккуратно урезать каждый релиз.

Сшивать API Gateway + Lambda + CloudWatch + EventBridge ради бэкенда инструментов AI-агента на Python — заметная церемония для команды, которой нужны просто HTTP-эндпоинты с авторизацией.

Полноценный Python за одним шлюзом

Inquir запускает Python 3.12 в Docker-контейнерах. Пакеты из PyPI объявляются в build.dependencies в inquir.yaml (или в requirements.txt), и деплой ставит их через pip. numpy, pandas, scikit-learn и библиотеки с C-расширениями ставятся из опубликованных колёс так же, как локально.

Одна и та же Python-функция может быть эндпоинтом инструмента AI-агента (HTTP-маршрут с API-ключом), ночной ETL-задачей (пайплайн по расписанию) или стадией LLM-пайплайна (фоновый шаг) — один обработчик, три пути вызова, одна наблюдаемость.

Возможности среды выполнения Python

Вся экосистема PyPI

numpy, pandas, scikit-learn, transformers, Pillow, httpx, psycopg2 и любой пакет с C-расширениями, который собирается на Python 3.12.

Бэкенды инструментов AI-агентов

Выставляйте ML-функции на Python как HTTP-эндпоинты с авторизацией: вызывайте OpenAI, гоняйте инференс, делайте запросы к датафреймам и возвращайте структурированный JSON оркестраторам агентов.

Ночной ETL и обработка данных

Добавьте Python-функции в шаги пайплайна по расписанию: читайте из API, трансформируйте через pandas, пишите в базы — история запусков и повторы видны в консоли.

Стадии LLM-пайплайнов

Используйте Python-шаги внутри многостадийных пайплайнов для retrieval, генерации эмбеддингов, модерации или суммаризации — секреты и пакеты общие для всех стадий.

Как развернуть функцию на Python

1

Написать обработчик

Объявите def handler(event, context) в файле .py. event.body — строка; при необходимости разберите её через json.loads.

2

Объявить зависимости

Перечислите numpy, pandas и другие пакеты из PyPI в build.dependencies в inquir.yaml. Деплой их установит — без Dockerfile и без упаковки слоя в стиле Lambda.

3

Подключить маршруты шлюза и шаги пайплайна

Привяжите функцию к HTTP-маршруту или шагу пайплайна. Расписание и фоновое выполнение принадлежат пайплайну; обработчик остаётся общим.

Обработчик на Python: инструмент AI-агента и ETL-пайплайн по расписанию

event.body приходит JSON-строкой — разбирайте через json.loads. Для ответов на HTTP-маршрутах возвращайте {"statusCode": ..., "body": json.dumps(...)}. Секреты подставляются как переменные окружения.

tools/classify.py (эндпоинт инструмента AI-агента)
import json
import os
from openai import OpenAI

client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])  # injected from workspace secrets

def handler(event, context):
    body = json.loads(event.get("body") or "{}")
    text = body.get("text")
    if not text:
        return {"statusCode": 400, "body": json.dumps({"error": "text required"})}
    response = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[{"role": "user", "content": f"Classify the sentiment of: {text}"}],
    )
    return {"statusCode": 200, "body": json.dumps({"sentiment": response.choices[0].message.content})}
jobs/nightly-sync.py (шаг пайплайна по расписанию)
import json
import os
import pandas as pd
import psycopg2

def handler(event, context):
    conn = psycopg2.connect(os.environ["DATABASE_URL"])
    df = pd.read_sql("SELECT * FROM events WHERE processed = false LIMIT 1000", conn)
    # transform and upsert
    results = []
    for _, row in df.iterrows():
        result = process_row(row)
        results.append(result)
    conn.close()
    return {"processed": len(results)}

Когда функции на Python подходят лучше всего

Когда это уместно

  • В среде выполнения функций нужны numpy, pandas, scikit-learn или любая ML-библиотека с C-расширениями.
  • Вы строите бэкенды инструментов AI-агентов на Python, которым нужны авторизация HTTP и пайплайны с расписаниями и асинхронным выполнением на одной платформе.

Когда лучше выбрать другое

  • Логика на Python крошечная, а нужна только глобальная доставка на edge — на большинстве платформ с edge-изолятами Python недоступен.

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

Какая версия Python в Inquir?

Python 3.12. Поддерживаются стандартная библиотека, asyncio и все синхронные паттерны. Для асинхронных обработчиков используйте async def handler.

Можно ли использовать pandas и numpy, не упираясь в лимиты размера?

Да. Урезать слой под лимит Lambda в 250 МБ не нужно: перечислите numpy и pandas в build.dependencies в inquir.yaml, и деплой поставит их в собственный контейнер функции.

Как получить доступ к переменным окружения и секретам?

Привяжите секреты в консоли Inquir — при запуске они подставляются как переменные окружения. Читайте их через os.environ["SECRET_NAME"] и никогда не зашивайте учётные данные в Python-обработчик.

Могут ли Python-функции обращаться к приватным базам?

Да. Функции на контейнерах могут обращаться к базам и HTTP API по строкам подключения из секретов рабочего пространства — в отличие от edge-изолятов, которые блокируют типичные исходящие вызовы с сервера. Достижимость зависит от сети вашего деплоя.