Serverless AI-функции — это запуск AI-обработки без управления серверами. Вы платите только за фактическое время выполнения, а облако автоматически масштабирует функции. В этом руководстве мы создадим AI-функции на AWS Lambda и Yandex Cloud Functions через ModelSwitch API.
AWS Lambda с ModelSwitch
Создайте Lambda-функцию на Python для обработки AI-запросов. API-ключ храните в AWS Secrets Manager или переменных окружения Lambda:
# lambda_function.py
import json
import os
from openai import OpenAI
# Инициализация клиента вне handler для переиспользования между вызовами
client = OpenAI(
base_url=os.environ["MODELSWITCH_BASE_URL"],
api_key=os.environ["MODELSWITCH_API_KEY"],
)
def lambda_handler(event, context):
try:
body = json.loads(event.get("body", "{}"))
prompt = body.get("prompt", "")
model = body.get("model", "gpt-4o-mini")
if not prompt:
return {
"statusCode": 400,
"body": json.dumps({"error": "prompt is required"}),
}
response = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": prompt}],
max_tokens=1000,
)
return {
"statusCode": 200,
"headers": {"Content-Type": "application/json"},
"body": json.dumps({
"response": response.choices[0].message.content,
"model": model,
"tokens": response.usage.total_tokens if response.usage else 0,
}),
}
except Exception as e:
return {
"statusCode": 500,
"body": json.dumps({"error": str(e)}),
}
Важно: инициализируйте OpenAI-клиент вне handler-функции. Это позволяет переиспользовать соединение между вызовами и снижает cold start время.
Yandex Cloud Functions
Для Yandex Cloud Functions синтаксис handler отличается. Создайте функцию на Node.js:
// index.js — Yandex Cloud Function
const OpenAI = require("openai");
const client = new OpenAI({
baseURL: process.env.MODELSWITCH_BASE_URL || "https://api.modelswitch.ru/v1",
apiKey: process.env.MODELSWITCH_API_KEY,
});
module.exports.handler = async function (event, context) {
const body = JSON.parse(event.body || "{}");
const { prompt, model = "gpt-4o-mini" } = body;
if (!prompt) {
return {
statusCode: 400,
body: JSON.stringify({ error: "prompt is required" }),
};
}
try {
const response = await client.chat.completions.create({
model,
messages: [{ role: "user", content: prompt }],
max_tokens: 1000,
});
return {
statusCode: 200,
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
response: response.choices[0].message.content,
model,
}),
};
} catch (err) {
return {
statusCode: 500,
body: JSON.stringify({ error: err.message }),
};
}
};
Деплой в Yandex Cloud:
# Деплой через yc CLI
yc serverless function version create --function-name ai-handler --runtime nodejs18 --entrypoint index.handler --memory 256m --execution-timeout 60s --source-path . --environment MODELSWITCH_API_KEY=msk_ваш_ключ,MODELSWITCH_BASE_URL=https://api.modelswitch.ru/v1
Оптимизация serverless AI-функций
Serverless имеет специфические ограничения при работе с AI:
| Параметр | AWS Lambda | Yandex Cloud Functions |
|---|---|---|
| Макс. таймаут | 15 минут | 10 минут |
| Макс. память | 10 ГБ | 2 ГБ |
| Cold start | 1-3 сек (Python) | 1-2 сек |
| Размер пакета | 250 МБ | 128 МБ |
Рекомендации по оптимизации: используйте GPT-4o-mini для минимизации времени генерации, ограничивайте max_tokens, вынесите инициализацию клиента за пределы handler, настройте provisioned concurrency (AWS) для устранения cold start.
Заключение
Serverless — отличный выбор для AI-функций с непредсказуемой нагрузкой: вы платите только за время выполнения, а облако автоматически масштабирует функции. ModelSwitch API работает одинаково в AWS Lambda и Yandex Cloud Functions — один ключ, один формат запросов, 300+ моделей без привязки к платформе.