Python Portal
55.1K subscribers
2.48K photos
405 videos
51 files
1.02K links
Всё самое интересное из мира Python

Связь: @devmangx

РКН: https://clck.ru/3GMMF6
Download Telegram
Новый PEP

Ограничения в софтверной инженерии созданы, чтобы их ломать. Годами меня бесил разрыв между 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]
]]


👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
7👀3
Немного базы Python. # 12 - Startswith и Endswith

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-адрес.")


👉 @PythonPortal #100daysofpython
Please open Telegram to view this post
VIEW IN TELEGRAM
17👍8🤔3🌭2
🤔🤔🤔

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣57😁10👍74
Оказалось, что история с покупкой доступа к якобы топовым моделям, а по факту к подменённым, наконец получила подтверждение в статье.

Исследователи провели аудит 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
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯14👍3👀2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24😁9🔥2🌚21
Хорошо там, где нас нет 🤣🤣🤣

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
😁46🤔2
OpenAI опубликовала работу, в которой доказывается, что ChatGPT будет выдумывать всегда. 😖

Не иногда. Не до следующего обновления. Всегда. Они доказали это математически.

Даже при идеальных обучающих данных и неограниченной вычислительной мощности AI-модели всё равно будут уверенно говорить вещи, которые полностью ложны. Это не баг, который они пытаются пофиксить. Это фундаментально встроено в принцип работы таких систем.

И их собственные цифры довольно жёсткие. Рассуждающая модель o1 от OpenAI галлюцинирует в 16% случаев. Более новая o3? 33%. Их новейшая o4-mini? 48%. То есть почти половина того, что говорит их самая свежая модель, может быть выдумкой. Более «умные» модели на самом деле становятся хуже в плане правдивости.

Вот почему это нельзя исправить. Языковые модели работают, предсказывая следующее слово на основе вероятности. Когда они сталкиваются с неопределённостью, они не ставят ответ на паузу. Не помечают её. Они просто угадывают. И делают это с полной уверенностью, потому что именно этому их и обучали.

Исследователи посмотрели на 10 крупнейших AI-бенчмарков, которые используются для оценки качества таких моделей. В 9 из 10 случаев ответ I don't know получает ту же оценку, что и полностью неправильный ответ: ноль баллов. Вся система тестирования буквально наказывает честность и поощряет угадывание.

Поэтому AI выучил оптимальную стратегию: всегда угадывать. Никогда не признавать неопределённость. Звучать уверенно, даже когда он всё это выдумывает.

Какое решение предлагает OpenAI? Заставить ChatGPT отвечать I don't know, когда он не уверен. Но их собственная математика показывает, что тогда примерно 30% ваших запросов будут оставаться без ответа. Представьте: вы спрашиваете ChatGPT о чём-то, и примерно в трёх случаях из десяти получаете Я недостаточно уверен, чтобы ответить. Пользователи ушли бы практически сразу. То есть решение существует, но оно убило бы продукт.

И это не только проблема OpenAI. DeepMind и Tsinghua University независимо пришли к тому же выводу. Три ведущие AI-лаборатории мира, работая по отдельности, сошлись в одном: это навсегда.

Каждый раз, когда ChatGPT даёт вам ответ, задавайте себе вопрос: это правда или просто уверенная догадка?

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
😁4