跳转至

图片输入

把图片和问题放在同一条消息中,让支持视觉的模型描述或分析图片。

读取本地图片

完成模型配置,选择支持图片输入的模型,准备一张 PNG 或 JPEG 图片:

python examples/runtime/multimodal.py /你的路径/diagram.png
import argparse
import asyncio
import base64
import mimetypes
import os
from pathlib import Path

import bumblehive


async def main(path: Path) -> None:
    image = base64.b64encode(path.read_bytes()).decode("ascii")
    mime = mimetypes.guess_type(path.name)[0] or "image/png"
    config = bumblehive.RuntimeArguments(
        model=os.environ["BUMBLEHIVE_MODEL"],
        api_key=os.environ["BUMBLEHIVE_API_KEY"],
        base_url=os.environ["BUMBLEHIVE_BASE_URL"],
        skill_names=[],
        tool_names=[],
    )
    async with bumblehive.from_config(config) as runtime:
        result = await runtime.run([{
            "role": "user",
            "content": [
                {"type": "text", "text": "描述这张图片。"},
                {"type": "image_url", "image_url": {
                    "url": f"data:{mime};base64,{image}",
                }},
            ],
        }])
        print(result.error.message if result.error else result.final_content)


if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("image", type=Path)
    asyncio.run(main(parser.parse_args().image))

代码将图片编码为 Base64 Data URL,与文字一起放入 content。不需要给 Agent 开放文件工具。

运行后会打印模型对图片的描述。支持的格式和图片大小以模型服务的要求为准。

使用远程图片

将 image_url.url 换成模型服务可以访问的 HTTPS 图片地址,即可省略本地文件读取和 Base64 编码:

{"type": "image_url", "image_url": {"url": image_url}}

消息格式参考