Обновить
66
3
Елецкий Алексей@Tiendil

программист серверов и логики

Отправить сообщение

Детерминированное поведение и стейт-машины для ваших агентов

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели8.6K

Агенты отлично справляются с узкими, конкретными задачами — например, написать функцию или короткий текст — но начинают буксовать на сложных многошаговых процессах. Чем более абстрактна и «высокоуровнева» работа, тем больше ошибок они допускают: путают шаги, пропускают операции, неверно интерпретируют инструкции. Такие ошибки накапливаются и усиливают друг друга, приводя к неожиданным результатам. Чем больше задача, которую вы отдаёте агенту, тем выше шанс, что он её провалит.

Помедитировав немного над этим, я пришёл к интересным эвристикам.

Большинство высокоуровневой работы более алгоритмично, чем кажется на первый взгляд.

Большинство низкоуровневой работы менее алгоритмично, чем кажется на первый взгляд.

Например, существует масса формализованных циклов проектирования (PDCA, OODA, DMAIC, 8D и etc.) — по сути, тривиальных мета-алгоритмов; однако каждый шаг этих алгоритмов — это куда более сложная и нетривиальная задача.

Значит, стоит стремиться давать агентам низкоуровневые задачи с небольшим, ясным контекстом, а высокоуровневые процессы описывать алгоритмически.

Читать далее

Читалка новостей с тегами от LLM и прозрачным ранжированием

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели2K

Все мы следим за новостями тем или иным способом — без этого нынче никуда. Я привык это делать, подписываясь на RSS-ленты, и долгое время всё было прекрасно, пока лент не стало слишком много и чтение новостей не превратилось в тяжёлую работу на пару часов в день.

Не до конца понимая, как эту проблему решить, я перебрал несколько RSS-ридеров, ни один из которых мне не помог. Пришлось засучить рукава и, через пяток выкинутых прототипов, собрать собственное решение, которое работает.

В итоге получился Feeds Fun — читалка новостей, которая прозрачно для пользователя организует поток информации по её приоритету. Теперь я просматриваю 50-100 новостей в день, вместо 1000 (90% экономии времени!).

Работает Feeds Fun следующим образом

Генерация текста на русском по шаблонам

Время на прочтение8 мин
Охват и читатели710
Когда я только начинал работать над своей текстовой игрой, решил, что одной из её главных фич должны стать красивые художественные описания действий героев. Отчасти хотел «сэкономить», поскольку в графику не умел. Экономии не получилось, зато получилась Python библиотека (github, pypi) для генерации текстов с учётом зависимости слов и их грамматических особенностей.

Например, из шаблона:
[Hero] [проходил|hero] мимо неприметного двора и вдруг [заметил|hero] играющих детей. Они бегали с деревянными мечами, посохами и масками чудовищ. Внезапно один из играющих остановился, выставил [игрушечный|hero.weapon|вн] [hero.weapon|вн], выкрикнул: «[Я|hero] [великий|hero] [Hero]! Получай!» — и бросился на «бестий». Они упали наземь, задрыгали руками-ногами, а после встали, сняли маски и засмеялись. [Хмыкнул|hero] и [сам|hero] [Hero], но не [стал|hero] выходить к малышне.
Мы можем получить такой текст (жирным выделены изменяющиеся слова):
Халлр проходил мимо неприметного двора и вдруг заметил играющих детей. Они бегали с деревянными мечами, посохами и масками чудовищ. Внезапно один из играющих остановился, выставил игрушечную золочёную шпагу, выкрикнул: «Я великий Халлр! Получай!» — и бросился на «бестий». Они упали наземь, задрыгали руками-ногами, а после встали, сняли маски и засмеялись. Хмыкнул и сам Халлр, но не стал выходить к малышне.
Или такой:
Фиевара проходила мимо неприметного двора и вдруг заметила играющих детей. Они бегали с деревянными мечами, посохами и масками чудовищ. Внезапно один из играющих остановился, выставил игрушечный катар, выкрикнул: «Я великая Фиевара! Получай!» — и бросился на «бестий». Они упали наземь, задрыгали руками-ногами, а после встали, сняли маски и засмеялись. Хмыкнула и сама Фиевара, но не стала выходить к малышне.
Читать дальше →

Автоматизация импортов в Python

Время на прочтение7 мин
Охват и читатели860
До После
import math
import os.path

import requests

# 100500 other imports

print(math.pi)
print(os.path.join('my', 'path'))
print(requests.get)
import smart_imports

smart_imports.all()

print(math.pi)
print(os_path.join('my', 'path'))
print(requests.get)
Так получилось, что аж с 2012 года я разрабатываю open source браузерку, являясь единственным программистом. На Python само собой. Браузерка — штука не самая простая, сейчас в основной части проекта больше 1000 модулей и более 120 000 строк кода на Python. В сумме же с проектами-спутниками будет раза в полтора больше.

В какой-то момент мне надоело возиться с этажами импортов в начале каждого файла и я решил разобраться с этой проблемой раз и навсегда. Так родилась библиотека smart_imports (github, pypi).

Идея достаточно проста. Любой сложный проект со временем формирует собственное соглашение об именовании всего. Если это соглашение превратить в более формальные правила, то любую сущность можно будет импортировать автоматически по имени ассоциированной с ней переменной.

Например, не надо будет писать import math чтобы обратиться к math.pi — мы и так можем понять, что в данном случае math — модуль стандартной библиотеки.

Smart imports поддерживают Python >= 3.5 Библиотека полностью покрыта тестами, coverage > 95%. Сам пользуюсь уже год.

За подробностями приглашаю под кат.
Читать дальше →

Изменение восприятия сложности

Время на прочтение2 мин
Охват и читатели16K
Хочу поделиться очень субъективными мыслями об изменении отношения к сложности за последние лет 50. Возможно, мои наблюдения касаются всей инженерии, но я поостерегусь и буду писать только про разработку ПО.

В последние годы мне стало казаться, что я упускаю что-то в методах разработки ПО. Весь мир радостно и с песней ускоряется, создаёт софт всё быстрее и быстрее, а я торможу. Чтобы не отставать, приходится преодолевать внутренний барьер неясной природы, действовать за границей которого выгодно но неприятно (мне). Не понятно почему выгодно. И не понятно почему неприятно.

Сегодня понял. В былые времена со сложностью боролись, теперь её игнорируют принимают. Переход между этими воззрениями был долгим и плавным, но уже можно видеть разительные отличия.

Я же учился в основном по материалам, созданным в прошлом веке, «древним манускриптам», да ещё и научную фантастику читал классическую, поэтому невольно стал приверженцем «старой школы». В чем же разница?
Читать дальше →

MMORPG без лишних деталей: Open Source

Время на прочтение2 мин
Охват и читатели232


Как говорится: «обещанного три года ждут». Примерно столько лет назад мы начали разработку своей «оригинальной» браузерки. О ней мы уже рассказывали: MMORPG без лишних деталей, как рассказывали и о наших скромных успехах год спустя.

При этом мельком упоминалось, что код игры постепенно открывается. И вот наконец настал тот момент, когда мы открыли его полностью: github.com/Tiendil/the-tale под BSD лицензией. А это значит, что вы вот прямо сейчас можете начать пилить свою собственную браузерку с… ну с чем захотите.

Разработчики игр, будущие владельцы браузерок и просто любопытствующие приглашаются под кат.
Читать дальше →

MMORPG без лишних деталей: год спустя

Время на прочтение2 мин
Охват и читатели92
Здравствуй, сообщество.

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

Расскажу лучше о трёх вещах, которые тебя точно заинтересуют: о нашей статистике, оригинальном генераторе текста и общедоступном API.
Читать дальше →

MMORPG без лишних деталей

Время на прочтение4 мин
Охват и читатели185


Здравствуйте, меня зовут Алексей и я независимый разработчик игр. Два года назад я уволился из Wargaming чтобы немного поэкспериментировать и сделать MMO игрушку, в которую мне было бы интересно играть. Со временем ко мне присоединилась пара замечательных людей — Александр и Елена Дедковы. Сейчас я кратко расскажу что получилось из этой затеи.
Читать дальше →

Информация

В рейтинге
1 280-й
Откуда
Warszawa, Warszawa, Польша
Зарегистрирован
Активность