Skip to content

Openai

OpenAIImageGenerationToolSpec #

Bases: BaseToolSpec

OpenAI图像生成工具规范。

Source code in llama_index/tools/openai/image_generation/base.py
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
class OpenAIImageGenerationToolSpec(BaseToolSpec):
    """OpenAI图像生成工具规范。"""

    spec_functions = ["image_generation"]

    def __init__(self, api_key: str, cache_dir: Optional[str] = None) -> None:
        try:
            from openai import OpenAI
        except ImportError:
            raise ImportError(
                "Please install openai with `pip install openai` to use this tool"
            )

        """Initialize with parameters."""
        self.client = OpenAI(api_key=api_key)
        self.cache_dir = cache_dir or DEFAULT_CACHE_DIR

    def get_cache_dir(self):
        return self.cache_dir

    def save_base64_image(self, base64_str, image_name):
        try:
            from io import BytesIO

            from PIL import Image
        except ImportError:
            raise ImportError(
                "Please install Pillow with `pip install Pillow` to use this tool"
            )
        cache_dir = self.cache_dir

        # Create cache directory if it doesn't exist
        if not os.path.exists(cache_dir):
            os.makedirs(cache_dir)

        # Decode the base64 string
        image_data = base64.b64decode(base64_str)

        # Create an image from the decoded bytes and save it
        image_path = os.path.join(cache_dir, image_name)
        with Image.open(BytesIO(image_data)) as img:
            img.save(image_path)

        return image_path

    def image_generation(
        self,
        text: str,
        model: Optional[str] = "dall-e-3",
        quality: Optional[str] = "standard",
        num_images: Optional[int] = 1,
    ) -> str:
        """这个工具接受一个自然语言字符串,并将使用OpenAI的DALL-E模型生成一张图片。

Args:
    text (str): 要生成图片的文本。
    size (str): 要生成的图片大小 (1024x1024, 256x256, 512x512)。
    model (str): 用于生成图片的模型 (dall-e-3, dall-e-2)。
    quality (str): 要生成的图片质量 (standard, hd)。
    num_images (int): 要生成的图片数量。
"""
        response = self.client.images.generate(
            model=model,
            prompt=text,
            size=DEFAULT_SIZE,
            quality=quality,
            n=num_images,
            response_format="b64_json",
        )

        image_bytes = response.data[0].b64_json

        filename = f"{time.time()}.jpg"

        return self.save_base64_image(image_bytes, filename)

image_generation #

image_generation(
    text: str,
    model: Optional[str] = "dall-e-3",
    quality: Optional[str] = "standard",
    num_images: Optional[int] = 1,
) -> str

这个工具接受一个自然语言字符串,并将使用OpenAI的DALL-E模型生成一张图片。

Parameters:

Name Type Description Default
text str

要生成图片的文本。

required
size str

要生成的图片大小 (1024x1024, 256x256, 512x512)。

required
model str

用于生成图片的模型 (dall-e-3, dall-e-2)。

'dall-e-3'
quality str

要生成的图片质量 (standard, hd)。

'standard'
num_images int

要生成的图片数量。

1
Source code in llama_index/tools/openai/image_generation/base.py
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
    def image_generation(
        self,
        text: str,
        model: Optional[str] = "dall-e-3",
        quality: Optional[str] = "standard",
        num_images: Optional[int] = 1,
    ) -> str:
        """这个工具接受一个自然语言字符串,并将使用OpenAI的DALL-E模型生成一张图片。

Args:
    text (str): 要生成图片的文本。
    size (str): 要生成的图片大小 (1024x1024, 256x256, 512x512)。
    model (str): 用于生成图片的模型 (dall-e-3, dall-e-2)。
    quality (str): 要生成的图片质量 (standard, hd)。
    num_images (int): 要生成的图片数量。
"""
        response = self.client.images.generate(
            model=model,
            prompt=text,
            size=DEFAULT_SIZE,
            quality=quality,
            n=num_images,
            response_format="b64_json",
        )

        image_bytes = response.data[0].b64_json

        filename = f"{time.time()}.jpg"

        return self.save_base64_image(image_bytes, filename)