maxframe.learn.contrib.llm.multi_modal.generate#
- maxframe.learn.contrib.llm.multi_modal.generate(data, model: MultiModalGenLLM, messages=None, prompt_template=None, simple_output: bool = False, params: Dict[str, Any] | None = None, **kw)[源代码]#
基于 MaxFrame 数据,使用多模态大语言模型生成文本。
- 参数:
data (DataFrame or Series) -- 用于按行渲染请求的输入数据。模板占位符按列名引用,例如
"{image_url}"。model (MultiModalGenLLM) -- 多模态生成模型实例。
messages (list of dict, optional) -- 聊天消息模板。这是
prompt_template的别名;当两个参数都传入时,messages优先生效。prompt_template (str or list of dict, optional) -- 用于构建每个请求的提示模板。list 形式应遵循 chat message 结构,其中 message 的
content可以包含纯文本、provider 兼容的 dict 或ContentPart值。simple_output (bool, default False) -- 当模型 executor 支持时,是否直接返回生成文本,而不是原始 provider 响应。
params (dict, optional) -- 额外生成参数,例如 temperature 或 max tokens。
- 返回:
包含
response和success列的 DataFrame。失败请求会将错误信息写入response。- 返回类型:
示例
使用文本和图片 URL 占位符构建 chat messages:
>>> from maxframe.learn.contrib.llm import ContentPart, ImageContentType >>> from maxframe.learn.contrib.llm.models.dashscope import DashScopeMultiModalLLM >>> import maxframe.dataframe as md >>> >>> df = md.DataFrame({"image_url": ["https://example.com/cat.png"]}) >>> model = DashScopeMultiModalLLM( ... name="qwen-vl-max", ... api_key_resource="<api-key-resource-name>", ... ) >>> messages = [ ... { ... "role": "user", ... "content": [ ... ContentPart.text("Analyze this image."), ... ContentPart.image( ... data=df.image_url, ... type=ImageContentType.IMAGE_URL, ... ), ... ], ... } ... ] >>> result = model.generate(df, messages=messages)
当图片无法公开访问时,使用带显式 storage options 的 OSS 对象 URL:
>>> storage_options = { ... "access_key_id": "<access-key-id>", ... "access_key_secret": "<access-key-secret>", ... } >>> df = md.DataFrame({"image_url": ["oss://endpoint/bucket/path/cat.png"]}) >>> messages = [ ... { ... "role": "user", ... "content": [ ... ContentPart.text("Analyze this OSS image."), ... ContentPart.image( ... data=df.image_url, ... type=ImageContentType.IMAGE_URL, ... storage_options=storage_options, ... ), ... ], ... } ... ] >>> result = model.generate(df, messages=messages)
备注
ContentPart.image支持IMAGE_URL、BINARY和BASE64图片内容。BINARY和BASE64输入必须包含mime_type。