AI_SENTIMENT

概述

AI_SENTIMENT
AI_SENTIMENT
是云器 Lakehouse 提供的 AI 情感分析函数,可对输入文本进行情感倾向判断,返回
positive
positive
(正面)、
negative
negative
(负面)、
neutral
neutral
(中性)或
mixed
mixed
(混合)标签。支持中文、英文、日文等多语言,一行 SQL 即可完成情感分析。

云器将 AI 计算下沉至存储层与执行引擎,数据在平台内部即可完成智能处理,无需流转至外部环境,在保障数据安全的同时大幅降低任务延迟。

语法

-- model 可选(使用 Workspace 默认模型) AI_SENTIMENT( <text> [, <options>] ) -- model 手动指定 AI_SENTIMENT( <model>, <text> [, <options>] )

参数说明

model(可选)

指定要调用的语言模型。从 2026 年 9 月起,该参数可以省略——模型通过工作区默认模型自动路由,无需在每次调用时显式传入。

省略 model 参数时调用方式最简洁:

SELECT AI_SENTIMENT('产品很好');

工作区默认模型可通过以下方式配置:

方式一:创建新工作区时开启开关(推荐)

2026 年 9 月起新建的工作区,在创建时打开 "启用 AI Function" 开关,系统将自动配置默认模型,调用时无需传入 model 参数。对于此之前创建的工作区,需通过下方方式手动配置。

方式二:工作区级别 ALTER WORKSPACE 配置

通过

ALTER WORKSPACE
ALTER WORKSPACE
设置工作区默认模型,对所有使用该工作区的 session 生效:

ALTER WORKSPACE <workspace_name> SET PROPERTIES ( 'cz.sql.ai.sentiment.default.model' = '<connection>:<model>' ); SELECT AI_SENTIMENT('产品很好');

方式三:会话级 SET 覆盖

在当前会话中临时指定默认模型,优先级高于工作区属性,仅当前 session 生效:

SET cz.sql.ai.sentiment.default.model=conn_bailian:qwen3.5-plus; SELECT AI_SENTIMENT('产品很好');

方式四:API Connection 连接对象

通过

CREATE API CONNECTION
CREATE API CONNECTION
创建连接对象后,在调用时显式传入:

CREATE API CONNECTION conn_bailian TYPE ai_function PROVIDER = 'bailian' BASE_URL = 'https://dashscope.aliyuncs.com/api/v1' API_KEY = 'sk-xxxxxxxxxxxxxxxxxxxxxxxx'; SELECT AI_SENTIMENT('conn_bailian:qwen3.5-plus', '这个产品非常好用!');

CREATE API CONNECTION
CREATE API CONNECTION
各字段说明:

字段说明
TYPE
TYPE
固定为
ai_function
ai_function
PROVIDER
PROVIDER
模型供应商标识,如
'bailian'
'bailian'
'openai'
'openai'
'anthropic'
'anthropic'
BASE_URL
BASE_URL
模型服务的 API 基础地址
API_KEY
API_KEY
调用服务所需的认证密钥

text
text

包含待检测情感的输入文本,类型为 STRING。支持中文、英文、日文、法文、德文、西班牙文等多种语言,无需手动指定语言,模型自动识别。

可选参数

options
options

一个 JSON STRING,用于控制函数行为。当前支持的选项如下:

参数键类型默认值说明
output.behavior
output.behavior
STRING
formatted_json
formatted_json
输出格式,见下方对比表
model.params.temperature
model.params.temperature
FLOAT输出随机性,范围 [0, 2],越低越确定
model.params.max_tokens
model.params.max_tokens
INT最大输出 token 数
model.params.enable_thinking
model.params.enable_thinking
BOOL是否开启 thinking 模式,批量处理建议设为
false
false
task.concurrency
task.concurrency
STRING
"1"
"1"
批量处理并发度,上限 128(建议不超过 8)
response.timeout
response.timeout
STRING单次请求超时时间(秒),如
"60"
"60"

output.behavior 取值说明

模式成功输出错误输出适用场景
formatted_json
formatted_json
{"value":"positive"}
{"value":"positive"}
{"value":"","error_message":"..."}
{"value":"","error_message":"..."}
生产环境默认,结构化输出便于下游解析
raw_string
raw_string
原始字符串(如
positive
positive
NULL兼容旧行为,应急使用
fail_on_error
fail_on_error
原始字符串(如
positive
positive
抛异常,整个 job 失败严格模式,不容忍单行错误

output.behavior
output.behavior
输入兼容性(大小写不敏感,
_
_
.
.
-
-
等价):

输入值解析结果
formatted_json
formatted_json
/
formatted.json
formatted.json
/
json
json
FORMATTED_JSON
raw_string
raw_string
/
raw.string
raw.string
/
raw
raw
RAW_STRING
fail_on_error
fail_on_error
/
fail.on.error
fail.on.error
/
fail-on-error
fail-on-error
/
fail
fail
FAIL_ON_ERROR

返回值

STRING 类型,为以下值之一:

含义
positive
positive
文本表达了正面评价或积极情感
negative
negative
文本表达了负面评价或消极情感
neutral
neutral
文本不含明显情感倾向(如陈述性事实、通知类文本)
mixed
mixed
文本中同时包含正面和负面情感

错误行为

默认情况下,若函数无法处理输入,返回

NULL
NULL
,不报错。在多行查询中,出错的行返回
NULL
NULL
,不影响其他行的正常执行。

使用说明

  • NULL 和空字符串均返回 NULL
    text
    text
    NULL
    NULL
    或空字符串
    ''
    ''
    时,函数返回
    NULL
    NULL
    ,不报错。纯空白字符(如
    '   '
    ' '
    )会被发送给模型处理,通常返回
    neutral
    neutral
  • 结果具有非确定性:基于 LLM 的情感分析结果可能因模型版本或调用时机略有差异,同一输入多次执行结果可能不同。
  • 注意 mixed 与 neutral 的区别
    mixed
    mixed
    表示文本中同时存在正面和负面评价(如"食物好但服务差");
    neutral
    neutral
    表示文本不含情感倾向(如"下午三点开会")。
  • 多语言无需额外配置:模型自动识别输入语言,中英日法德西等语言均可直接分析。

示例

省略 model 参数(推荐)

当工作区已配置默认模型时,调用方式最简洁:

SELECT AI_SENTIMENT('产品很好') AS sentiment; -- 返回:positive

使用默认模型

当已配置默认模型(通过 Workspace 属性或 Session SET),可省略 model 参数:

SELECT AI_SENTIMENT('产品很好'); -- 返回:positive

基础用法

-- 正面情感 SELECT AI_SENTIMENT( 'conn_bailian:qwen3.5-plus', '这个产品非常好用,强烈推荐!' ) AS sentiment; -- 返回:positive -- 负面情感 SELECT AI_SENTIMENT( 'conn_bailian:qwen3.5-plus', '质量太差了,完全是浪费钱,非常失望。' ) AS sentiment; -- 返回:negative -- 中性文本 SELECT AI_SENTIMENT( 'conn_bailian:qwen3.5-plus', '今天下午三点有一个会议,讨论下季度的预算安排。' ) AS sentiment; -- 返回:neutral -- 混合情感 SELECT AI_SENTIMENT( 'conn_bailian:qwen3.5-plus', '食物非常美味,但服务态度很差,等了一个小时才上菜。' ) AS sentiment; -- 返回:mixed

多语言

-- 英文 SELECT AI_SENTIMENT('conn_bailian:qwen3.5-plus', 'This is the best purchase I have ever made!') AS sentiment; -- 返回:positive -- 日文 SELECT AI_SENTIMENT('conn_bailian:qwen3.5-plus', 'この製品は素晴らしいです。品質が非常に高いです。') AS sentiment; -- 返回:positive -- 法语 SELECT AI_SENTIMENT('conn_bailian:qwen3.5-plus', 'Ce restaurant est absolument terrible.') AS sentiment; -- 返回:negative -- 中英混合 SELECT AI_SENTIMENT('conn_bailian:qwen3.5-plus', '这个product的quality真的很nice,性价比超高!') AS sentiment; -- 返回:positive

语义理解能力

模型具备以下语义理解能力,无需额外配置:

-- 讽刺/反语识别 SELECT AI_SENTIMENT('conn_bailian:qwen3.5-plus', '哦,真是太好了,又加班到凌晨,我真是太开心了。') AS sentiment; -- 返回:negative(正确识别讽刺语气,而非字面正面含义) -- 双重否定 SELECT AI_SENTIMENT('conn_bailian:qwen3.5-plus', '这个产品并不差。') AS sentiment; -- 返回:positive(正确理解"并不差"= 正面评价) -- 否定句 SELECT AI_SENTIMENT('conn_bailian:qwen3.5-plus', '我不觉得这个产品好。') AS sentiment; -- 返回:negative -- Emoji 情感 SELECT AI_SENTIMENT('conn_bailian:qwen3.5-plus', '今天的晚餐 🤮🤮🤮') AS sentiment; -- 返回:negative SELECT AI_SENTIMENT('conn_bailian:qwen3.5-plus', '收到礼物了 🎉❤️😍') AS sentiment; -- 返回:positive -- 古诗词情感 SELECT AI_SENTIMENT('conn_bailian:qwen3.5-plus', '春风得意马蹄疾,一日看尽长安花。') AS sentiment; -- 返回:positive SELECT AI_SENTIMENT('conn_bailian:qwen3.5-plus', '问君能有几多愁,恰似一江春水向东流。') AS sentiment; -- 返回:negative

批量分析表数据

SELECT id, review_content, AI_SENTIMENT('conn_bailian:qwen3.5-plus', review_content) AS sentiment FROM product_reviews WHERE review_content IS NOT NULL;

情感分布统计

SELECT sentiment, COUNT(*) AS cnt, ROUND(COUNT(*) * 100.0 / SUM(COUNT(*)) OVER(), 1) AS pct FROM ( SELECT AI_SENTIMENT('conn_bailian:qwen3.5-plus', content) AS sentiment FROM customer_feedback WHERE content IS NOT NULL ) GROUP BY sentiment ORDER BY cnt DESC;

负面工单优先处理

SELECT ticket_id, description, created_at FROM support_tickets WHERE AI_SENTIMENT('conn_bailian:qwen3.5-plus', description) = 'negative' ORDER BY created_at DESC LIMIT 50;

限制说明

  • model 参数可选:如已通过 Workspace 属性或 Session SET 配置默认模型,可省略 model 参数。未配置默认模型时 model 为必填。
  • model 格式错误会报错:model 必须使用
    '<连接名称>:<模型名称>'
    '<连接名称>:<模型名称>'
    格式,格式不符时报错
    Invalid model coordinates
    Invalid model coordinates
  • 输入长度受模型限制:输入文本长度受底层模型 context window 限制,超长文本会被自动截断处理,不报错。
  • 不支持维度级情感分析:当前仅返回整体情感,不支持按维度(如"价格"、"服务")分别分析情感。
联系我们
预约咨询
微信咨询
电话咨询
邮件咨询