利用 pandas 自定义 AI 函数

AI 函数设计为开箱即用,默认配置基础模型和设置。 但是,想要更灵活的配置的用户可以使用一些额外的代码行来自定义其解决方案。

重要

注释

  • 本文介绍如何使用 pandas 自定义 AI 函数。 若要使用 PySpark 自定义 AI 函数,请参阅 本文
  • 请参阅 本概述文章中的所有 AI 函数。

配置

默认情况下,AI 函数由 Fabric 中的内置 AI 终结点提供支持。 大型语言模型(LLM)的设置在 aifunc.Conf 类中是全局配置的。 如果在 pandas 中使用 AI 函数,则可以使用该 aifunc.Conf 类修改其中部分或全部设置:

参数 Description 违约
concurrency
可选
一个 int ,指定要与对模型的异步请求并行处理的最大行数。 较高的值可以加快处理时间(如果容量可以容纳)。 它可以设置为 1,000。 200
embedding_deployment_name
可选
一个 字符串 ,指定支持 AI 函数的嵌入模型部署的名称。 text-embedding-ada-002
model_deployment_name
可选
一个 字符串 ,指定支持 AI 函数的语言模型部署的名称。 可以从 Fabric 支持的模型中进行选择。 gpt-4.1-mini
reasoning_effort
可选
用于 gpt-5 系列模型来确定它们应使用的推理令牌数量。 可以设置为 openai.NOT_GIVEN 或字符串值“最小”、“低”、“中”或“高”。 openai.NOT_GIVEN
seed
可选
一个 int ,指定要用于基础模型的响应的种子。 默认行为会为每行随机选择一个种子值。 选择常量值可提高试验的可重现性。 openai.NOT_GIVEN
temperature
可选
一个浮点数,介于0.01.0之间,表示基础模型的温度。 较高的温度会增加模型的输出的随机性或创造力。 0.0
timeout
可选
一个 int ,指定 AI 函数引发超时错误之前的秒数。 默认情况下,没有超时。 None
top_p
可选
一个 浮点数 介于 0 和 1 之间。 较低的值(例如 0.1)将模型限制为仅考虑最可能令牌,从而使输出更具确定性。 更高的值(例如,0.9)允许通过包括更广泛的令牌,实现更多样化和创造性的输出。 openai.NOT_GIVEN
use_progress_bar
可选
显示 AI 函数在输入数据上的处理进度的 tqdm 进度条。 在引擎盖下使用 tqdm。 布尔值,可以设置为 TrueFalse True
verbosity
可选
gpt-5 系列模型用于控制输出长度。 可以设置为 openai.NOT_GIVEN 或字符串值为 “low”、“medium” 或 “high”。 openai.NOT_GIVEN

小窍门

  • 如果模型部署容量可以容纳更多请求,则设置更高的 并发 值可以加快处理时间。

下面的代码示例演示如何全局重写 aifunc.Conf 设置,以便它们适用于会话中的所有 AI 函数调用:

# This code uses AI. Always review output for mistakes.

aifunc.default_conf.temperature = 0.5 # Default: 0.0
aifunc.default_conf.concurrency = 300 # Default: 200

df = pd.DataFrame([
        "Hello! How are you doing today?", 
        "Tell me what you'd like to know, and I'll do my best to help.", 
        "The only thing we have to fear is fear itself.",
    ], columns=["text"])

df["translations"] = df["text"].ai.translate("spanish")
df["sentiment"] = df["text"].ai.analyze_sentiment()
display(df)

还可以为每个单独的函数调用自定义这些设置。 每个 AI 函数接受可选 conf 参数。 下面的代码示例通过自定义温度值,仅针对aifunc函数调用修改ai.translate默认设置。 (调用 ai.analyze_sentiment 仍使用默认值,因为未设置任何自定义值)。

# This code uses AI. Always review output for mistakes. 

from synapse.ml.aifunc import Conf

df = pd.DataFrame([
        "Hello! How are you doing today?", 
        "Tell me what you'd like to know, and I'll do my best to help.", 
        "The only thing we have to fear is fear itself.",
    ], columns=["text"])

df["translations"] = df["text"].ai.translate("spanish", conf=Conf(temperature=0.5))
df["sentiment"] = df["text"].ai.analyze_sentiment()
display(df)

下面的代码示例演示如何为所有函数配置 gpt-5 和其他推理模型。

aifunc.default_conf.model_deployment_name = "gpt-5"
aifunc.default_conf.temperature = 1  # gpt-5 only accepts default value of temperature
aifunc.default_conf.top_p = 1  # gpt-5 only accepts default value of top_p
aifunc.default_conf.verbosity = "low"
aifunc.default_conf.reasoning_effort = "low"

定制模型

若要使用非默认 AI 模型,可以选择 Fabric 支持的另一个模型或配置自定义模型终结点。

选择另一个受支持的大型语言模型

选择 Fabric 支持的一个模型,使用 model_deployment_name 参数进行配置。 可以通过以下两种方式之一进行配置:

  • 全局的 aifunc.Conf 类中。 示例:

    aifunc.default_conf.model_deployment_name = "<model deployment name>"
    
  • 在每个 AI 函数调用中单独调用:

    df["translations"] = df["text"].ai.translate(
        "spanish",
        conf=Conf(model_deployment_name="<model deployment name>"),
    )
    

选择另一个受支持的嵌入模型

选择 Fabric 支持的一个模型,使用 embedding_deployment_name 参数进行配置。 可以通过以下两种方式之一进行配置:

  • 全局的 aifunc.Conf 类中。 示例:

    aifunc.default_conf.embedding_deployment_name = "<embedding deployment name>"
    
  • 在每个 AI 函数调用中单独执行。 示例:

    df["embedding"] = df["text"].ai.embed(
        conf=Conf(embedding_deployment_name="<embbedding deployment name>"),
    )
    

配置自定义模型终结点

默认情况下,AI 函数使用 Fabric LLM 终结点 API 进行统一计费和轻松设置。 您可以选择通过使用您的端点和密钥来设置 Azure OpenAI 或与 OpenAI 兼容的客户端,以使用您自己的模型端点。 以下示例演示如何使用 Microsoft AI Foundry(前称 Azure OpenAI)资源,示例代码如 aifunc.setup 所示。

from openai import AzureOpenAI

# Example to create client for Microsoft AI Foundry OpenAI models
client = AzureOpenAI(
    azure_endpoint="https://<ai-foundry-resource>.openai.azure.com/",
    api_key="<API_KEY>",
    api_version=aifunc.session.api_version,  # Default "2025-04-01-preview"
    max_retries=aifunc.session.max_retries,  # Default: sys.maxsize ~= 9e18
)
aifunc.setup(client)  # Set the client for all functions.

小窍门

  • 可以将自定义 AI Foundry 资源配置为使用 OpenAI 以外的模型。

以下代码示例使用占位符值来演示如何使用自定义Microsoft AI Foundry 资源替代内置 Fabric AI 终结点,以使用 OpenAI 以外的模型:

重要

  • 对 Microsoft AI Foundry 模型的支持仅限于支持 Chat Completions API 和接受 response_format JSON 架构参数的模型
  • 输出可能因所选 AI 模型的行为而异。 请谨慎探索其他模型的功能
  • 基于嵌入的 AI 函数 ai.embedai.similarity 在使用 AI Foundry 资源时不受支持
from openai import OpenAI

# Example to create client for Azure AI Foundry models
client = OpenAI(
    base_url="https://<ai-foundry-resource>.services.ai.azure.com/openai/v1/",
    api_key="<API_KEY>",
    max_retries=aifunc.session.max_retries,  # Default: sys.maxsize ~= 9e18
)
aifunc.setup(client)  # Set the client for all functions.

aifunc.default_conf.model_deployment_name = "grok-4-fast-non-reasoning"