AI без LLM: создаем свою модель ИИ Урок 30 из 30
Урок 30. Выпускаем консольную модель и проверяем выводы
Готовая аптечка полезна, когда на каждом средстве есть название, срок и инструкция. Наш выпуск — тоже собранный комплект: программа, правила, учебные карточки, команда запуска и проверяемые границы. Она отвечает только на два вида коротких вопросов о вымышленном клубе.
Текст переведён с помощью ИИ.
Зачем это нужно
Готовая аптечка полезна, когда на каждом средстве есть название, срок и инструкция. Наш выпуск — тоже собранный комплект: программа, правила, учебные карточки, команда запуска и проверяемые границы. Она отвечает только на два вида коротких вопросов о вымышленном клубе.
Перед кодом
Скопируйте из папки шага 30 все пять файлов: main.py, engine.py, checks.py, facts.json, examples.json. Команда получает дату и вопрос: кавычки сохраняют вопрос с пробелами как один аргумент. Необязательное --trace ставится перед датой и печатает путь решения. sys.argv хранит аргументы; len выбирает одну из двух допустимых форм команды. sys.exit(2) завершает неправильный вызов с кодом ошибки. try пробует превратить текст даты в календарную дату, except ValueError перехватывает неверный формат и выдаёт понятное сообщение. Дата — день, на который спрашивают, а не утверждение, что учебная запись верна сейчас.
Файлы этого шага: examples.json, checks.py, engine.py, facts.json, main.py.
Из корня проекта перейдите в папку шага и запустите программу:
cd course/kazakh-ai/step-30
python3 main.py 2026-09-24 "Шахмат қашан?"
В Windows замените python3 на py.
import sys
from datetime import date
from engine import answer
if len(sys.argv) == 3:
show_trace = False
raw_date = sys.argv[1]
question = sys.argv[2]
elif len(sys.argv) == 4 and sys.argv[1] == "--trace":
show_trace = True
raw_date = sys.argv[2]
question = sys.argv[3]
else:
print('Қолдану: python3 main.py [--trace] YYYY-MM-DD "Сұрақ"')
sys.exit(2)
try:
on_date = date.fromisoformat(raw_date)
except ValueError:
print("Қате күн: YYYY-MM-DD түрінде жазыңыз")
sys.exit(2)
result = answer(question, on_date)
print(result["text"])
if show_trace:
for line in result["trace"]:
print("Із:", line)
Что делает программа
Из папки шага выполните python3 main.py 2026-09-24 "Шахмат қашан?": получите шахмат үйірмесінің уақыты: бейсенбі, 15:00 | 2026-09-24 күнгі дерек | дереккөз: club-sheet-01. На Сурет қайда? — білмеймін: дерек жоқ; на Шахмат қашан қайда? — просьба выбрать один вид; на дату 2027-01-01 — отказ из-за срока. Добавьте --trace для пяти шагов проверки источника. Контрольный набор из урока 25 оценивал только тип вопроса и был мал; он не доказывает качество реальной службы. Мы показали локальную узкую модель, не универсальный ИИ. Нулевые платные API-запросы в учебном коде не означают нулевую полную стоимость; отсутствие свободной генерации не делает ошибку источника невозможной.
Опорная карта
Команда + дата + вопрос → охрана слов → тип → одна карточка → допустимая дата → ответ и источник; иначе объяснимый отказ.
Вспомните и проверьте
Закройте код и восстановите цепочку из опорной карты. Проверьте четыре команды: известный вопрос, неизвестный кружок, старую дату и --trace. Подсказка: дата 2026-09-24 попадает между checked_on и valid_until, а 2027-01-01 — уже нет. Эталон для старой даты: білмеймін: бұл күнге жарамды дерек жоқ; для неизвестного кружка: білмеймін: таныс емес сөз. Итоговая защита: покажите, что ответ связан с карточкой и сроком, назовите два честных отказа, объясните, почему 1.0 из урока 25 не означает безошибочность, а число «в тысячу раз» без сравнимого опыта писать нельзя. Частая ошибка: назвать дату упражнения текущим расписанием реального клуба.
Если вы нашли ошибку или опечатку в тексте статьи, то сообщите нам об этом
Комментарии (0)
Войдите, чтобы оставить комментарий →
Пока нет комментариев. Будьте первым.