File size: 1,105 Bytes
86b351a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
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
from langchain_core.tools import tool
from typing import Annotated, Any, Dict, List
from images.image_generator import generate_image
from langgraph.prebuilt import InjectedState
import logging

logger = logging.getLogger(__name__)

def _err(msg: str) -> str:
    logger.error(msg)
    return f"{{ 'error': '{msg}' }}"

def _success(msg: str) -> str:
    logger.info(msg)
    return f"{{ 'success': '{msg}' }}"

@tool
async def generate_scene_image(
    prompt: Annotated[
        str,
        "The prompt to generate an image from"
    ],
    state: InjectedState,
) -> Annotated[
    str,
    "The path to the generated image"
]:
    """
    Generate an image from a prompt and set current scene image.
    """
    try:
        image_path, img_description = generate_image(prompt)
        state["current_scene"]["image"] = image_path
        state["current_scene"]["image_description"] = img_description
        return _success(f"Image generated and set as current scene image: {img_description}")
    except Exception as e:
        return _err(str(e))
    
    
available_tools = [generate_scene_image]