agentchat.contrib.img_utils
get_pil_image
def get_pil_image(image_file: Union[str, Image.Image]) -> Image.Image
从文件加载图像并返回一个 PIL 图像对象。
参数:
image_file
str 或 Image - 图像文件的文件名、URL、URI 或 base64 字符串。
返回值:
Image.Image
- PIL 图像对象。
get_image_data
def get_image_data(image_file: Union[str, Image.Image], use_b64=True) -> bytes
加载图像并将其数据以原始字节或 base64 编码格式返回。
此函数首先使用 get_pil_image
函数从指定的文件、URL 或 base64 字符串加载图像。然后将此图像以 PNG 格式保存在内存中,并检索其二进制内容。根据 use_b64
标志,此二进制内容可以直接返回或作为 base64 编码的字符串返回。
参数:
image_file
str 或 Image - 图像文件的路径、图像的 URL 或图像的 base64 编码字符串。use_b64
bool - 如果为 True,则函数返回图像数据的 base64 编码字符串。如果为 False,则返回图像的原始字节数据。默认为 True。
返回值:
bytes
- 如果use_b64
为 False,则返回原始字节形式的图像数据;如果use_b64
为 True,则返回 base64 编码的字符串形式的图像数据。
llava_formatter
def llava_formatter(prompt: str,
order_image_tokens: bool = False) -> Tuple[str, List[str]]
通过替换图像标签格式化输入提示,并返回新的提示以及图像位置。
参数:
prompt
(str):可能包含图像标签(如 <img ...>)的输入字符串。order_image_tokens
(bool, 可选):是否对图像标记进行编号排序。对于 GPT-4V 很有用。默认为 False。
返回值:
- Tuple[str, List[str]]:一个包含格式化字符串和以 b64 格式加载的图像列表的元组。
pil_to_data_uri
def pil_to_data_uri(image: Image.Image) -> str
将 PIL 图像对象转换为数据 URI。
参数:
image
Image.Image - PIL 图像对象。
返回值:
str
- 数据 URI 字符串。
gpt4v_formatter
def gpt4v_formatter(prompt: str,
img_format: str = "uri") -> List[Union[str, dict]]
通过替换图像标签格式化输入提示,并返回一个包含文本和图像的列表。
参数:
prompt
(str):可能包含图像标签(如 <img ...>)的输入字符串。img_format
(str):应使用的图像格式。可选值为 "uri"、"url"、"pil" 中的一个。
返回值:
- List[Union[str, dict]]:一个交替包含文本和图像字典项的列表。
extract_img_paths
def extract_img_paths(paragraph: str) -> list
从文本段落中提取图像路径(URL 或本地路径)。
参数:
paragraph
str - 输入的文本段落。
返回值:
list
- 一个包含提取的图像路径的列表。
message_formatter_pil_to_b64
def message_formatter_pil_to_b64(messages: List[Dict]) -> List[Dict]
将消息中的 PIL 图像 URL 转换为 base64 编码的数据 URI。
该函数遍历消息字典的列表。对于每个消息,如果它包含一个带有项目列表的 'content' 键,它会查找带有 'image_url' 键的项目。然后,函数将 PIL 图像 URL(由 'image_url' 指向)转换为 base64 编码的数据 URI。
参数:
messages
List[Dict] - 包含消息字典的列表。每个字典可能包含一个带有项目列表的 'content' 键,其中一些项目可能是图像 URL。
返回值:
-
List[Dict]
- 包含将 PIL 图像 URL 转换为 base64 编码的数据 URI 的消息字典的新列表。示例输入: [
-
{'content'
- [{'type': 'text', 'text': '你是一个有用的 AI 助手。'}], 'role': 'system'}, -
{'content'
- [ -
{'type'
- 'text', 'text': '这只狗的品种是什么?'}, -
{'type'
- 'image_url', 'image_url': {'url': PIL.Image.Image}}, -
{'type'
- 'text', 'text': '。'}], -
'role'
- 'user'} ]示例输出: [
-
{'content'
- [{'type': 'text', 'text': '你是一个有用的 AI 助手。'}], 'role': 'system'}, -
{'content'
- [ -
{'type'
- 'text', 'text': '这只狗的品种是什么?'}, -
{'type'
- 'image_url', 'image_url': {'url': B64 图像}}, -
{'type'
- 'text', 'text': '。'}], -
'role'
- 'user'} ]