init
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
from collections.abc import Generator
|
||||
from typing import Any
|
||||
from dify_plugin import Tool
|
||||
from dify_plugin.entities.tool import ToolInvokeMessage
|
||||
from tools.base import MiniMaxBaseTool
|
||||
|
||||
|
||||
class MiniMaxImageGenerationTool(Tool):
|
||||
def _invoke(self, tool_parameters: dict[str, Any]) -> Generator[ToolInvokeMessage]:
|
||||
api_key = self.runtime.credentials.get("api_key")
|
||||
group_id = self.runtime.credentials.get("group_id")
|
||||
minimax = MiniMaxBaseTool(api_key=api_key, group_id=group_id)
|
||||
|
||||
model = tool_parameters.get("model")
|
||||
prompt = tool_parameters.get("prompt")
|
||||
aspect_ratio = tool_parameters.get("aspect_ratio")
|
||||
prompt_optimizer = tool_parameters.get("prompt_optimizer")
|
||||
n = tool_parameters.get("n")
|
||||
|
||||
response = minimax.text_to_image(
|
||||
model=model,
|
||||
prompt=prompt,
|
||||
aspect_ratio=aspect_ratio,
|
||||
response_format="url",
|
||||
prompt_optimizer=prompt_optimizer,
|
||||
n=n,
|
||||
)
|
||||
if response.status_code != 200:
|
||||
yield self.create_text_message(
|
||||
f"Image generation failed {response.status_code} {response.text}"
|
||||
)
|
||||
return
|
||||
status_code = response.json().get("base_resp", {}).get("status_code", -1)
|
||||
if status_code != 0:
|
||||
yield self.create_text_message(f"Image generation failed {response.text}")
|
||||
return
|
||||
image_data = response.json().get("data", {})
|
||||
image_urls = image_data.get("image_urls")
|
||||
|
||||
if not image_urls:
|
||||
yield self.create_text_message(f"Image generation failed {response.text}")
|
||||
return
|
||||
|
||||
for image_url in image_urls:
|
||||
yield self.create_image_message(image_url)
|
||||
|
||||
image_data = {
|
||||
"image_urls": image_urls,
|
||||
}
|
||||
|
||||
yield self.create_json_message(image_data)
|
||||
Reference in New Issue
Block a user