AI да Зайка 🐰 – Trino 474
Тестируем AI функции в Trino 474

Дока тут: https://trino.io/docs/current/functions/ai.html
Заводим конектор llm.properties
connector.name=ai
ai.provider=openai
ai.model=gpt-4o-mini
ai.openai.api-key=sk-XXXXXXa
ai.openai.endpoint= https://api.XXXXX/openai
немного конфига config.properties
sql.path=llm.ai
Пробуем:
SELECT ai_analyze_sentiment('Ai да заяц какой умный как утка только отруби не есть'); -- mixed
SELECT ai_analyze_sentiment('Ai да заяц какой умный'); -- positive
SELECT ai_classify('Buy fucking deep! and bitcoin', ARRAY['spam', 'not spam']); -- spam
-- spam
SELECT ai_classify('много денег', ARRAY['Хорошо', 'Плохо']); -- Хорошо
SELECT ai_classify('мало денег', ARRAY['Хорошо', 'Плохо']); -- Плохо
SELECT ai_fix_grammar('Пошёл я, значица, на рынок, там нашол один такой магазинчег, где продают всякие запчасти. Думал, прикуплю видюху крутую, чтобы всё летало. Смотрю - лежыт такая, блестит, вся из себя навороченая. Спрашиваю продавца: "Скока стоит эта красота?" А он мне такой цену заломил, у меня глаза на лоб полезли.');
-- Пошёл я, значит, на рынок, там нашёл один такой магазинчик, где продают всякие запчасти. Думал, прикуплю крутую видеокарту, чтобы всё летало. Смотрю - лежит такая, блестит, вся из себя навороченная. Спрашиваю продавца: "Сколько стоит эта красота?" А он мне такую цену назвал, что у меня глаза на лоб полезли.
SELECT ai_gen('Опиши что такое Москва коротко');
-- Москва — столица и крупнейший город России, расположенный в центральной части страны. Это политический, экономический и культурный центр, известный своими историческими памятниками, такими как Кремль и Красная площадь, а также современными skyscrapers. Город обладает развитой инфраструктурой, включая транспортную сеть, образовательные учреждения и театры. Москва также является одним из крупнейших мегаполисов мира с разнообразной культурой и многонациональным населением.
SELECT ai_mask(
'Позвони мне быстро 987 554 32 11 или приходи ул. ленина 43 кв. 32, скажи, что от Гаврилова Юры',
ARRAY['телефон', 'Адрес', 'Имя']);
-- Позвони мне быстро [MASKED] или приходи [MASKED], скажи, что от [MASKED]
SELECT ai_translate('Буря мглою небо кроет,
Вихри снежные крутя;
То, как зверь, она завоет,
То заплачет, как дитя,
То по кровле обветшалой
Вдруг соломой зашумит,
То, как путник запоздалый,
К нам в окошко застучит.', 'en');
/*
The storm covers the sky with gloom,
Whirling snowstorms twist and turn;
Now, like a beast, it howls,
Now it cries like a child,
Now on the dilapidated roof
Suddenly rustles with straw,
Now, like a late traveler,
It knocks at our window.
*/
SELECT name, address,comment, ai_classify(comment, ARRAY['Хорошо', 'Плохо', 'Можно помочь']), ai_translate(comment, 'ru') FROM tpch.sf1000.customer limit 10;
Customer#037500001 rLbDxR0mC,PwQ5QkxWCfXCC tes; slyly regular pearls cajole quickl Плохо лжем; хитро обычные жемчужины уговаривают быстро
Customer#037500002 0bZ7K57TnmFs9goL41xTB64xBTLuXPtGPN unusual, ironic pinto beans haggle across the regular req Плохо необычные, ироничные пинто фасоль торгуются по обычному запросу
Customer#037500003 5QliQMqzyz ietly. deposits nag sometimes according to the even deposits. f Плохо тихо. депозиты иногда зависят от равномерных депозитов. f
Customer#037500004 FMm4JPC9UUSTOdfsfn ect; slyly even packages haggle. pending inst Плохо ждут; хитро даже пакеты торгуются. в ожидании инст
Customer#037500005 a CUUBM75af0IX66Jm unts are bold, unusual packages. fluffily unusual foxes nag furiously even deposits Плохо Унцы — это смелые, необычные пакеты. Пухово-необычные лисы яростно требуют даже депозиты.
Customer#037500006 VoXTOweLVJuiKe7xcn K69l7RoN61, ar pinto beans haggle blithely. Можно помочь Фасоль "пинто" торгуются беззаботно.
Customer#037500007 fUoQ2Fkssi94OhGGE1UetR w ages hang blithely among the slyly ruthless accounts. carefully pen Плохо возрасты беззаботно свисают среди хитро безжалостных счетов. осторожно пишите
Customer#037500008 xogtDxejUq slyly special dependencies use quickly throughout the blithely stealthy accounts. depend Можно помочь Лукавые специальные зависимости используются быстро на протяжении безмятежных скрытных отчетов. зависеть
Customer#037500009 ou,BZuF,BMMeEoSUgyODRQZFQJyIsFQMSWp en requests maintain. carefully ironic requests sleep carefull Плохо запросы поддерживают. осторожно ироничные запросы спят осторожно
Customer#037500010 lcP8JaVg2dz y final packages. accounts along the quietly ironic ideas nag carefully idly express requests. requests detect Плохо Итоговые пакеты. учетные записи вдоль тихо ироничных идей настойчиво и бездумно выражают запросы. запросы обнаруживают
При тестировании ни один заяц не пострадал, но вот hive и iceberg пришлось зарубить, там новые параметры для конфига. Так,что. придется их изучить при обновлении на новые версии, старые работать не будут.

а каталог iceberg я добавил так в итоге
connector.name=iceberg
fs.native-s3.enabled=true
s3.endpoint=https://gateway.storjshare.io
s3.region=us1
hive.metastore.uri=thrift://metastore:9083
hive.metastore.username=trino
hive.metastore.thrift.client.connect-timeout=1m
s3.path-style-access=true
s3.aws-access-key=XXXXX
s3.aws-secret-key=CCCCCCCCC
s3.socket-read-timeout=1m
iceberg.file-format=PARQUET
iceberg.compression-codec=SNAPPY
iceberg.target-max-file-size=128MB
но еще заметил эту багу https://github.com/trinodb/trino/issues/25427