配置并调用 AI 推理模型

更新时间:
复制为 MD 格式

本文介绍如何在Flink数据摄入作业中使用内置的 AI 推理模型,实现对数据流的实时智能处理(如文本摘要生成、向量化等)。

前提条件

  • 实时计算引擎:VVR 11.6 及更高版本

  • 依赖包:将 flink-cdc-pipeline-model JAR 包作为作业附加依赖上传。从 Maven Central 下载。

工作原理

AI 推理模型的集成分为两个步骤:

  1. 定义模型:在 YAML 作业草稿的 pipeline 模块中定义模型列表

  2. 调用模型:在 transform 模块的 projectionfilter 字段中通过函数调用方式使用模型

每个模型需要指定唯一名称,该名称将作为函数名在数据转换中调用。

配置并调用模型

步骤一:在 pipeline 模块中定义模型

在 YAML 作业草稿的 pipeline 模块中添加 model 列表。每个模型条目包含以下信息:

  • 模型名称(model-name

  • 实现类(class-name

  • 模型提供商的连接参数

pipeline:
  model:
    - model-name: CHAT
      class-name: OpenAIChatModel
      openai.model: gpt-4o-mini
      openai.host: https://xxxx
      openai.apikey: abcd1234
      openai.chat.prompt: please summary this
    - model-name: GET_EMBEDDING
      class-name: OpenAIEmbeddingModel
      openai.model: text-embedding-3-small
      openai.host: https://xxxx
      openai.apikey: abcd1234

通用参数(所有模型必填):

参数

类型

是否必填

说明

model-name

STRING

必填

模型的唯一标识符,可自定义,用于在 projectionfilter 表达式中调用该模型。

class-name

STRING

必填

模型实现类的名称。可选值:OpenAIChatModelOpenAIEmbeddingModel。详情参见支持的模型

步骤二:在 transform 模块中调用模型

定义模型后,可以在 transform 模块中按名称调用。模型调用作为内置函数用于 projection(数据投影)和 filter(数据过滤)表达式。

完整配置示例

以下示例展示了如何定义两个模型,并在同一个 transform 模块中同时调用 Embedding 模型和 Chat 模型:

pipeline:
  model:
    - model-name: CHAT
      class-name: OpenAIChatModel
      openai.model: gpt-4o-mini
      openai.host: https://xxxx
      openai.apikey: abcd1234
      openai.chat.prompt: please summarize this
    - model-name: GET_EMBEDDING
      class-name: OpenAIEmbeddingModel
      openai.model: text-embedding-3-small
      openai.host: https://xxxx
      openai.apikey: abcd1234

transform:
  - source-table: db.\.*
    projection: "*, inc(inc(inc(id))) as inc_id, GET_EMBEDDING(page) as emb"
    filter: CHAT(page) = 'OK'

调用说明

  • GET_EMBEDDING(page):将 page 列的数据传入 Embedding 模型,返回 ARRAY<FLOAT> 类型的向量,存入 emb 列发送给下游。下游表 schema 中的 emb 列类型需声明为 ARRAY<FLOAT>

  • CHAT(page):将 page 列的数据传入 Chat 模型,根据模型返回的 STRING 类型结果进行 filter 过滤。

支持的模型

模型类型与输出

模型类

适用场景

输出类型

OpenAIChatModel

文本摘要、翻译、问答等文本生成任务

STRING

OpenAIEmbeddingModel

文本向量化、构建向量库、语义相似度计算

ARRAY<FLOAT>

OpenAIChatModel 参数

OpenAIChatModel 用于调用 OpenAI 的 Chat 模型(如 GPT 系列),适用于文本生成场景。

参数

类型

是否必填

说明

openai.model

STRING

必填

要调用的模型名称。可选值:gpt-4o-minigpt-4ogpt-4-32kgpt-3.5-turbo

openai.host

STRING

必填

模型服务地址。示例:http://langchain4j.dev/demo/openai/v1

openai.apikey

STRING

必填

API Key,用于模型服务验证。

openai.chat.prompt

STRING

可选

系统提示词 (system prompt),每次请求时附带。

OpenAIEmbeddingModel 参数

OpenAIEmbeddingModel 用于调用 OpenAI 的 Embedding 模型,将文本转换为向量。

参数

类型

是否必填

说明

openai.model

STRING

必填

要调用的模型名称。可选值:text-embedding-3-smalltext-embedding-3-largetext-embedding-ada-002

openai.host

STRING

必填

模型服务地址。示例:http://langchain4j.dev/demo/openai/v1

openai.apikey

STRING

必填

API Key,用于模型服务验证。