AI_SENTIMENT classe le sentiment d'une colonne de texte à l'aide d'un grand modèle de langage (LLM) et renvoie un score, un libellé et une valeur de confiance pour chaque ligne.
Limites
Ververica Runtime (VVR) version 11.4 ou ultérieure est requis.
Pour utiliser le service Flink AI (modèles intégrés), vous devez disposer de la version VVR 11.7 ou ultérieure et activer le service Flink AI. Pour plus de détails, consultez Service Flink AI (modèles intégrés).
Le débit est limité par le taux maximal autorisé par la plateforme de modèles. Si cette limite est dépassée, l'opérateur Flink subit une contre-pression et devient un goulot d'étranglement. Dans les cas graves, cela déclenche des erreurs de délai d'attente de l'opérateur et provoque le redémarrage du job.
Syntaxe
AI_SENTIMENT(
MODEL => MODEL <model_name>,
INPUT => <input_column>
)
Paramètres
| Paramètre | Type de données | Description |
|---|---|---|
MODEL <model_name> |
MODEL | Service de modèle enregistré à utiliser. Enregistrez un service de modèle dans Paramètres du modèle. Le type de sortie du modèle doit être VARIANT. |
<input_column> |
STRING | Colonne de texte à analyser. |
Valeurs de retour
AI_SENTIMENT renvoie une ligne pour chaque ligne d'entrée avec les colonnes suivantes :
| Colonne | Type de données | Description |
|---|---|---|
score |
DOUBLE | Score de sentiment compris entre -1.0 et 1.0. Valeurs de référence : -1.0 extrêmement négatif, -0.5 modérément négatif, 0.0 neutre, 0.5 modérément positif, 1.0 extrêmement positif. |
label |
STRING | Classification du sentiment. Valeurs valides : positive, negative, neutral. |
confidence |
DOUBLE | Niveau de confiance du modèle concernant le libellé prédit, compris entre 0.0 et 1.0. |
Exemples
L'exemple suivant utilise un modèle intégré Flink et la fonction AI_SENTIMENT pour classer le sentiment des commentaires de films.
Données de test
| id | movie_name | comment | actual_label |
|---|---|---|---|
| 1 | Good Stuff | I loved the part where the child guessed sounds. It was one of the most romantic narratives I've seen in a movie. Very gentle and full of love. | positive |
| 2 | Dumpling Queen | Nothing remarkable. | negative |
Instructions SQL
-- Register the model service
CREATE TEMPORARY MODEL general_model
INPUT (`input` STRING)
OUTPUT (`content` VARIANT)
WITH (
'provider' = 'openai-compat',
'task' = 'chat/completions',
'model' = 'qwen3.6-flash'
);
-- Create a view with the test data
CREATE TEMPORARY VIEW movie_comment(id, movie_name, user_comment, actual_label)
AS VALUES
(1, 'Good Stuff', 'I loved the part where the child guessed sounds. It was one of the most romantic narratives I\'ve seen in a movie. Very gentle and full of love.', 'positive'),
(2, 'Dumpling Queen', 'Nothing remarkable.', 'negative');
-- Call AI_SENTIMENT using positional arguments
SELECT id, movie_name, actual_label, score, label, confidence
FROM movie_comment,
LATERAL TABLE(
AI_SENTIMENT(MODEL general_model, user_comment));
-- Call AI_SENTIMENT using named arguments
SELECT id, movie_name, actual_label, score, label, confidence
FROM movie_comment,
LATERAL TABLE(
AI_SENTIMENT(
MODEL => MODEL general_model,
INPUT => user_comment));
Sortie
Le label prédit correspond au actual_label pour les deux lignes.
| id | movie_name | actual_label | score | label | confidence |
|---|---|---|---|---|---|
| 1 | Good Stuff | positive | 0,8 | positive | 0,95 |
| 2 | Dumpling Queen | negative | -1,0 | negative | 0,95 |