HARD-задача: смета агента

Домашка

Финальная задача модуля — для тех, кто хочет довести экономику до инженерного инструмента. Вы напишете budget.py: выборщик модели под ограничение качества и контекста с минимальной месячной стоимостью. А потом — исследовательская часть: замените учебные модели на настоящие, с ценами, которые вы сами возьмёте с официальных страниц провайдеров. Получится документ, который вы положите в README своего devbuddy.

Первая часть проверяется тестами; вторая — ваша совесть и ссылки на источники.

Часть 1. Выборщик (код)

Файл budget.py. Учебный набор моделей:

python
MODELS = {
    "модель-a": {"price_in": 1.0, "price_out": 4.0, "context": 32_000, "quality": 2},
    "модель-b": {"price_in": 0.10, "price_out": 0.50, "context": 128_000, "quality": 3},
    "модель-c": {"price_in": 10.0, "price_out": 50.0, "context": 200_000, "quality": 5},
}

Функции:

  • monthly_total(model: dict, prs_per_day: int, avg_in: int, avg_out: int, days: int = 22) -> float — месячная стоимость: число прогонов × стоимость одного прогона, round(..., 2).

  • pick_model(models: dict, min_quality: int, avg_in: int, avg_out: int, prs_per_day: int = 20) -> str — имя самой дешёвой по месячной стоимости модели среди тех, что (а) имеют quality >= min_quality и (б) влезают в контекст: avg_in + avg_out <= context. Если подходящих моделей нет — ValueError.

Тесты test_budget.py:

python
import pytest

from budget import MODELS, monthly_total, pick_model


def test_monthly_total_b():
    assert monthly_total(MODELS["модель-b"], 20, 6000, 1000) == 0.48


def test_monthly_total_single():
    assert monthly_total(MODELS["модель-c"], 1, 6000, 1000, days=1) == 0.11


def test_pick_prefers_cheap_with_quality():
    # подходят b (quality 3) и c (quality 5); b дешевле
    assert pick_model(MODELS, min_quality=3, avg_in=6000, avg_out=1000) == "модель-b"


def test_quality_gate():
    # только c проходит по качеству
    assert pick_model(MODELS, min_quality=4, avg_in=6000, avg_out=1000) == "модель-c"


def test_context_gate():
    # a не влезает (120k > 32k), c дорогая — побеждает b
    assert pick_model(MODELS, min_quality=1, avg_in=100_000, avg_out=20_000) == "модель-b"


def test_nothing_fits():
    with pytest.raises(ValueError):
        pick_model(MODELS, min_quality=6, avg_in=1000, avg_out=1000)

Часть 2. Настоящие модели (исследование)

Кодовая часть говорит «как выбрать»; эта — «из чего». Сделайте в комментариях budget.py (или в отдельном BUDGET.md):

  1. Возьмите три настоящие модели из разных ярусов — хотя бы две от разных вендоров. Цены выпишите с официальных страниц провайдеров (пример для OpenAI: developers.openai.com/api/docs/pricing; для остальных — их страницы цен). Рядом с каждой цифрой — источник и дата.

  2. Прикиньте свой сценарий: сколько токенов вход/выход на один прогон вашего будущего ревьюера, сколько PR в день. Честно — «на глаз из токен-калькулятора».

  3. Посчитайте pick_model на реальном наборе для трёх порогов качества (низкий/средний/высокий). Запишите вывод: какая модель и при каком условии.

Требования к этой части: каждая цифра — со ссылкой на источник и датой; никаких «по ощущениям дешевле». Если какую-то цену найти не удалось — так и напишите, не выдумывайте.

Критерии готовности

  • Шесть тестов зелёные.

  • В исследовательской части — три реальные модели, цены с источниками и датами, ваш сценарий и вердикт pick_model.

  • budget.py закоммичен рядом с остальным модулем.

  • theory icon

    Как устроены LLM: токены, контекст, цена

    10 мин

  • homework icon

    Домашка: токен-калькулятор

    4 мин

  • quiz icon

    Квиз: Как устроены LLM: токены, контекст, цена

    8 мин

  • theory icon

    Промпты как код: шаблоны и переменные

    8 мин

  • homework icon

    Домашка: промпт ревьюера

    3 мин

  • quiz icon

    Квиз: Промпты как код: шаблоны и переменные

    7 мин

  • theory icon

    Структурированный вывод: JSON вместо прозы

    6 мин

  • homework icon

    Домашка: парсер ревью

    3 мин

  • quiz icon

    Квиз: Структурированный вывод: JSON вместо прозы

    7 мин

  • theory icon

    Выбор модели: GPT, Claude, открытые

    7 мин

  • homework icon

    Домашка: бенчмарк вслепую

    4 мин

  • quiz icon

    Квиз: Выбор модели: GPT, Claude, открытые

    7 мин

  • homework icon

    HARD-задача: смета агента

    3 мин

  • theory icon

    Локальная модель: Ollama по-настоящему

    8 мин

  • quiz icon

    Квиз: Локальная модель: Ollama по-настоящему

    6 мин

🎯
Тренажёр собеседованияЗакрепите знания перед интервью