全部產品
Search
文件中心

E-MapReduce: AI Function 介紹

更新時間:Mar 19, 2026

AI Function 將大語言模型(LLM)能力直接整合到Serverless Spark中,讓資料工程師無需 SDK、API 或模型營運,即可在 SQL/PySpark 中直接調用大模型完成情感分析、翻譯、抽取等任務。

使用限制

  • 支援的引擎版本。

    • esr-4.x:esr-4.6.0及之後版本。

    • esr-3.x:esr-3.5.0及之後版本。

    • esr-2.x:esr-2.9.0及之後版本。

  • 不支援情境

    通過 Kyuubi GatewayLivy Gateway 提交的任務。

  • 啟用配置

    作業提交、或建立會話時添加spark.emr.serverless.ai.function.enable true Spark 配置以啟用 AI Function功能。

函數總覽

下表匯總了Serverless Spark內建的所有 AI Function。

函數

說明

預設關聯模型

典型用法

ai_query()

通用模型調用介面,支援自訂 Prompt、指定模型及產生參數

qwen-plus

批量摘要、資訊抽取、調用外部/自建模型端點

ai_sentiment()

情感分析(正/負/中性)

qwen-plus

輿情監控、客服評論分析、使用者反饋分級

ai_fix_grammar()

文法與用詞錯誤修正

qwen-plus

產生對外文案前自動潤色

ai_classify()

多類別/多標籤分類

qwen-plus

工單分類(投訴/諮詢/建議)、新聞主題識別、日誌類型標註

ai_extract()

從文本中提取預定義 STRUCT 結構欄位

qwen-plus

關鍵資訊抽取(甲方/金額/日期)、評論屬性解析(產品/問題/滿意度)

ai_similarity()

計算兩段文本的語義相似性(0.0–1.0)

qwen-plus

去重、召回匹配、問答對相似性評分、RAG 相似文檔檢索

ai_translate()

翻譯到指定語言

qwen-plus

端到端多語報表、跨境情境

ai_sql_optimize()

最佳化 SQL(重寫/注釋建議)

qwen-plus

自動給出謂詞下推、分桶/分區、Join 順序建議

ai_sql_hive_to_spark()

將 HiveQL 轉換為 Spark SQL 相容文法

qwen-plus

Hive 作業遷移、UDF 文法適配、視窗函數標準化

ai_embedding()

產生文本語義向量

text-embedding-v4

RAG 向量庫構建、語義聚類、相似性召回、特徵工程

通用函數:ai_query()

ai_query() 是 AI Function 提供的通用介面,用於執行自訂提示詞(Prompt)調用大模型,支援靈活接入內建模型或外部服務。它適用於標準任務型函數無法覆蓋的複雜推理、多輪指令、結構化輸出等進階情境。

  • 函數文法

    ai_query(prompt [, service_name] [, options])
  • 參數說明

    參數

    類型

    是否必填

    說明

    prompt

    STRING

    發送給模型的完整提示詞(Prompt),應包含上下文、指令和輸入資料。建議明確指定輸出格式以提升穩定性。

    service_name

    STRING

    指定要調用的模型服務名稱:
    • 若省略,則使用預設模型,預設為 qwen-plus

    • 通過模型服務註冊的模型服務名稱,請參見模型服務

    options

    STRING

    JSON 字串 形式提供額外調用參數,用於控制產生行為。支援調整的參數詳見Options參數說明

  • 傳回值類型:STRING。

  • 使用樣本

    • 不指定模型

      -- ai_query()不指定模型
      select
        ai_query ('請判斷下面這個評論是正向還是負向?\n 這個東西相當不行');

      返回結果:

      這個評論是負向的。 理由:“相當不行”是一種明顯的否定表達,語氣較強,表示對某事物的強烈不滿或負面評價。因此,整體情感傾向為負向。
    • 指定模型

      -- ai_query()指定‘my_qwen_service’模型
      select
        ai_query ('請判斷下面這個評論是正向還是負向?\n 這個東西相當不行', 'my_qwen_service')
      ;

      返回結果:

      <think> 嗯,使用者讓我判斷這個評論是正向還是負向。評論是“這個東西相當不行”。首先,我需要理解這句話的意思。使用者說的是“這個東西”不好,所以應該屬於負面評價。 接下來,我需要考慮常見的負面評價的特徵。通常,負面評價會包含明顯的負面詞彙,比如“不行”、“不好”、“糟糕”、“糟糕的”等。這些都是典型的負面情感詞彙。此外,使用者用了“相當”這個詞,可能是在強調程度,但主要還是在表達不滿。 然後,我要考慮使用者的潛在需求。使用者可能是在對某個產品或服務不滿意,需要判斷這個評論是否有效傳達了負面情緒。使用者可能希望瞭解評論的方向,或者是否需要進一步處理。 還要注意使用者可能的深層意圖。使用者可能是在尋找如何處理這類評論,或者是否應該進行改進。因此,回答時需要明確指出評論的負面性質,並解釋原因,這樣使用者能清楚理解。 最後,確保回答簡潔明了,直接指出評論是負向的,同時保持禮貌和專業。這樣使用者就能得到準確的資訊,沒有歧義。 </think> 這個評論是**負向**的。
    • 指定模型且指定參數

      -- ai_query()指定‘my_qwen_service’模型,且指定 “{"chat_template_kwargs": {"enable_thinking": false}}”參數,關閉思維鏈(thinking)過程
      select
        ai_query (
          '請判斷下面這個評論是正向還是負向?\n 這個東西相當不行',
          'my_qwen_service',
          '{"chat_template_kwargs": {"enable_thinking": false}}'
        );

      返回結果:

      這個評論是**負向**。

任務型函數

情感分析:ai_sentiment()

ai_sentiment() 是 AI Function 提供的情感分析專用函數,用於自動識別文本中的情緒傾向,並返回積極、消極、中性結果。適用於使用者評論分析、輿情監控等情境。

  • 函數文法

    ai_sentiment(text[, service_name] [, options])
  • 參數說明

    參數

    類型

    是否必填

    說明

    text

    STRING

    待分析的常值內容,建議為完整句子或段落。過短或無意義文本可能影響判斷準確性。

    service_name

    STRING

    指定要調用的模型服務名稱:
    • 若省略,則使用預設模型,預設為 qwen-plus

    • 通過模型服務註冊的模型服務名稱,請參見模型服務

    options

    STRING

    JSON 字串 形式提供額外調用參數,用於控制產生行為。支援調整的參數詳見Options參數說明

  • 傳回值類型:STRING 。

  • 使用樣本

    SELECT
      ai_sentiment ('I absolutely love this  phone! It’s amazing!');

    返回結果:

    positive

文法修正:ai_fix_grammar()

ai_fix_grammar() 是 AI Function 提供的文法錯誤修正專用函數,用於自動檢測並修本文本中的拼字錯誤、文法問題和表達不通順之處。適用於使用者產生內容清洗、客服對話最佳化、文檔預先處理等情境。

  • 函數文法

    ai_fix_grammar(text[, service_name] [, options])
  • 參數說明

    參數

    類型

    是否必填

    說明

    text

    STRING

    待修正的原始常值內容,建議為完整句子或段落。

    service_name

    STRING

    指定要調用的模型服務名稱:
    • 若省略,則使用預設模型,預設為 qwen-plus

    • 通過模型服務註冊的模型服務名稱,請參見模型服務

    options

    STRING

    JSON 字串 形式提供額外調用參數,用於控制產生行為。支援調整的參數詳見Options參數說明

  • 傳回值類型:STRING。

  • 使用樣本

    SELECT
      ai_fix_grammar ('He go to school yesterday and dont like math.');

    返回結果:

    He went to school yesterday and didn't like math.

文本分類:ai_classify()

ai_classify() 是 AI Function 提供的文本分類專用函數,可根據指定的標籤列表對輸入文本進行自動歸類。適用於新聞分類、工單路由、評論主題識別等多類別分類任務。

  • 函數文法

    ai_classify(text, labels[, service_name] [, options])
  • 參數說明

    參數

    類型

    是否必填

    說明

    text

    STRING

    待分類的常值內容,建議為完整語義單元。

    labels

    ARRAY

    候選分類標籤數組,如 array('科技', '體育', '娛樂')。標籤應具有區分性,避免語義重疊。

    service_name

    STRING

    指定要調用的模型服務名稱:
    • 若省略,則使用預設模型,預設為 qwen-plus

    • 通過模型服務註冊的模型服務名稱,請參見模型服務

    options

    STRING

    JSON 字串 形式提供額外調用參數,用於控制產生行為。支援調整的參數詳見Options參數說明

  • 傳回值類型:String。

  • 使用樣本

    SELECT ai_classify(
      '梅西在比賽中打入一記精彩自由球',
      array('科技', '體育', '娛樂', '財經')
    ) AS category;

    返回結果:

    體育

資訊抽取:ai_extract()

ai_extract() 是 AI Function 提供的資訊抽取專用函數,可從非結構化文本中提取預定義結構的欄位資訊。適用於使用者評論解析、合約關鍵資訊提取、日誌結構化等情境。

  • 函數文法

    ai_extract(text, labels[, service_name] [, options])
  • 參數說明

    參數

    類型

    是否必填

    說明

    text

    STRING

    待抽取資訊的源常值內容。

    labels

    ARRAY

    預定義的抽取欄位列表,如 Array('country', 'age', 'name')

    service_name

    STRING

    指定要調用的模型服務名稱:
    • 若省略,則使用預設模型,預設為 qwen-plus

    • 通過模型服務註冊的模型服務名稱,請參見模型服務

    options

    STRING

    JSON 字串 形式提供額外調用參數,用於控制產生行為。支援調整的參數詳見Options參數說明

  • 傳回值類型:JSON。

  • 使用樣本

    select
      ai_extract (
        'I am Alice,from china . I am 6 years old. Welcome!',
        Array('country', 'age', 'name')
      );

    返回結果:

    {"country": "china", "age": "6", "name": "Alice"}

相似性計算:ai_similarity()

ai_similarity() 是 AI Function 提供的語義相似性計算函數,用于衡量兩個文本之間的語義接近程度。基於向量餘弦相似性實現,適用於重複內容識別、推薦系統、問答匹配等情境。

  • 函數文法

    ai_similarity(text1, text2[, service_name] [, options])
  • 參數說明

    參數

    類型

    是否必填

    說明

    text1

    STRING

    第一個常值內容。

    text2

    STRING

    第二個常值內容。

    service_name

    STRING

    指定要調用的模型服務名稱:
    • 若省略,則使用預設模型,預設為 qwen-plus

    • 通過模型服務註冊的模型服務名稱,請參見模型服務

    options

    STRING

    JSON 字串 形式提供額外調用參數,用於控制產生行為。支援調整的參數詳見Options參數說明

  • 傳回值類型:DOUBLE。

  • 使用樣本

    SELECT
      ai_similarity (
        'I enjoy hiking in the mountains.',
        'I love walking through mountain trails.'
      );

    返回結果:

    0.85

翻譯:ai_translate()

ai_translate() 是 AI Function 提供的文本翻譯專用函數,支援將輸入文本自動翻譯為目標語言。適用於跨語言資料分析、國際化內容處理等情境。

  • 函數文法

    ai_translate(text, target_lang[, service_name] [, options])
  • 參數說明

    參數

    類型

    是否必填

    說明

    text

    STRING

    待翻譯的原始常值內容。

    target_lang

    STRING

    目標語言代碼,目前支援
    • zh:中文
    • en:英文
    • ja:日文
    • ko:韓文
    • ru:俄文
    • de:荷蘭文
    • es:西班牙文
    • fr:法文
    • it:意大利文








    service_name

    STRING

    指定要調用的模型服務名稱:
    • 若省略,則使用預設模型,預設為 qwen-plus

    • 通過模型服務註冊的模型服務名稱,請參見模型服務

    options

    STRING

    JSON 字串 形式提供額外調用參數,用於控制產生行為。支援調整的參數詳見Options參數說明

  • 傳回值類型:STRING。

  • 使用樣本

    select
      ai_translate ('你來自哪兒?', 'en')
    ;

    返回結果:

    Where are you from?

SQL語句最佳化:ai_sql_optimize()

ai_sql_optimize() 是 AI Function 提供的 SQL 最佳化建議產生函數,可自動分析輸入的 SQL 查詢語句,給出謂詞下推、分桶/分區、Join 順序建議。適用於查詢提速、資源節省和執行計畫改進等情境。

  • 函數文法

    ai_sql_optimize(sql_text[, service_name] [, options])
  • 參數說明

    參數

    類型

    是否必填

    說明

    sql_text

    STRING

    待最佳化的 SQL 查詢語句文本,建議包含完整的表結構上下文。

    service_name

    STRING

    指定要調用的模型服務名稱:
    • 若省略,則使用預設模型,預設為 qwen-plus

    • 通過模型服務註冊的模型服務名稱,請參見模型服務

    options

    STRING

    JSON 字串 形式提供額外調用參數,用於控制產生行為。支援調整的參數詳見Options參數說明

  • 傳回值類型:STRING 。

  • 使用樣本

    SELECT
      ai_sql_optimize (
        'SELECT * FROM logs WHERE date = "2025-01-01" AND user_id IN (SELECT id FROM users WHERE status = "active");'
      );

    返回結果:

    SELECT
      l.*
    FROM
      logs l
      JOIN users u ON l.user_id = u.id
    WHERE
      l.date = '2025-01-01'
      AND u.status = 'active'
    ;

Hive轉Spark SQL:ai_sql_hive_to_spark()

ai_sql_hive_to_spark() 是 AI Function 提供的 HiveQL 到 Spark SQL 的自動轉換函式,能夠識別 Hive 特有文法(如 LATERAL VIEWSORT BY 等),並將其轉換為相容 Spark SQL 的等價形式。適用於遷移 Hive 作業至 Spark 環境的情境。

  • 函數文法

    ai_sql_hive_to_spark(hql_text[, service_name] [, options])
  • 參數說明

    參數

    類型

    是否必填

    說明

    hql_text

    STRING

    輸入的 HiveQL 語句,支援複雜查詢、視窗函數等文法結構。

    service_name

    STRING

    指定要調用的模型服務名稱:
    • 若省略,則使用預設模型,預設為 qwen-plus

    • 通過模型服務註冊的模型服務名稱,請參見模型服務

    options

    STRING

    JSON 字串 形式提供額外調用參數,用於控制產生行為。支援調整的參數詳見Options參數說明

  • 傳回值類型:STRING。

  • 使用樣本

    SELECT
      ai_sql_hive_to_spark (
        '
      SELECT 
        user_id,
        nvl2(email, "verified", "anonymous") AS user_type,
        current_date() AS load_date
      FROM users
      WHERE login_time >= date_sub(current_date(), 7)
    '
      );

    返回結果:

    SELECT
      user_id,
      CASE
        WHEN email IS NOT NULL THEN "verified"
        ELSE "anonymous"
      END AS user_type,
      current_date() AS load_date
    FROM
      users
    WHERE
      login_time >= date_sub(current_date(), 7)

文字向量:ai_embedding()

ai_embedding() 是 AI Function 提供的文本向量化專用函數,可將文本轉換為高維語義向量(Embedding),用於語義檢索、聚類、相似性計算等下遊 AI 任務。

  • 函數文法

    ai_embedding(text[, dimension][, service_name] [, options])
  • 參數說明

    參數

    類型

    是否必填

    說明

    text

    STRING

    待向量化的常值內容,建議控制長度以避免截斷。

    dimension

    INT

    向量維度,支援設定2,048、1,536、1,024(預設)、768、512、256、128、64。

    service_name

    STRING

    指定要調用的模型服務名稱:
    • 若省略,則使用預設模型,預設為 text-embedding-v4

    • 通過模型服務註冊的模型服務名稱,請參見模型服務

    options

    STRING

    JSON 字串 形式提供額外調用參數,用於控制產生行為。支援調整的參數詳見Options參數說明

  • 傳回值類型:ARRAY<DOUBLE> 。

  • 使用樣本

    select ai_embedding ('This is a sentence', 256);

    返回結果:

    [-0.08807944506406784,0.041450440883636475,0.027626311406493187,-0.03082999959588051,-0.027538539841771126,0.030325308442115784,-0.0742553174495697,0.12841078639030457,-0.20047178864479065,0.2492731511592865,-0.07697625458240509,-0.0023876791819930077,0.01588677428662777,0.039453621953725815,0.035416096448898315,-0.044588297605514526,-0.025783095508813858,-0.09935817122459412,0.062230516225099564,0.06122113764286041,-0.019803611561655998,0.06359098851680756,0.08360305428504944,0.10120139271020889,-0.08680674433708191,-0.04792364314198494,0.012836690060794353,-0.06468813866376877,-0.08948379755020142,-0.00902956910431385,-0.17264799773693085,0.009084426797926426,-0.026200013235211372,0.009852433577179909,-0.02606835402548313,0.08351528644561768,-0.0015181854832917452,0.06165999919176102,-0.03504306450486183,0.019748752936720848,-0.04077020660042763,-0.047440893948078156,-0.04590488225221634,-0.017225300893187523,-0.03984859585762024,0.09795381873846054,-0.016599925234913826,-0.05077623948454857,-0.04487355798482895,-0.029623130336403847,-0.09058094769716263,0.027209393680095673,0.020637447014451027,-0.05981678143143654,0.07285095751285553,-0.012353942729532719,-0.02896483801305294,-0.12604093551635742,-0.060343414545059204,0.008782709948718548,0.0731581598520279,0.014306874945759773,-0.012321027927100658,0.003225629683583975,0.04382029175758362,-0.054506558924913406,-0.04298645257949829,0.011119645088911057,-0.013692469336092472,-0.06780405342578888,0.027604369446635246,0.11024193465709686,-0.06323989480733871,-0.04594876617193222,-0.037325143814086914,0.05415547266602516,-0.013747327029705048,0.07969719171524048,-0.11858029663562775,0.004797301255166531,-0.012759889476001263,0.006895606406033039,-0.07465028762817383,-0.04066048935055733,0.1428932100534439,0.037390973418951035,-0.012748917564749718,-0.07846838235855103,0.05415547266602516,-0.0560864619910717,-0.045422133058309555,0.04989851638674736,0.07842449843883514,0.0030226565431803465,0.031356632709503174,-0.04254759103059769,-0.13051731884479523,-0.01195896789431572,0.037654291838407516,-0.02290855348110199,-0.013494981452822685,-0.15605904161930084,-0.018443141132593155,-0.0013947556726634502,0.05305831879377365,0.06736519187688828,-0.09172198921442032,-0.05419935658574104,0.004629985429346561,0.09751495718955994,-0.010527183301746845,-0.08500741422176361,-0.06253772228956223,0.029228154569864273,9.778375970199704E-4,-0.057359158992767334,-0.0935652032494545,2.768597041722387E-4,-0.01802622340619564,0.028262659907341003,0.07342147827148438,-0.023676561191678047,-0.09769050031900406,-0.07697625458240509,0.05665697902441025,-0.15061716735363007,0.012310056015849113,-0.004180152900516987,0.087508924305439,-0.02492731623351574,-0.04120906442403793,-0.09865599870681763,0.055472053587436676,-0.03798343613743782,0.013308465480804443,-0.035591643303632736,0.028196832165122032,0.0260244682431221,-1.6988728020805866E-4,-0.02999616228044033,-0.023435188457369804,0.02786768600344658,0.06337155401706696,0.009775632992386818,0.04219650477170944,-0.057315271347761154,0.01100444421172142,-0.07895112782716751,-0.020341215655207634,0.013703440316021442,-0.0821109265089035,0.008376763202250004,-0.01687421277165413,-0.0050935326144099236,-0.025475893169641495,0.013286522589623928,0.05169785022735596,0.04568545147776604,0.08329585194587708,0.03730320185422897,0.06069450452923775,0.020670361816883087,0.04309616982936859,0.026353614404797554,-0.061352793127298355,-0.07236821204423904,-0.012847661040723324,-0.006835263222455978,-0.034428659826517105,0.009084426797926426,-0.011827308684587479,0.034560319036245346,-0.03793954849243164,0.05929014831781387,0.026419444009661674,0.03372648358345032,-0.021229909732937813,-0.015711231157183647,0.017587361857295036,-0.03291459009051323,0.05371661111712456,-0.02712162211537361,0.25787484645843506,-0.04318394139409065,-0.002493280218914151,-0.00854133628308773,-0.07478194683790207,0.024773715063929558,-0.009320314973592758,0.032475728541612625,0.05367272347211838,-0.031488291919231415,0.05275111645460129,0.11199737340211868,-0.05582314357161522,0.00895276851952076,-0.016259808093309402,0.16071097552776337,-0.04412749409675598,-0.04083603248000145,-0.04465412721037865,-0.09856822341680527,-0.08979099988937378,0.02593669667840004,0.11910692602396011,-0.027253279462456703,0.05915848910808563,-0.11910692602396011,0.03693016991019249,-0.07144660502672195,-0.04480772837996483,-0.04586099460721016,-0.04274507984519005,-0.019430579617619514,-0.00844807829707861,0.027604369446635246,-0.022579409182071686,0.019397664815187454,0.035503871738910675,0.07899501174688339,-0.06657524406909943,0.02505897358059883,-0.023786276578903198,0.0518295057117939,0.03671073913574219,0.05678863823413849,0.1004992127418518,0.008546821773052216,0.03872950002551079,0.0085248788818717,0.08641176670789719,-0.006901092361658812,-0.13771463930606842,-0.06767239421606064,-0.07789786159992218,0.06122113764286041,-0.02087882161140442,-0.031246917322278023,0.022623294964432716,-0.006160513963550329,0.09268748760223389,0.08465632051229477,-0.1036590114235878,-0.09900708496570587,0.008299962617456913,0.06367875635623932,-0.004986560437828302,-0.0022011632099747658,0.02088979259133339,-0.016139119863510132,-0.07934610545635223,0.029754789546132088,-0.04880136623978615,0.05595480278134346,-0.01239782851189375,0.02087882161140442]

Options參數說明

本文僅說明Serverless Spark內建模型服務是否支援下述參數,如果使用其他外部模型服務,請參考所使用模型官方文檔。

參數

說明

qwen-plus

text-embedding-v4

temperature

採樣溫度,控制模型產生文本的多樣性。temperature越高,產生的文本更多樣,反之,產生的文本更確定。取值範圍:[0, 2)。

top_p

核採樣的機率閾值,控制模型產生文本的多樣性。top_p越高,產生的文本更多樣。取值範圍:(0,1.0]。

top_k

產生過程中採樣候選集的大小。取值越大,產生的隨機性越高;取值越小,產生的確定性越高。取值需要大於或等於0。

presence_penalty

控制模型產生文本時的內容重複度。取值範圍:[-2.0, 2.0]。正值降低重複度,負值增加重複度。

seed

隨機數種子。用於確保在相同輸入和參數下產生結果可複現。取值範圍:[0,231-1]。

stop

用於指定停止詞。當模型產生的文本中出現stop指定的字串或token_id時,產生將立即終止。

response_format

返回內容的格式。可選值:
{"type": "text"}:輸出文字回複;
{"type": "json_object"}:輸出標準格式的JSON字串;
{"type": "json_schema","json_schema": {...} }:輸出指定格式的JSON字串。


encoding_format

指定向量編碼格式,如 floatbase64 等。

max_input_tokens

限制最大輸入 token 數。超出時會自動截斷輸入。

max_tokens

用於限制模型輸出的最大 Token 數。若產生內容超過此值,產生將提前停止。適用於需控制輸出長度的情境。

enable_thinking

使用混合思考模型時,是否開啟思考模式。

thinking_budget

思考過程的最大長度。

logprobs

是否返回輸出 Token 的對數機率。可選值:
true:返回;
false:不返回。

top_logprobs

指定在每一步產生時,返回模型最大機率的候選 Token 個數。取值範圍:[0,5]。僅當 logprobstrue 時生效。

search_options

連網搜尋的策略。僅當 enable_searchtrue 時生效。

chat_template_kwargs

傳遞給聊天模板的額外參數,用於控制模板渲染行為(如開啟特定能力標籤等)。

parameters

DashScope 原生介面中的通用參數封裝對象,上述參數在原生介面中放在此欄位內傳遞。

常見問題

Q: 如何關閉 ai_query() 函數中的“think”過程(如思維鏈/推理步驟)?
A: ai_query() 支援通過參數控制模型輸出行為。若需關閉思維鏈(thinking)過程,僅返回最終結果,可在調用時傳入如下配置{"chat_template_kwargs": {"enable_thinking": false}}

說明
  • enable_thinking參數僅適用於 Qwen 系列模型。對於其他模型,關閉思維鏈(thinking)的參數,需要根據具體模型的參數進行配置。

  • 支援通過temperaturetop_k等參數調節模型輸出的隨機性與多樣性。具體支援的參數請參考所使用模型的官方文檔。