You need to enable JavaScript to run this app.
AI 数据湖服务

AI 数据湖服务

复制全文
视觉理解
视觉内容理解(豆包系列模型)
复制全文
视觉内容理解(豆包系列模型)

算子介绍

描述

大模型多模态理解处理器
使用火山方舟的大模型对图片、视频或文本进行分析理解,并返回文本输出。

核心功能

  • 多模态场景支持:支持图片、视频、文本的任意组合输入,算子会自动构建符合多模态模型规范的 message 结构。
  • 丰富的输入源:支持 http/https/tos/s3 协议的 URL、Base64 编码及原始二进制数据。TOS/S3 地址会自动进行预签名。
  • 灵活的数据格式:图片、视频、文本列均支持 string(单个)或 list(多个)形式传入。

输入输出规范

  • 输入格式
    • images (图片):stringlist 类型。
    • videos (视频):stringlist 类型。
    • texts (文本):stringlist 类型,作为用户提示词。
  • 输出格式
    • 默认模式:返回 string 类型的模型生成结果。
    • 诊断模式:当设置环境变量 LAS_LLM_FINISH_REASON_CHECK=true 时,返回 struct 类型,包含:
      • llm_result:模型生成的文本结果。
      • finish_reason:模型输出终止的原因,取值范围包括 stop(正常结束)、length(达到最大长度)、content_filter(内容过滤)。

版本兼容性说明

该算子(ArkLLMVisionUnderstanding)在 Daft 0.6.5(及其以下版本),使用方式与 0.6.14 版本(及其以上版本)不相同。

  • 在 Daft 0.6.14 及其以上版本中,输入时可以指定 images、texts、 videos 字段,分别对应模型的图片、文本、视频输入,支持同时输入。下面是一个示例:
df = df.with_column(

        "llm_result",

        las_udf(

            ArkLLMVisionUnderstanding,

            construct_args={

                "model": "doubao-1.5-vision-pro",

                "system_text": "你是一个专业的视频理解助手,能够分析视频中的内容并提供详细的描述。",

            },

        )(videos=col("video_urls"), texts=col("prompts")),

    )
  • 在 Daft 0.6.5 及其以下版本中,输入时只支持传入视频或图片,不支持同时传入视频和图片,通过multimodal_type指定输入类型,multimodal_type支持传入 "video" 和 "image"、"text"。同时也支持通过指定prompt传入文本信息。下面是一个示例:
df = df.with_column(

        "llm_result",

        las_udf(

            ArkLLMVisionUnderstanding,

            construct_args={

                "model": "doubao-1.5-vision-pro",

                "multimodal_type": "video",

                "prompt": "视频里有什么?",

                "inference_type": "online",

            },

        )(col("videos")),

    )

Daft 调用

算子参数

输入

输入列名

说明

images

传入待处理的图片数据。支持传入单张图片(string)或多张图片(list),数据来源由参数 source_type 控制:url 模式支持 http/https/tos/s3 等协议地址,其中 tos/s3 会自动转换为预签名 URL;base64 模式使用图片的 Base64 编码;binary 模式会将二进制数据自动转换为 Base64 编码。

videos

传入待处理的视频数据。支持传入单条视频(string)或多条视频(list),数据来源及处理方式与 images 列相同。

texts

传入用户文本提示词。支持传入单条文本(string)或多条文本(list)。

输出

默认情况下,返回字段类型为 string,内容为模型输出结果。
当环境变量 LAS_LLM_FINISH_REASON_CHECK=true 时,返回字段类型为 struct,包含以下字段:

  • llm_result: 模型输出结果
  • finish_reason: 模型输出结束原因,常见取值包括 stop(正常终止)、length(达到长度上限)、content_filter(命中内容过滤策略)。

参数

如参数没有默认值,则为必填参数

参数名称

类型

默认值

描述

model

str

(必填) 模型名称。例如 doubao-1.5-vision-pro

version

str

模型版本。例如 250115

inference_type

str

batch

推理类型,支持在线推理和批量推理。可选值:onlinebatch

system_text

str

系统提示内容,以 system 角色作为模型的输入,用于统一约束模型行为。

system_image_url

str

系统图片 URL,用于指导模型的行为。

system_video_url

str

系统视频 URL,用于指导模型的行为。

image_format

str

jpeg

图片编码格式。支持 JPEGPNGWEBPGIF 等常见格式。

image_url_detail

str

图片质量,取值范围 highlowauto

video_format

str

mp4

视频编码格式。支持 MP4AVIMOV

video_fps

float

1.0

视频帧率,取值范围 [0.2, 5]

source_type

str

url

媒体数据来源格式。可选值:binarybase64url

max_tokens

int

模型回复最大长度(单位 token)。

max_completion_tokens

int

模型生成的 token 数量上限。

stop

list[str]

停止词列表,模型遇到指定字符串时将停止生成。

frequency_penalty

float

0

频率惩罚系数,取值范围 [-2.0, 2.0]

presence_penalty

float

0

存在惩罚系数,取值范围 [-2.0, 2.0]

temperature

float

1.0

采样温度,取值范围 [0, 2]

top_p

float

0.7

核采样概率阈值。

logit_bias

dict

调整指定 token 在输出中出现的概率。

tools

list

待调用工具的列表。

llm_config

dict

其他透传给模型的自定义参数。

request_timeout

int

1200

单次请求的超时时间(秒)。

max_concurrency

int

100

每个进程的最大并发数。

调用示例

下面的代码展示了如何使用 ArkLLMVisionUnderstanding 算子对视频进行理解。

from __future__ import annotations
import os
import daft
from daft import col
from daft.las.functions.ark_llm.ark_llm_vision_understanding import ArkLLMVisionUnderstanding
from daft.las.functions.udf import las_udf

if os.getenv("DAFT_RUNNER", "native") == "ray":
    import logging

    import ray

    def configure_logging():
        logging.basicConfig(
            level=logging.INFO,
            format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
            datefmt="%Y-%m-%d %H:%M:%S.%s".format(),
        )
        logging.getLogger("tracing.span").setLevel(logging.WARNING)
        logging.getLogger("daft_io.stats").setLevel(logging.WARNING)
        logging.getLogger("DaftStatisticsManager").setLevel(logging.WARNING)
        logging.getLogger("DaftFlotillaScheduler").setLevel(logging.WARNING)
        logging.getLogger("DaftFlotillaDispatcher").setLevel(logging.WARNING)

    ray.init(dashboard_host="0.0.0.0", runtime_env={"worker_process_setup_hook": configure_logging})
    daft.context.set_runner_ray()

daft.set_execution_config(min_cpu_per_task=0)
  
if __name__ == "__main__":
    # 需配置环境变量 LAS_API_KEY : LAS_API_KEY 通过在 LAS 服务页面上创建获取
    tos_dir_url = os.getenv("TOS_DIR_URL", "las-cn-beijing-public-online.tos-cn-beijing.volces.com")
    samples = {
        "videos": [
            f"https://{tos_dir_url}/public/shared_video_dataset/eating_56.mp4",
        ],
        "prompts": ["视频里有什么?"],
    }
    
    df = daft.from_pydict(samples)
    df = df.with_column(
        "llm_result",
        las_udf(
            ArkLLMVisionUnderstanding,
            construct_args={
                "model": "doubao-1.5-vision-pro",
                "system_text": "你是一个专业的视频理解助手,能够分析视频中的内容并提供详细的描述。",
                "inference_type": "online",
            },
        )(videos=col("videos"), texts=col("prompts")),
    )
    df.show()

    # 输出 (每次大模型推理结果可能不同)
    # ╭────────────────────────────────┬────────────────┬─────────────────────────────────────────────────────────────╮
    # │ videos                         ┆ prompts        ┆ llm_result                                                  │
    # │ ---                            ┆ ---            ┆ ---                                                         │
    # │ String                         ┆ String         ┆ String                                                      │
    # ╞════════════════════════════════╪════════════════╪═════════════════════════════════════════════════════════════╡
    # │ https://las-public-data-qa.to… ┆ 视频里有什么? ┆ 视频里展示了一个卡通风格的场景,主要元素是一个两层的红色蛋… │
    # ╰────────────────────────────────┴────────────────┴─────────────────────────────────────────────────────────────╯
最近更新时间:2026.01.08 19:14:54
这个页面对您有帮助吗?
有用
有用
无用
无用