Гвидо ван Россум (отец Python) выпустил новую версию typeagent, Python-библиотеки, над которой он работал с середины прошлого года, и все больше делал это вместе с Claude. Она реализует память для агентов.
Установка:
CHANGELOG.md
👉 @PythonPortal
Установка:
pip install typeagent. CHANGELOG.md
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
typeagent-py/CHANGELOG.md at main · microsoft/typeagent-py
Structured RAG: ingest, index, query. Contribute to microsoft/typeagent-py development by creating an account on GitHub.
👀8👍4❤2
Новый PEP
Ограничения в софтверной инженерии созданы, чтобы их ломать. Годами меня бесил разрыв между Python и TypeScript: у одного невероятно динамичный и мощный рантайм, у другого невероятно динамичная и мощная система типов.
Так почему бы не совместить и то, и другое?🔥
Встречайте PEP 827, результат годового ресерча о том, что нужно, чтобы прокачать type checking в Python до уровня его динамичности.
Вот как можно реализовать Record, сравнив варианты бок о бок:
TypeScript
Python
Вот пример
TypeScript
Python
А вот
TypeScript
Python
👉 @PythonPortal
Ограничения в софтверной инженерии созданы, чтобы их ломать. Годами меня бесил разрыв между Python и TypeScript: у одного невероятно динамичный и мощный рантайм, у другого невероятно динамичная и мощная система типов.
Так почему бы не совместить и то, и другое?
Встречайте PEP 827, результат годового ресерча о том, что нужно, чтобы прокачать type checking в Python до уровня его динамичности.
Вот как можно реализовать Record, сравнив варианты бок о бок:
TypeScript
type Record<K extends string, V> = {
[P in K]: V
}
// так что...
type Fruit = Record<
'apple' | 'banana' | 'orange',
string
>
// развернется в
//
// {
// apple: string;
// banana: string;
// orange: string;
// }Python
type Record[K, V] = NewTypedDict[
*[Member[k, V] for k in Iter[FromUnion[K]]]
]
# так что...
type Fruit = Record[
Literal["apple", "banana", "orange"],
str
]
# развернется в
#
# class <Fruit>:
# apple: str
# banana: str
# orange: str
Вот пример
Pick:TypeScript
type Pick<T, K extends keyof T> = {
[P in K]: T[P]
}Python
type Pick[T, K] = NewProtocol[*[
p for p in Iter[Attrs[T]]
if IsAssignable[p.name, K]
]]
А вот
Omit. Обрати внимание: версия на Python по сути не изменилась по сравнению с реализацией Pick, в отличие от TS.TypeScript
ts id="5ehk8a"
type Omit<T, K extends keyof T> = {
[P in Exclude<keyof T, K>]: T[P]
}
Python
py id="g6u8k1"
type Omit[T, K] = NewProtocol[*[
p for p in Iter[Attrs[T]]
if not IsAssignable[p.name, K]
]]
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👀3
Немного базы Python. # 12 - Startswith и Endswith
- Использование метода Startswith
Допустим, ты хочешь получить все имена в списке, которые начинаются на
- Использование метода Endswith
Метод
👉 @PythonPortal #100daysofpython
startswith() и endswith() это строковые методы, которые возвращают True, если строка начинается или заканчивается указанным значением. Эти методы можно использовать в разных ситуациях, когда нужно проверить префикс или суффикс у строки. Они особенно полезны для фильтрации и задач валидации.- Использование метода Startswith
Допустим, ты хочешь получить все имена в списке, которые начинаются на
a. Вот как можно использовать startswith() для этого:list1 = ['lemon', 'Orange',
'apple', 'apricot']
new_list = [fruit for fruit in list1 if fruit.startswith('a')]
print(new_list)
['apple', 'apricot']
- Использование метода Endswith
Метод
endswith() можно использовать для валидации ввода пользователя. Например, если нужно проверить, что пользователь ввёл корректный Gmail-адрес, можно убедиться, что ввод заканчивается на gmail.com:user_input = input("Введите email-адрес: ")
if user_input.endswith("@gmail.com"):
print("Валидный email-адрес.")
else:
print("Невалидный email-адрес.")Please open Telegram to view this post
VIEW IN TELEGRAM
❤17👍8🤔3🌭2
Оказалось, что история с покупкой доступа к якобы топовым моделям, а по факту к подменённым, наконец получила подтверждение в статье.
Исследователи провели аудит 17 сторонних API для LLM-агентов и выяснили:
• почти 46% endpoint'ов не проходят fingerprint-тесты
• API заявляет, что это GPT-5 или Gemini-2.5, а на бэкенде тихо подставлен GLM-4
• точность на медицинском бенчмарке падает с 83% до 37%
Эти фейковые API уже процитированы в 187 научных статьях, а некоторые связанные с ними проекты набрали почти 60 тысяч звёзд на GitHub.
И главная проблема тут в том, что научные выводы строятся на поддельных моделях.
Статья: https://arxiv.org/abs/2603.01919
👉 @PythonPortal
Исследователи провели аудит 17 сторонних API для LLM-агентов и выяснили:
• почти 46% endpoint'ов не проходят fingerprint-тесты
• API заявляет, что это GPT-5 или Gemini-2.5, а на бэкенде тихо подставлен GLM-4
• точность на медицинском бенчмарке падает с 83% до 37%
Эти фейковые API уже процитированы в 187 научных статьях, а некоторые связанные с ними проекты набрали почти 60 тысяч звёзд на GitHub.
И главная проблема тут в том, что научные выводы строятся на поддельных моделях.
Статья: https://arxiv.org/abs/2603.01919
Please open Telegram to view this post
VIEW IN TELEGRAM
arXiv.org
Real Money, Fake Models: Deceptive Model Claims in Shadow APIs
Access to frontier large language models (LLMs), such as GPT-5 and Gemini-2.5, is often hindered by high pricing, payment barriers, and regional restrictions. These limitations drive the...
🤯14👍3👀2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24😁9🔥2🌚2❤1