大模型多模态理解处理器
使用火山方舟的大模型对图片、视频或文本进行分析理解,并返回文本输出。
http/https/tos/s3 协议的 URL、Base64 编码及原始二进制数据。TOS/S3 地址会自动进行预签名。string(单个)或 list(多个)形式传入。images (图片):string 或 list 类型。videos (视频):string 或 list 类型。texts (文本):string 或 list 类型,作为用户提示词。string 类型的模型生成结果。LAS_LLM_FINISH_REASON_CHECK=true 时,返回 struct 类型,包含:
llm_result:模型生成的文本结果。finish_reason:模型输出终止的原因,取值范围包括 stop(正常结束)、length(达到最大长度)、content_filter(内容过滤)。该算子(ArkLLMVisionUnderstanding)在 Daft 0.6.5(及其以下版本),使用方式与 0.6.14 版本(及其以上版本)不相同。
df = df.with_column( "llm_result", las_udf( ArkLLMVisionUnderstanding, construct_args={ "model": "doubao-1.5-vision-pro-32k", "system_text": "你是一个专业的视频理解助手,能够分析视频中的内容并提供详细的描述。", "inference_type": "online", }, )(videos=col("video_urls"), texts=col("prompts")), )
df = df.with_column( "llm_result", las_udf( ArkLLMVisionUnderstanding, construct_args={ "model": "doubao-1.5-vision-pro-32k", "multimodal_type": "video", "prompt": "视频里有什么?", "inference_type": "online", }, )(col("videos")), )
输入列名 | 说明 |
|---|---|
images | 传入待处理的图片数据。支持传入单张图片(string)或多张图片(list),数据来源由参数 |
videos | 传入待处理的视频数据。支持传入单条视频(string)或多条视频(list),数据来源及处理方式与 |
texts | 传入用户文本提示词。支持传入单条文本(string)或多条文本(list)。 |
默认情况下,返回字段类型为 string,内容为模型输出结果。
当环境变量 LAS_LLM_FINISH_REASON_CHECK=true 时,返回字段类型为 struct,包含以下字段:
llm_result: 模型输出结果finish_reason: 模型输出结束原因,常见取值包括 stop(正常终止)、length(达到长度上限)、content_filter(命中内容过滤策略)。如参数没有默认值,则为必填参数
参数名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
model | str | (必填) 模型名称。固定为 | |
version | str | 模型版本。例如 | |
inference_type | str | batch | 推理类型,支持在线推理和批量推理。可选值: |
system_text | str | 系统提示内容,以 system 角色作为模型的输入,用于统一约束模型行为。 | |
system_image_url | str | 系统图片 URL,用于指导模型的行为。 | |
system_video_url | str | 系统视频 URL,用于指导模型的行为。 | |
image_format | str | jpeg | 图片编码格式。支持 |
image_url_detail | str | 图片质量,取值范围 | |
video_format | str | mp4 | 视频编码格式。支持 |
video_fps | float | 1.0 | 视频帧率,取值范围 |
source_type | str | url | 媒体数据来源格式。可选值: |
max_tokens | int | 模型回复最大长度(单位 token)。 | |
max_completion_tokens | int | 模型生成的 token 数量上限。 | |
stop | list[str] | 停止词列表,模型遇到指定字符串时将停止生成。 | |
frequency_penalty | float | 0 | 频率惩罚系数,取值范围 |
presence_penalty | float | 0 | 存在惩罚系数,取值范围 |
temperature | float | 1.0 | 采样温度,取值范围 |
top_p | float | 0.7 | 核采样概率阈值。 |
logit_bias | dict | 调整指定 token 在输出中出现的概率。 | |
tools | list | 待调用工具的列表。 | |
llm_config | dict | 其他透传给模型的自定义参数。 | |
request_timeout | int | 1200 | 单次请求的超时时间(秒)。 |
max_concurrency | int | 100 | 每个进程的最大并发数。 |
下面的代码展示了如何使用 ArkLLMVisionUnderstanding.Doubao-1.5-vision-pro-32k 算子对图片进行理解。
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 = { "image_urls": [ f"https://{tos_dir_url}/public/shared_image_dataset/cat_ip_adapter.jpeg" ], "prompts": ["图片里有什么?"], } df = daft.from_pydict(samples) df = df.with_column( "llm_result", las_udf( ArkLLMVisionUnderstanding, construct_args={ "model": "doubao-1.5-vision-pro-32k", "system_text": "你是一个专业的图片理解助手,能够分析图片中的内容并提供详细的描述。", "inference_type": "online", # 该模型仅支持在线推理 }, )(images=col("image_urls"), texts=col("prompts")), ) df.show() # 输出 (每次大模型推理结果可能不同) # ╭────────────────────────────────┬────────────────┬─────────────────────────────────────────────────────────────╮ # │ image_urls ┆ prompts ┆ llm_result │ # │ --- ┆ --- ┆ --- │ # │ String ┆ String ┆ String │ # ╞════════════════════════════════╪════════════════╪═════════════════════════════════════════════════════════════╡ # │ https://las-public-data-qa.to… ┆ 图片里有什么? ┆ 画面中是一只拟人化的猫,毛色为米白色与浅棕色相间,拥有一双… │ # ╰────────────────────────────────┴────────────────┴─────────────────────────────────────────────────────────────╯