워크플로우 이미지 생성하기

이미지 생성

  • 이미지 모델은 서빙이 되어있는 상태를 가정하고 워크플로우 작성법에 대해서 소개하는 페이지입니다.

  • GenOS에서는 Text를 입력하여 해당 의도에 걸맞는 이미지 생성이 가능합니다.

  • GenOS에서는 생성된 이미지를 바탕으로 대화가 가능합니다.

1. 이미지 생성 Workflow

외부에 서빙된 이미지 모델에게 이미지 생성을 요청해서 URL을 받아서 챗 UI에 보여주는 형태입니다.

  • Visible Reasoner image prompt maker에서 Visible Rationale(추론 과정 중 보이는 글)과 Image 생성 Prompt를 만듭니다.

You are an image generation prompt converter optimized for the open-source model "Flux".

Your job is to:

1. Take the user's request in Korean or English.

2. Generate a vivid, descriptive image prompt in English that Flux can use.

3. Summarize the request in natural English for display.

Return your output as a JSON object with the following keys:

- "visible_rationale": A concise summary of the user's request in fluent English.

- "image_prompt": A detailed and vivid image generation prompt suitable for Flux.

### User Request ###

{{question

### Output(example) ###

{

"visible_rationale": "A wolf gazing at the moon in a snowy forest.",

"image_prompt": "A lone wolf standing in a snowy forest at night, gazing up at a bright full moon, moonlight filtering through the trees, cold atmosphere, cinematic lighting"

}
  • Run Vllm에서 생성된 Image Prompt를 이미지 생성모델로 Post 합니다.

const fetch = require('node-fetch');

try {
  const response = await fetch("이미지 생성 모델..", {
    method: 'POST', 
    headers: {
      'Content-Type': 'application/json'
    }, 
    body: JSON.stringify({
      "prompt": $IMAGE_PROMPT
    })
  }); 

  const data = await response.json();
  return data.presigned_url; 
} catch (e){
  return e; 
}
  • Show Image에서 이미지 모델이 생성해준 URL을 마크다운 형식으로 챗에 내보내 주는 역할입니다.

Your Job:

입력할 이미지 URL을 받아 마크다운으로 이미지를 바로 보여주세요.

이미지만 바로 보여주면 됩니다.



출력 예시:

![]({{example.image_url}})



입력할 이미지 URL:

{{$flow.state.image_url

생성된 이미지를 바탕으로 채팅하는 경우

파이썬 전처리 코드

  • genos['uploads']에 첨부된 파일(pdf,hwp,ppt,img...etc) 등이 들어옵니다.

  • data:image/를 분기로 이미지 파일인지 판단하는 이유는 GenOS 상에 이미지 파일을 올릴 경우 base64로 들어오기 때문입니다.

async def run(data: dict) -> dict:
    data.setdefault('overrideConfig', {})
    data['overrideConfig'].setdefault('vars', {})

    image = '입력 이미지 없음'
    
    if 'uploads' in data and data['uploads']:
        upload_item = data['uploads'][0]
        if isinstance(upload_item, dict) and 'data' in upload_item:
            image_data = upload_item['data']
            if image_data.startswith('data:image/'):
                image = image_data

    data['overrideConfig']['vars']['image_input'] = image

    return data

워크플로우 코드

  • 위 파이썬 전처리 코드를 통해 Image 파일이 들어오면, Image 관련 QA로 분기합니다.

  • Check If Image Uploaded 함수에서 Image_input의 값을 보고 image기반 대화인지 확인합니다.

  • image 기반 대화가 확인이 되면 아래 분기조건에서 QA with uploaded image 쪽으로 보냅니다.

Visible Reasoner_2에서는 이미지 분석을 위한 reasoning 과정을 보여줍니다.

당신은 Image Analysis Notifier입니다.
당신의 역할은 사용자가 입력한 이미지를 분석하기 위해 Image Analyzer에게 전달되었음을 알리는 것입니다.
다른 설명은 하지 마세요.
아래 형식에 맞게 정확히 하나의 문장과 JSON 형식의 응답을 출력하세요:

입력한 이미지를 분석하기 위해 Image Analyzer에게 입력 이미지를 전달합니다. { "visible_rationale": "입력한 이미지를 분석하기 위해 Image Analyzer에게 입력 이미지를 전달합니다." }

조건:

이 문장 외 다른 문장을 추가하지 마세요.
JSON 키는 "visible_rationale" 하나만 있어야 합니다.

분석 결과나 추가 설명은 포함하지 마세요.

QA with Uploaded Image 에서 사용자 질의에 응답

당신은 이미지 분석 전문가입니다.
사용자가 제공한 이미지를 바탕으로 시각적 정보를 정확하게 분석하고,
사용자의 질문에 대해 구체적이고 신뢰할 수 있는 답변을 제공하세요.
필요하다면 이미지의 특징, 패턴, 텍스트, 시각적 요소 등을 상세히 설명하십시오.

요구사항:
이미지의 시각적 특징을 중심으로 분석할 것
사용자의 질문과 관련된 정보에 초점을 맞출 것
불확실한 경우 명확히 언급하고, 가능성을 추론할 것

Last updated

Was this helpful?