三、2.1 调用形式
AI Function 作为普通标量 / 聚合 / 表函数使用,可出现在 SELECT、WHERE、GROUP BY、CTE 等任意 SQL 位置,可与 JOIN、UNION、窗口函数自由组合。
四、2.2 指定 Endpoint
除特别说明外,函数第一个参数为 endpoint,用于指定本次调用绑定的模型接入点。Endpoint 名称在“模型管理 > 模型连接”页查看,实例内唯一。
为避免每次调用都显式指定 Endpoint,支持在 Session 级设置默认 Endpoint:
SET DEFAULT_LLM_ENDPOINT = 'endpoint-minimax-m3';SET DEFAULT_EMBEDDING_ENDPOINT = 'endpoint-kinfra-emb-0.6b';SET DEFAULT_TIME_FORECAST_ENDPOINT = 'endpoint-chronos-2';
优先级:函数内显式指定的 endpoint 参数 > Session 级默认 Endpoint。未指定且未设置 Session 变量时,调用将失败。
注意:说明:
注意:向量化函数 AI_EMBED 必须绑定 Embedding 类 Endpoint;时序预测函数 AI.FORECAST 必须绑定时序预测类 Endpoint。类型不匹配会导致调用失败。
五、2.3 通过 OPTIONS 传入模型参数
函数支持通过 OPTIONS 传入一段 JSON 字符串,用于控制推理行为。最常用的是 kwargs,其中的字段会追加进模型请求体(OpenAI Chat Completions 兼容)。
SELECT AI_GENERATE( endpoint 'endpoint-minimax-m3', options '{"kwargs":{"temperature": 0.2, "top_p": 0.9, "max_tokens": 512}}', '为 AI 产品发布会写一段开场白');
除 kwargs 外,OPTIONS 还支持 max_qps、max_concurrency、max_retries、hint 以及推理优化相关参数,完整说明请参见 AI Function 高级能力说明。
六、3. 函数总览
| 函数名 | 分类 | 用途 | 返回类型 |
| AI_GENERATE | 文本生成 | 指令驱动的内容生成:逻辑续写、创意润色及多风格文案创作 | STRING |
| AI_FIXGRAMMAR | 文本生成 | 文本语法与规范修正 | STRING |
| AI_SUMMARIZE | 文本生成 | 单条长文本的语义聚焦性摘要 | STRING |
| AI_SUMMARIZE_AGG | 文本生成 | 多行文本的语义聚合摘要(聚合函数) | STRING |
| AI_TRANSLATE | 文本生成 | 跨语言语义映射与翻译 | STRING |
| AI_SENTIMENT | 文本理解 | 情感极性识别 | STRING |
| AI_CLASSIFY | 文本理解 | 零样本语义分类(支持多标签) | STRING / ARRAY<STRING> |
| AI_SIMILARITY | 文本理解 | 两文本的语义相似度度量 | DOUBLE |
| AI_FILTER | 文本理解 | 按自定义策略做合规性风险审计 | BOOLEAN |
| AI_EXTRACT | 信息提取 | 结构化字段抽取 | JSON / STRUCT |
| AI_MASK | 信息提取 | 敏感信息脱敏 | STRING |
| AI_EMBED | 向量化 | 文本向量化编码 | ARRAY<FLOAT> |
| AI.FORECAST | 时序预测 | 基于历史时间序列预测未来值 | TABLE |
七、4. 组合使用示例:构建舆情处理中心
本章用一个端到端示例演示 AI Function 的组合用法。场景是舆情处理:输入一张社交媒体原始评论表,先用 AI_FILTER 剔除谩骂等违规内容,再用 AI_SENTIMENT 只保留负面评论,最后对筛出的每一行用 AI_GENERATE 逐条生成客服回复。三步全部在一条 SQL 内完成,数据不出数仓,也不需要任何外部程序或调度。
示例分三步:4.1 准备数据集,4.2 编写并执行核心 SQL,4.3 查看执行结果。
八、4.1 数据集准备
— 步骤 1:创建演示库与原始评论表– 结构与业务系统落地的原始舆情数据一致:只保留平台、作者、正文等非结构化字段CREATE DATABASE IF NOT EXISTS d_llm_function_demo;DROP TABLE IF EXISTS d_llm_function_demo.t_social_media_raw;CREATE TABLE d_llm_function_demo.t_social_media_raw ( id INT COMMENT '唯一标识', source_platform STRING COMMENT '来源平台:微博、小红书、贴吧等', author_name STRING COMMENT '发布者昵称', content STRING NOT NULL COMMENT '原始非结构化评论内容') COMMENT '舆情处理中心-原始数据表';– 步骤 2:灌入 5 条样本,刻意覆盖四类典型情况– id=1 物流异常 :负面、不违规 → 期望保留– id=2 谩骂辱骂 :负面、违规 → 期望被 AI_FILTER 过滤– id=3 好评推荐 :正面、不违规 → 期望被 AI_SENTIMENT 过滤– id=4 兼职广告 :负面、不违规 → 期望保留– id=5 功能报障 :负面、不违规 → 期望保留INSERT INTO d_llm_function_demo.t_social_media_raw VALUES(1, '微博', '快乐的小羊', '刚才在静安区世纪大道发生了快递车起火,我的包裹号是 SF142335……'),(2, '小红书', '避雷达人', '这种垃圾产品也敢卖 2999 元?退钱!张三你这个经理是怎么当的?'),(3, '朋友圈', '科技狂热者', '收到新款手机了,质感无敌!上海发货速度就是快,推荐大家购买。'),(4, '贴吧', '兼职助手', '诚招兼职,加微信:wx_12345,月入过万不是梦,详询 18900001111。'),(5, 'App','用户9527', '登录一直提示系统错误,重启也没用。我身份证号是 310115199001011234。');
九、4.2 核心 SQL
逻辑:过滤违规 → 情感分析 → 生成回复。
— 一条 SQL 完成“违规过滤 → 情感筛选 → 回复生成”SELECT id, — 对通过筛选的每一行拼一段指令交给大模型生成客服回复,每行一次调用 AI_GENERATE( endpoint 'system-minimax-m3', CONCAT('针对该问题生成技术回复:', content) ) AS 预制回复FROM d_llm_function_demo.t_social_media_rawWHERE — 语义合规审计:返回 TRUE 表示命中策略(本例为谩骂),取 FALSE 即保留未违规内容 AI_FILTER(endpoint 'system-minimax-m3', '{} 是谩骂的', content) = FALSE — 情感极性:只保留 negative,正面与中性评论不进入回复队列 AND AI_SENTIMENT(endpoint 'system-minimax-m3', content) = 'negative';
十、4.3 执行结果
逐行筛选过程
把 4.2 的 WHERE 条件直接放到 SELECT 里执行,可以看到每一步的判定结果:
| id | 原文摘要 | 命中谩骂 | 情感极性 | 是否生成回复 |
| 1 | 快递车起火,包裹号 SF142335 | false | negative | 是 |
| 2 | 这种垃圾产品也敢卖 2999 元?退钱! | true | negative | 否,违规内容被拦截 |
| 3 | 收到新款手机了,质感无敌! | false | positive | 否,非负面不处理 |
| 4 | 诚招兼职,加微信,月入过万 | false | neutral | 否,情感判定未落在 negative |
| 5 | 登录一直提示系统错误 | false | negative | 是 |
最终输出(以下为一次执行的真实输出,仅供示意,生成式模型的输出每次不完全一致):
| id | 预制回复 |
| 1 | 尊敬的用户,你好!关于你反映的快递车起火事故及包裹(单号:SF142335)情况,现回复如下 一、事故核实.… |
| 5 | 重要提醒:请立即修改/隐藏你的身份证号!身份证号属于高度敏感个人信息,在公开渠道(论坛、客服工单、聊天记录等)泄露可能导致身份盗用。请立即:… |
十二、5.1 AI_GENERATE
指令驱动的内容生成。基于提示词工程实现逻辑续写、创意润色及多风格文案创作。
| 参数 | 说明 |
| endpoint | 模型接入点名称 |
| prompt | 指令文本 |
返回类型:STRING。
SELECT AI_GENERATE( endpoint 'endpoint-minimax-m3', '为 AI 产品发布会写一段开场白');
预期输出:
"未来已来。今天,我们共同见证 AI 重塑世界的起点……"
结合表数据的批量调用示例:
SELECT product_id, product_name, AI_GENERATE( endpoint 'endpoint-minimax-m3', '为以下商品撰写一段 50 字以内的电商详情页文案:' || product_name ) AS marketing_copyFROM product_catalogWHERE category = '数码';
十三、5.2 AI_FIXGRAMMAR
文本语法与规范修正。智能识别并修复句法结构、拼写错误及表达偏差。
| 参数 | 说明 |
| endpoint | 模型接入点名称 |
| text | 待修正文本 |
返回类型:STRING。
SELECT AI_FIXGRAMMAR( endpoint 'endpoint-minimax-m3', 'The data are incorrect.');
预期输出:
"The data is incorrect."
十四、5.3 AI_SUMMARIZE
语义聚焦性摘要。通过语义聚类提取核心观点,在限定长度内实现长篇幅信息的高度浓缩。
| 参数 | 说明 |
| endpoint | 模型接入点名称 |
| text | 待处理的长文本内容 |
| max_len | 目标输出长度,按词数(words)计算。默认值 50,建议最大值 2000 |
返回类型:STRING。
SELECT AI_SUMMARIZE( endpoint 'endpoint-minimax-m3', '我家的后面有一个很大的园,相传叫作百草园。……', 50);
预期输出:
"我家后园曾叫百草园,现已卖给朱家多年,虽只剩野草,却是儿时乐园。"
注意:说明:
注意:max_len 为引导性建议值。英文按空格分隔的单词计数;中文无天然分词边界,1 个汉字可近似视为 1 个词。模型会尽量控制输出长度,不做强制截断。
十五、5.4 AI_SUMMARIZE_AGG
多行文本信息聚合摘要。将多行文本按行进行语义聚合,输出一个汇总语义后的统一摘要文本。调用方式与其他聚合函数(如 SUM、AVG)一致,支持 GROUP BY。
| 参数 | 说明 |
| endpoint | 模型接入点名称 |
| text | 待处理的多行长文本内容 |
返回类型:STRING。
WITH reviews AS ( SELECT '这家餐厅太棒了,食物美味,服务周到。' AS review UNION ALL SELECT '太棒了!我超爱他们的披萨!' UNION ALL SELECT '食物不错,但服务一般般。' UNION ALL SELECT '普通的食物和普通的服务')SELECT AI_SUMMARIZE_AGG(endpoint 'endpoint-minimax-m3', review)FROM reviews;
预期输出:
"用户主要需求包括:增加深色模式、优化搜索、数据导出功能、通知设置个性化以及简化界面设计。"
十六、5.5 AI_TRANSLATE
跨语言语义映射。在保留原文语义权重的基础上,实现多语种间的流畅对齐与文化适配。
| 参数 | 说明 |
| endpoint | 模型接入点名称 |
| text | 源文本 |
| t_lang | 目标语言 |
| s_lang | 源语言,可选 |
返回类型:STRING。
SELECT AI_TRANSLATE( endpoint 'endpoint-minimax-m3', 'Hello world!', 'zh-CN');
预期输出:
"你好,世界!"
注意:说明:
注意:t_lang、s_lang 无强制格式约束,支持“中文”/“zh”/“zh-CN”等多种写法。建议参考 ISO 639-1 或 BCP 47 标准传入。
十八、6.1 AI_SENTIMENT
情感极性识别。深度分析主观文本,输出情感正负倾向。
| 参数 | 说明 |
| endpoint | 模型接入点名称 |
| text | 目标文本 |
返回类型:STRING,取值为 positive / negative / neutral / mixed。
SELECT AI_SENTIMENT( endpoint 'endpoint-minimax-m3', '这物流慢得离谱');
预期输出:
"negative"
十九、6.2 AI_CLASSIFY
零样本语义分类。基于语义锚点将文本映射至预定义标签体系,无需额外训练。支持多标签模式。
| 参数 | 说明 |
| endpoint | 模型接入点名称 |
| text | 目标文本 |
| labels | 预设分类数组 |
| multi_label | 可选,是否多标签(BOOL,默认 false) |
返回类型:单标签为 STRING,多标签为 ARRAY<STRING>。
单标签示例:
SELECT AI_CLASSIFY( endpoint 'endpoint-minimax-m3', '无法登录账号', array('投诉', '咨询'));
预期输出:
"投诉"
多标签示例:
SELECT ai_classify( endpoint 'endpoint-minimax-m3', '快递送得快,但商品有瑕疵,客服态度还不错', array['物流速度', '包装质量', '商品质量', '客服服务', '性价比'], true);
预期输出:
['物流速度', '客服服务']
20、6.3 AI_SIMILARITY
语义相似度度量。由生成式模型判定两个文本的相似度,返回 0 至 1 之间的关联度数值,数值越高表示关联度越大。
| 参数 | 说明 |
| endpoint | 模型接入点名称 |
| text1 | 文本 A |
| text2 | 文本 B |
返回类型:DOUBLE。
SELECT AI_SIMILARITY( endpoint 'endpoint-minimax-m3', '我想退钱', '申请退款');
预期输出:
0.9
21、6.4 AI_FILTER
合规性风险审计。根据自定义安全策略判定内容是否触碰违规红线,输出布尔值。
| 参数 | 说明 |
| endpoint | 模型接入点名称 |
| policy | 过滤策略,使用 {} 作为待审文本的占位符 |
| text1 … textN | 待审文本,个数需与 policy 中的占位符一致 |
返回类型:BOOLEAN。
单文本示例:
SELECT AI_FILTER( endpoint 'endpoint-minimax-m3', '{} 是色情暴力的', '怎么才能像大神一样优秀呢');
预期输出:
false
双文本(JOIN 语义)示例:
SELECT AI_FILTER( endpoint 'endpoint-minimax-m3', '{} 是色情的,{} 是暴力的', '怎么才能像大神一样优秀呢', '今天雨下的很大');
注意:说明:
注意:多参数形态的 AI_FILTER 具备 JOIN 语义,优化器会为其选择专门的 LLM NESTLOOP JOIN 执行,并可自动批处理以降低调用次数。详见 AI Function 高级能力说明。
23、7.1 AI_EXTRACT
结构化字段抽取。从非结构化文本中识别并捕获特定维度的关键信息,支持多种输入 / 输出形式。
| 参数 | 说明 |
| endpoint | 模型接入点名称 |
| text | 目标文本 |
| entities | 抽取规则,支持四种形式(见下表) |
entities 支持的四种形式:
| 形式 | 说明 | 返回 |
| array(string) | 仅标签名字 | json string |
| array(string, schema) | 标签名字 + 指定返回 schema | struct |
| string | JSON Schema 字符串描述 | json string |
| struct schema | struct 结构类型描述,如 struct<name:string, age:int> | 对应结构的 struct |
返回类型:JSON / STRUCT。
·形式一:标签数组
SELECT AI_EXTRACT( endpoint 'endpoint-minimax-m3', '我是一名来自清华大学计算机专业的研究生', array('学校', '专业'));
预期输出:
{"学校": "清华大学", "专业": "计算机"}
·形式二:struct schema
SELECT ai_extract( endpoint 'endpoint-minimax-m3', '我的名字是张三,年龄为25岁', struct<姓名:string, 年龄:int>);
预期输出:
{姓名: "张三", 年龄: 25}
·形式三:JSON Schema 字符串
SELECT ai_extract( endpoint 'endpoint-minimax-m3', '李四居住在上海,是一名软件工程师', '{"type": "object", "properties": { "姓名": {"type": "string", "description": "人员的全名"}, "地点": {"type": "string", "description": "城市或国家"}, "年龄": {"type": ["integer", "null"], "description": "人员的年龄"}, "职业": {"type": ["string", "null"], "description": "人员的职业"} }}');
预期输出:
{"姓名": "李四", "地点": "上海", "年龄": null, "职业": "软件工程师"}
注意:说明:
注意:JSON Schema 形式可更细粒度地约束字段类型与描述,建议参考 JSON Schema 2020-12 标准编写。
24、7.2 AI_MASK
隐私数据脱敏。基于预设标签自动定位敏感数据,采用 [MASKED] 掩码进行置换遮蔽。
| 参数 | 说明 |
| endpoint | 模型接入点名称 |
| text | 原始文本 |
| tags | 脱敏标签数组 |
返回类型:STRING。
SELECT AI_MASK( endpoint 'endpoint-minimax-m3', '我叫张三,手机 13800000000,邮箱 zhangsan@example.com', array('name', 'phone', 'email'));
预期输出:
"我叫 [MASKED],手机 [MASKED],邮箱 [MASKED]"
26、8.1 AI_EMBED
将文本编码为定长向量(embedding),用于语义检索、聚类、相似度对比等下游任务。
| 参数 | 说明 |
| endpoint | 模型接入点名称,须为 Embedding 类 Endpoint |
| text | 待编码的文本 |
返回类型:ARRAY<FLOAT>。
SELECT AI_EMBED( endpoint 'endpoint-kinfra-emb-0.6b', '申请退款');
预期输出:
[0.0123, -0.0451, …, 0.0087]
注意:说明:
注意:向量维度由 Endpoint 所绑定的模型决定(例如 1024 维)。同一批数据请使用同一个 Embedding Endpoint 编码,避免不同模型产出的向量混用导致相似度不可比。
28、9.1 AI.FORECAST
基于历史时间序列预测未来时间点的值,输出预测值及置信区间。支持按 id_cols 分组进行多序列并发预测,支持通过 feature_cols 引入外生特征。
| 参数 | 必填 | 说明 |
| endpoint | 否 | 模型接入点名称,须为时序预测类 Endpoint。未指定且未设置 DEFAULT_TIME_FORECAST_ENDPOINT 时,将触发本地推理 |
| options | 否 | JSON 字符串,支持 prediction_length / confidence_level / freq / limit_prediction_length / context_length / output_historical_time_series |
| 输入数据 | 是 | 二选一:传数据表 TABLE <表名>,或传子查询 (<子查询>) |
| data_col | 是 | 目标序列列名(字符串字面量) |
| timestamp_col | 是 | 时间戳列名 |
| id_cols | 否 | ARRAY<STRING>,多序列分组键 |
| feature_cols | 否 | ARRAY<STRING>,外生特征列 |
返回类型:TABLE。
SELECT *FROM AI.FORECAST( ENDPOINT 'endpoint-chronos-2', OPTIONS '{"prediction_length": 7, "confidence_level": 0.9}', TABLE sales, data_col => 'gmv', timestamp_col => 'ds', id_cols => ARRAY['store_id'], feature_cols => ARRAY['is_promo']);
预期输出:
| forecast_timestamp | forecast_value | prediction_interval_lower_bound | prediction_interval_upper_bound | confidence_level |
| 2026-07-24 00:00:00 | 13100.5 | 11800.2 | 14400.8 | 0.9 |
| … | … | … | … | … |
| 2026-07-30 00:00:00 | 14020.3 | 11020.4 | 17020.1 | 0.9 |
注意:说明:
注意:若指定 id_cols,结果列前会追加对应分组列;若 OPTIONS 中 output_historical_time_series=true,结果末尾会追加 time_series_type 列。