Поздравляю всех подписчиков с наступающим Новым годом!
Про свои личные итоги года я писать не очень хочу: съездил в пару-тройку стран, написал статью, как-то поработал. Поэтому напишу про прочитанное и просмотренное, кому-то точно будет интересно.
Статьи:
— Zoology: крутая синтетическая задача (MQAR) и обоснование того, чего не хватает современенным рекуррентным сетям.
— Чувствительные функции: обоснование невыучиваемости трансформерами мегапростой задачи, parity.
— Медуза: критически важная штука на практике, ускорение моделей чуть ли не на порядок.
Сериалы:
— Pantheon: мультик про бессмертие через загрузку сознания, с крутыми сюжетными поворотами и неожиданным масштабом.
— Агент времени: китайское аниме про парней, которые умеют перемещаться в человека и момент на фотографии, чтобы добывать информацию.
— Severance: у главного героя и его коллег 2 физически отдельных личности на работе и вне работы, и в какой-то момент это становится проблемой.
Фильмы:
— Когерентность: очень дешёвый и очень прикольный фильм про параллельные вселенные. Да и в целом рекомендую весь жанр НФ триллеров, которые сначала маскируются под обычные ужастики: Прочь, Нет, Мы.
Игры:
— Balatro: карточный рогалик в покерной стилистике с кучей прикольных механик, в который я вбухал сотни часов.
— Factorio: Space Age: в представлении не нуждается. Скоро будет ровно 10 лет с того момента, как я купил оригинальную игру. DLC добавляет космические платформы и другие планеты с другим распределением ресурсов. А ещё дроны теперь открываются сильно позднее, поэтому приходится всё делать нормально.
— Marvel Rivals: новый командный геройский шутер. Очень зашёл мне, как постоянному игроку первого Overwatch.
Книги:
— Вселенная Боба: крепкая развелкательная фантастика (а я другого нынче почти и не читаю). Главный герой — человек, переродившийся в зонд фон Неймана, сначала спасающий Землю, а потом исследующий космос.
— Диктатор: скорее социальная фантастика про параллельную версию Земли и про человека, который хотел мира во всём мире.
— Вавилон: сокрытая история: фантастика про лингвистику в декорациях Оксфорда начала 19 века. Классная концепция, но слитая концовка.
Про свои личные итоги года я писать не очень хочу: съездил в пару-тройку стран, написал статью, как-то поработал. Поэтому напишу про прочитанное и просмотренное, кому-то точно будет интересно.
Статьи:
— Zoology: крутая синтетическая задача (MQAR) и обоснование того, чего не хватает современенным рекуррентным сетям.
— Чувствительные функции: обоснование невыучиваемости трансформерами мегапростой задачи, parity.
— Медуза: критически важная штука на практике, ускорение моделей чуть ли не на порядок.
Сериалы:
— Pantheon: мультик про бессмертие через загрузку сознания, с крутыми сюжетными поворотами и неожиданным масштабом.
— Агент времени: китайское аниме про парней, которые умеют перемещаться в человека и момент на фотографии, чтобы добывать информацию.
— Severance: у главного героя и его коллег 2 физически отдельных личности на работе и вне работы, и в какой-то момент это становится проблемой.
Фильмы:
— Когерентность: очень дешёвый и очень прикольный фильм про параллельные вселенные. Да и в целом рекомендую весь жанр НФ триллеров, которые сначала маскируются под обычные ужастики: Прочь, Нет, Мы.
Игры:
— Balatro: карточный рогалик в покерной стилистике с кучей прикольных механик, в который я вбухал сотни часов.
— Factorio: Space Age: в представлении не нуждается. Скоро будет ровно 10 лет с того момента, как я купил оригинальную игру. DLC добавляет космические платформы и другие планеты с другим распределением ресурсов. А ещё дроны теперь открываются сильно позднее, поэтому приходится всё делать нормально.
— Marvel Rivals: новый командный геройский шутер. Очень зашёл мне, как постоянному игроку первого Overwatch.
Книги:
— Вселенная Боба: крепкая развелкательная фантастика (а я другого нынче почти и не читаю). Главный герой — человек, переродившийся в зонд фон Неймана, сначала спасающий Землю, а потом исследующий космос.
— Диктатор: скорее социальная фантастика про параллельную версию Земли и про человека, который хотел мира во всём мире.
— Вавилон: сокрытая история: фантастика про лингвистику в декорациях Оксфорда начала 19 века. Классная концепция, но слитая концовка.
У Anthropic пару недель назад вышел пост про агентов: https://www.anthropic.com/research/building-effective-agents
Он прекрасен тем, что определяет, что является агентом, а что не является. С точки зрения авторов поста, агент = система, в которой языковые модели динамически управляют собственными вызовами и инструментами, контролируя выполнение какой-то задачи.
Авторы утверждают, что для большинства случаев агенты не нужны: чем проще решение, тем лучше. С чем я полностью согласен👏
Основное содержание поста — примитивы и паттерны оркестрирования языковых моделей без агентов. Основной примитив: улучшенная языковая модель, которая имеет доступ к инструментам, поиску и памяти. Этот примитив может быть реализован по-разному, например через конечное число последовательных вызовов языковой модели.
🔹Паттерн 1: цепочка промптов
Если задача разбивается на несколько последовательных подзадач, их можно решать отдельными вызовами языковой модели. Например, если вы хотите сделать систему, пишущую книги, вы сначала делаете вызов для генерации названия книги, потом отдельные вызовы для краткого описания, содержания, выжимок глав и непосредственно самих глав.
🔹Паттерн 2: маршрутизация
Если ваше приложение разбивается на несколько возможных параллельных путей, то стоит сделать классификатор, который будет определять нужный путь, и специализированные промпты под каждый из путей. Например, если вы делаете чатбот с несколькими независимыми функциями (рекомендация фильмов, ответы на вопросы по фильмам, чат на общие темы), то стоит использовать этот паттерн. В древних чатботах часто был детектор интентов, который делал ровно это👴
🔹Паттерн 3: параллелизация
Если задача разбивается на несколько параллельных подзадач, то стоит их и вызывать параллельно. Например, если вам нужно извлечь огромный JSON из текста или переписки, возможно вам стоит извлекать его по кусочкам. Отличие от маршрутизации в том, что в ней нам нужна была только одна ветка, а тут нам нужны результаты всех вызовов.
🔹Паттерн 4: ведущий-ведомый😭
То же самое, что и параллелизация, только с динамическим количеством и содержанием подзадач. Например, так можно делать агрегацию результатов поиска.
🔹Паттерн 5: цикл оценки
Если есть чёткие критерии оценки качества выполнения задачи, то можно одной языковой моделью решать задачу, а другой — оценивать качество решения и давать обратную связь. И делать это в цикле. Это может работать много где, например в переводе текстов.
Ну и наконец последний паттерн — агенты, которые совершают действия в определенной среде, получают от среды обратную связь, и снова совершают действия.
Мне в разных местах в разное время пришлось использовать первые 3 паттерна. При этом тогда я не формулировал их как отдельные паттерны. Это не какие-то абстрактные штуки, это кристаллизация того, как удобно и просто строить системы (как и любые другие паттерны проектирования).
Он прекрасен тем, что определяет, что является агентом, а что не является. С точки зрения авторов поста, агент = система, в которой языковые модели динамически управляют собственными вызовами и инструментами, контролируя выполнение какой-то задачи.
Авторы утверждают, что для большинства случаев агенты не нужны: чем проще решение, тем лучше. С чем я полностью согласен
Основное содержание поста — примитивы и паттерны оркестрирования языковых моделей без агентов. Основной примитив: улучшенная языковая модель, которая имеет доступ к инструментам, поиску и памяти. Этот примитив может быть реализован по-разному, например через конечное число последовательных вызовов языковой модели.
🔹Паттерн 1: цепочка промптов
Если задача разбивается на несколько последовательных подзадач, их можно решать отдельными вызовами языковой модели. Например, если вы хотите сделать систему, пишущую книги, вы сначала делаете вызов для генерации названия книги, потом отдельные вызовы для краткого описания, содержания, выжимок глав и непосредственно самих глав.
🔹Паттерн 2: маршрутизация
Если ваше приложение разбивается на несколько возможных параллельных путей, то стоит сделать классификатор, который будет определять нужный путь, и специализированные промпты под каждый из путей. Например, если вы делаете чатбот с несколькими независимыми функциями (рекомендация фильмов, ответы на вопросы по фильмам, чат на общие темы), то стоит использовать этот паттерн. В древних чатботах часто был детектор интентов, который делал ровно это
🔹Паттерн 3: параллелизация
Если задача разбивается на несколько параллельных подзадач, то стоит их и вызывать параллельно. Например, если вам нужно извлечь огромный JSON из текста или переписки, возможно вам стоит извлекать его по кусочкам. Отличие от маршрутизации в том, что в ней нам нужна была только одна ветка, а тут нам нужны результаты всех вызовов.
🔹Паттерн 4: ведущий-ведомый
То же самое, что и параллелизация, только с динамическим количеством и содержанием подзадач. Например, так можно делать агрегацию результатов поиска.
🔹Паттерн 5: цикл оценки
Если есть чёткие критерии оценки качества выполнения задачи, то можно одной языковой моделью решать задачу, а другой — оценивать качество решения и давать обратную связь. И делать это в цикле. Это может работать много где, например в переводе текстов.
Ну и наконец последний паттерн — агенты, которые совершают действия в определенной среде, получают от среды обратную связь, и снова совершают действия.
Мне в разных местах в разное время пришлось использовать первые 3 паттерна. При этом тогда я не формулировал их как отдельные паттерны. Это не какие-то абстрактные штуки, это кристаллизация того, как удобно и просто строить системы (как и любые другие паттерны проектирования).
Please open Telegram to view this post
VIEW IN TELEGRAM
Я тут почитывал https://situational-awareness.ai/, и очень мне приглянулась идея автономного агента-учёного.
Уверен, что таких проектов навалом на Гитхабе, но имхо без трёх вещей это не будет работать:
1) Инструмент для поиска по Arxiv и другим научным библиотекам. Причём нормальный, который может возвращать полные тексты, желательно с картинками.
2) Инструмент, эмулирующий файловую систему и её менеджмент.
3) Инструмент, позволяющий эффективно читать и редактировать текстовые файлы. Такой себе vim для LLM, который не жрал бы тонны токенов.
Под "инструментами" я понимаю нормальные API, доступные для вызова моделями.
Я завтра подробно подробно поищу все 3 штуки, но может быть кто-то что-то уже видел?
Уверен, что таких проектов навалом на Гитхабе, но имхо без трёх вещей это не будет работать:
1) Инструмент для поиска по Arxiv и другим научным библиотекам. Причём нормальный, который может возвращать полные тексты, желательно с картинками.
2) Инструмент, эмулирующий файловую систему и её менеджмент.
3) Инструмент, позволяющий эффективно читать и редактировать текстовые файлы. Такой себе vim для LLM, который не жрал бы тонны токенов.
Под "инструментами" я понимаю нормальные API, доступные для вызова моделями.
Я завтра подробно подробно поищу все 3 штуки, но может быть кто-то что-то уже видел?
Что нового я узнал за день?
— Во-первых, MCP и совместимые с ним сервера. В том числе ArXiv сервер, но мне не очень нравится конкретно эта реализация, там нельзя выбирать порядок сортировки результатов поиска, например. Но сам список в целом сойдёт как библиотека инструментов.
— Во-вторых, smolagents (агентский фреймворк от HF) и их подход к инструментам, которые можно автоматически заливать как Spaces на HF. И наоборот, использовать существующие Spaces как инструменты. Ещё прикольно, что основной подход в нём не function calling, а генерация кода с инструментами. Это, в частности, позволяет не завязываться на конкретную реализацию вызова функций. В качестве защищённого интерпретатора Питона они предлагают E2B. До этого я пользовался только Terrarium от Cohere.
— В-третьих, я пока не нашёл адекватной реализации инструмента файловой системы и редактора файлов, но я пока и недостаточно хорошо искал. Попробую воспроизвести или найти воспроизведение str_replace_editor из спеки Anthropic.
— В-четвёртых, всем спасибо за предложения. Часть я уже упомянул выше. findpapers мне пригодился как место, где можно подсмотреть код. storm имхо бесполезен.
Вывод пока такой: открытые инструменты довольно дерьмовы. А если делать свои — то проще всего делать аннотированные функции и потом экспортировать их в любой протокол или фреймворк. Что я и начал делать тут.
— Во-первых, MCP и совместимые с ним сервера. В том числе ArXiv сервер, но мне не очень нравится конкретно эта реализация, там нельзя выбирать порядок сортировки результатов поиска, например. Но сам список в целом сойдёт как библиотека инструментов.
— Во-вторых, smolagents (агентский фреймворк от HF) и их подход к инструментам, которые можно автоматически заливать как Spaces на HF. И наоборот, использовать существующие Spaces как инструменты. Ещё прикольно, что основной подход в нём не function calling, а генерация кода с инструментами. Это, в частности, позволяет не завязываться на конкретную реализацию вызова функций. В качестве защищённого интерпретатора Питона они предлагают E2B. До этого я пользовался только Terrarium от Cohere.
— В-третьих, я пока не нашёл адекватной реализации инструмента файловой системы и редактора файлов, но я пока и недостаточно хорошо искал. Попробую воспроизвести или найти воспроизведение str_replace_editor из спеки Anthropic.
— В-четвёртых, всем спасибо за предложения. Часть я уже упомянул выше. findpapers мне пригодился как место, где можно подсмотреть код. storm имхо бесполезен.
Вывод пока такой: открытые инструменты довольно дерьмовы. А если делать свои — то проще всего делать аннотированные функции и потом экспортировать их в любой протокол или фреймворк. Что я и начал делать тут.
Немножко про агента и инструменты, которые я писал последние пару дней.
Поиск по ArXiv. Есть публичное API, есть готовая библиотка. Подводные камни:
- Есть значительный кусок функциональности, который не поддерживается во всех популярных реализациях: фильтр по датам. Более того, в официальном руководстве к API он... неправильно описан! Если вы выполните запрос из руководства, то увидите, что фильтр там тупо не работает! В реальности это должен быть не отдельный GET параметр, это должна быть часть запроса, что я выяснил только из группы с обсуждением.
- Я до сих пор не до конца понимаю, как работает поиск без явного указания полей. Это как будто бы нигде нормально не описано.
Скачивание и парсинг PDF. И если со скачиванием вопросов нет, то с парсингом всё до сих пор очень-очень больно. Есть pypdf, который с извлечением текста из архивовских pdfок кое-как справляется, но получается просто текст без структуры. И есть marker, который справляется очень даже элитно и выдаёт нормальный Markdown + картинки, но который по-хорошему требует отдельного GPU сервака. На CPU ждать по минуте не очень хочется, да и зависимости там сейчас конфликтуют с smolagents. Чего-то посередине я пока не нашёл.
Эмуляция bash. Я взял спеку Anthropic, запихнул её в Соннет и сказал, чтобы он написал код с исполнением через Docker. Пока что работает безотказно, вообще никаких проблем не было. Более того, иногда агент полнейшую дичь умудряется вытворять с этим инструментом.
Сам агент. Сначала я тестировал всё с Соннетом. Когда за 3 дня насчиталось 30$, я понял, что так продолжать нельзя. Сейчас всё пытаюсь делать с gpt-4o-mini, и это реально больно. Зато если уж с ней всё работает, то с нормальными моделями получаются вообще чудеса. Тестирую на простом запросе про свою же статью.
Меня не очень интересуют хардкодные реализациии типа storm и AgentLaboratory. Хочется всё сделать в рамках базового CodeAct, запихивая всю сложность в инструменты и подчинённых агентов.
Сейчас я пишу str_replace_editor из той же спеки, что и bash.
Поиск по ArXiv. Есть публичное API, есть готовая библиотка. Подводные камни:
- Есть значительный кусок функциональности, который не поддерживается во всех популярных реализациях: фильтр по датам. Более того, в официальном руководстве к API он... неправильно описан! Если вы выполните запрос из руководства, то увидите, что фильтр там тупо не работает! В реальности это должен быть не отдельный GET параметр, это должна быть часть запроса, что я выяснил только из группы с обсуждением.
- Я до сих пор не до конца понимаю, как работает поиск без явного указания полей. Это как будто бы нигде нормально не описано.
Скачивание и парсинг PDF. И если со скачиванием вопросов нет, то с парсингом всё до сих пор очень-очень больно. Есть pypdf, который с извлечением текста из архивовских pdfок кое-как справляется, но получается просто текст без структуры. И есть marker, который справляется очень даже элитно и выдаёт нормальный Markdown + картинки, но который по-хорошему требует отдельного GPU сервака. На CPU ждать по минуте не очень хочется, да и зависимости там сейчас конфликтуют с smolagents. Чего-то посередине я пока не нашёл.
Эмуляция bash. Я взял спеку Anthropic, запихнул её в Соннет и сказал, чтобы он написал код с исполнением через Docker. Пока что работает безотказно, вообще никаких проблем не было. Более того, иногда агент полнейшую дичь умудряется вытворять с этим инструментом.
Сам агент. Сначала я тестировал всё с Соннетом. Когда за 3 дня насчиталось 30$, я понял, что так продолжать нельзя. Сейчас всё пытаюсь делать с gpt-4o-mini, и это реально больно. Зато если уж с ней всё работает, то с нормальными моделями получаются вообще чудеса. Тестирую на простом запросе про свою же статью.
Меня не очень интересуют хардкодные реализациии типа storm и AgentLaboratory. Хочется всё сделать в рамках базового CodeAct, запихивая всю сложность в инструменты и подчинённых агентов.
Сейчас я пишу str_replace_editor из той же спеки, что и bash.
smolagents — очень сырая библиотека. Косяки, которые я успел обнаружить:
- Захардкоженный max_tokens=1500 (issue).
- До 1.2 был неправильное стоп-слово для CodeAct (<end_action> вместо <end_code>).
- Кривое отображение плана в CodeAct начиная с 1.2.
- Частые падения из-за багов в коде отображения в консоли.
- Нет поддержки сложных типов. Tuple[int, int], например.
Но в ней есть один очень весомый плюс: она легко читается и понимается. Там не так много кода и не так много абстракций, в случае чего можно спокойно разбираться и патчить.
- Захардкоженный max_tokens=1500 (issue).
- До 1.2 был неправильное стоп-слово для CodeAct (<end_action> вместо <end_code>).
- Кривое отображение плана в CodeAct начиная с 1.2.
- Частые падения из-за багов в коде отображения в консоли.
- Нет поддержки сложных типов. Tuple[int, int], например.
Но в ней есть один очень весомый плюс: она легко читается и понимается. Там не так много кода и не так много абстракций, в случае чего можно спокойно разбираться и патчить.
На скриншоте один из тестовых вопросов, которые я использую.
Вопрос, очевидно, не совсем серьёзный, но хотя бы заставляет агента попотеть, даже на базе Соннета.
Я всё ещё борюсь за получение нормального лога/отчёта (mind.txt), в комменты скину только final.txt с одного из прогонов.
Что интересно, есть две статьи, которые регулярно всплывали за пару десятков итераций:
Gödel Agent: A Self-Referential Agent Framework for Recursive Self-Improvement
https://arxiv.org/abs/2410.04444
OS-Copilot: Towards Generalist Computer Agents with Self-Improvement
https://arxiv.org/abs/2402.07456
Разбор первой можно найти тут: https://www.group-telegram.com/gonzo_ML/2964
Про вторую я тоже уже слышал, но не читал.
Вопрос, очевидно, не совсем серьёзный, но хотя бы заставляет агента попотеть, даже на базе Соннета.
Я всё ещё борюсь за получение нормального лога/отчёта (mind.txt), в комменты скину только final.txt с одного из прогонов.
Что интересно, есть две статьи, которые регулярно всплывали за пару десятков итераций:
Gödel Agent: A Self-Referential Agent Framework for Recursive Self-Improvement
https://arxiv.org/abs/2410.04444
OS-Copilot: Towards Generalist Computer Agents with Self-Improvement
https://arxiv.org/abs/2402.07456
Разбор первой можно найти тут: https://www.group-telegram.com/gonzo_ML/2964
Про вторую я тоже уже слышал, но не читал.
На этом канале до сих пор не было рекламы, и есть ощущение, что и не будет, хотя меня стабильно раз в неделю о ней спрашивают. Рекламу для России сложно размещать: по-хорошему нужна явная регистрация рекламы в ОРД, а после 10к подписчиков — регистрация канала в другом реестре, и вмазываться в это всё я точно не хочу. Причём не очень понятно, где границы этого. Как определяется, что реклама "направлена на потребителя из России"?
Так что остаётся только реклама не для России, и из-за моего резиденства (Нидерланды) только не для лиц под санкциями. И я сразу зафиксирую ценник: 600€ за постс удалением через 7 дней (обсуждаемо) переводом в пределах ЕС.
Сомневаюсь, что таковые лица найдутся, поэтому можете наслаждаться контентом без рекламы 🥰
Так что остаётся только реклама не для России, и из-за моего резиденства (Нидерланды) только не для лиц под санкциями. И я сразу зафиксирую ценник: 600€ за пост
Сомневаюсь, что таковые лица найдутся, поэтому можете наслаждаться контентом без рекламы 🥰
Please open Telegram to view this post
VIEW IN TELEGRAM
Статья с эпиграфом и буквицами 😎
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Техножрица 👩💻👩🏫👩🔧
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Кононюковщина
Есть ли у ИИ чувство юмора? 😁
Это пытаются выяснить разработчики AI Meme Arena - проекта, в котором разные агенты пытаются сгенерировать самый смешной мем.
Работает как и все llm арены: пользователь вводит тему для шутки, 2 случайных AI-агента делают смешную картинку, юзер выбирает самую смешную, далее строится ELO-рейтинг агентов. Лучшие 3 агента получат денежный приз.
Арену сейчас сильно колбасит, агенты улетают с первого до последнего места за считанные часы (разработчики обещают исправить это).
Я тоже решил учавстовать в сорвевновании и разработал агента "Humorithm" на основе Claude 3.5. Любой человек может добавить своё AI-решение на арену. Для этого нужно сделать публичное API по документации. Требования к агентам: <15 секунд на картинку, 85% уровень доступа (SLA).
Сгенерировать мем
@hikonon
Это пытаются выяснить разработчики AI Meme Arena - проекта, в котором разные агенты пытаются сгенерировать самый смешной мем.
Работает как и все llm арены: пользователь вводит тему для шутки, 2 случайных AI-агента делают смешную картинку, юзер выбирает самую смешную, далее строится ELO-рейтинг агентов. Лучшие 3 агента получат денежный приз.
Арену сейчас сильно колбасит, агенты улетают с первого до последнего места за считанные часы (разработчики обещают исправить это).
Я тоже решил учавстовать в сорвевновании и разработал агента "Humorithm" на основе Claude 3.5. Любой человек может добавить своё AI-решение на арену. Для этого нужно сделать публичное API по документации. Требования к агентам: <15 секунд на картинку, 85% уровень доступа (SLA).
Сгенерировать мем
@hikonon
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Наконец-то пришёл отказ на ICLR, можно теперь на ARR податься.
Мета-ревью примечательно тем, что единственная ссылка в нём — на работу из августа 2024 года, а сабмит моей статьи — из сентября. Согласно официальным гайдлайнам ICLR работы, выпущенные за 4 месяца до сабмита, считаются "параллельным", и я так-то не обязан с ними сравниваться. Но это мелочи, конечно, по сравнению со всем остальным процессом.
Залил на архив новую версию (которая в два раза больше старой): https://arxiv.org/abs/2409.06820
Мета-ревью примечательно тем, что единственная ссылка в нём — на работу из августа 2024 года, а сабмит моей статьи — из сентября. Согласно официальным гайдлайнам ICLR работы, выпущенные за 4 месяца до сабмита, считаются "параллельным", и я так-то не обязан с ними сравниваться. Но это мелочи, конечно, по сравнению со всем остальным процессом.
Залил на архив новую версию (которая в два раза больше старой): https://arxiv.org/abs/2409.06820
Please open Telegram to view this post
VIEW IN TELEGRAM
Один из картиночных вопросов (которые всё равно даже на дашборде не отобразились, поэтому ими можно делиться) был вот такой. Задача — перевести запрос.
Спёр я её у жены, которая делала её для своих проектов.
Это упрощенная версия 278 задачи отсюда. Я тогда ещё нашёл оригинал, поэтичическую стеллу Тутмоса III, и её перевод на английский.
Спёр я её у жены, которая делала её для своих проектов.
Это упрощенная версия 278 задачи отсюда. Я тогда ещё нашёл оригинал, поэтичическую стеллу Тутмоса III, и её перевод на английский.