Spaces:
Paused
Paused
File size: 6,354 Bytes
1d355ad 3f89275 6ff3a41 22032f3 8b777e4 fabb74d c8163eb 8b777e4 d23fd89 8ed91ca 8b777e4 fabb74d b46c47b 8b777e4 fabb74d 1b06e6e 8b777e4 1b06e6e 3f89275 407e2db 1b06e6e 3f89275 23d4da6 a6a0a6a 23d4da6 3f89275 23d4da6 3f89275 407e2db 3f89275 407e2db 1b06e6e fe68a57 407e2db 150dbbf 1b06e6e 407e2db 3f89275 407e2db 8b777e4 4dc53ae 3f89275 ef9580f c332a88 3e73669 1b06e6e dad4b05 3f89275 76f1ea7 407e2db 1b06e6e 76f1ea7 3f89275 1b06e6e 76f1ea7 3f89275 76f1ea7 | 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 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 89 90 91 92 | import os
import time
import google.generativeai as genai
import gradio as gr
genai.configure(api_key=os.environ["GEMINI_API_KEY"])
# Gemini 모델 설정
generation_config = {
"temperature": 1.0,
"top_p": 0.95,
"top_k": 40,
"max_output_tokens": 7000,
"response_mime_type": "text/plain",
}
model = genai.GenerativeModel(
model_name="gemini-2.0-flash",
generation_config=generation_config,
)
def generate_architecture_article(images, space_type, space_description):
"""
학교 공간 사진, 공간 유형, 공간 설명을 기반으로 건축 잡지 기사를 생성합니다.
Args:
images: 학교 공간 사진들 (list of gradio.Image)
space_type: 공간 유형 (str)
space_description: 공간에 대한 짧은 설명 (str)
Returns:
str: 생성된 건축 잡지 기사 텍스트
"""
full_text = ""
yield full_text
space_descriptions = {
"유연하다": "‘유연하다’는 구조나 형태의 변경, 조절이 자유롭고, 교육내용, 교수·학습 방법, 집단크기, 사용자의 요구 등 다양한 변화에 유연하게 대응할 수 있는 공간으로 조성하는 것이 특징이다. 즉,하나의 공간을 목적에 따라 다양한 공간으로 사용할 수 있도록 디자인하는 것이다. 유연한 공간을 만들기 위해서는 형태, 크기, 기능, 분위기, 색상, 마감재 등 여러 가지 건축적 요소를 다양하게 구성하여 사용자의 기호, 발달특성, 심리상태, 활동의 종류 등에 따라 여러 가지 선택이 가능하게 조성한다.",
"연결하다": "‘연결하다’는 공간과 공간(학교안/밖, 실내/외, 공용공간/옥외공간, 학습공간/놀이공간 등)간, 사람과 사람(교사와 학생, 학생과 학생, 교사와 교사, 학교내 구성원과 지역사회 구성원)간 유기적인 교류와 소통을 지원하고, 정보에의 접근과 활용이 원활한 공간으로 조성하는 것이 특징이다. 또한 건물 안과 밖, 건물 내의 공간과 공간 사이가 시각적으로는 개방감과 투명성이 있으며, 물리적으로는 상호교류가 원활한 구조로 조성한다.",
"상상하다": "‘상상하다’는 흥미와 호기심, 상상력을 자극하고, 모험적이고 놀이적 요소가 많아서 다양하고 흥미로운 경험을 제공하는 공간의 특성을 의미한다. 또한 안전하고 보호받고 있다는 느낌을 가지게 하며, 밝고 자연친화적이고, 편안하고 평온함을 느끼는 공간으로 조성한다.",
"특화하다": "‘특화하다’는 사용자가 원하는 유형의 활동(놀이, 학습, 실험, 표현 및 전시, 휴식 등)을 언제, 어디서든 할 수 있도록 필요공간 및 자원(자료, 도구, 가구 등)을 충분히 지원할 수 있는 특성을 의미한다. 활용과 변경, 선택과 통제가 자유롭고 그 안에서 사용자들이 자기주도적인 학습 및 활동을 할 수 있도록 하는 공간이다. 또한 학생들간의 원활한 협력과 공동작업을 지원하는 공간으로 조성한다."
}
selected_description = space_descriptions.get(space_type, "")
image_prompts = []
for i, image in enumerate(images):
image_prompts.append(f"사진 {i+1}: {image}")
prompt = f"""
당신은 유명 건축 전문 잡지 "SPACE"의 베테랑 기자입니다.
최근 혁신적인 디자인으로 화제가 된 학교 공간을 직접 방문하여 취재하고, 이를 바탕으로 독자들의 눈길을 사로잡는 흥미로운 기사를 작성해야 합니다.
이 공간은 "{selected_description}" 공간으로, "{space_description}" 특징을 가지고 있습니다.
아래 제공된 사진들을 **각각 분석하고**, 사진의 내용과 직접적으로 관련된 {selected_description} 요소에 대한 설명을 포함하여 기사를 작성해주세요. 사진에 대한 설명 없이 일반적인 내용으로 기사를 채우지 마세요. 각 사진의 특징을 구체적으로 언급하며 기사를 전개해야 합니다.
기사는 다음과 같은 구성 요소를 포함해야 합니다.
* **강렬한 헤드라인: 광고 카피처럼 공간에 대한 핵심이 잘 드러나는 문구(3가지 제안하기)**
* **매력적인 소제목: 광고 카피처럼 공간에 대한 핵심이 잘 드러나는 문구(3가지 제안하기)**
* **사진과 연결된 공간 묘사:** 각 사진에 대해, 사진 속 공간의 디자인, 분위기, 사용된 재료, 색감 등을 구체적으로 묘사하고, "{selected_description}" 공간의 특징과 "{space_description}"이 어떻게 반영되었는지 설명하세요.
* **기능 및 활용 분석:** 사진 속 공간의 주요 기능과 실제 활용 방안, 장점과 단점을 분석하세요.
* **건축학적 특징 분석:** 사진 속 공간의 디자인 원리, 구조적 특징, 혁신적인 요소 등을 분석하고, 건축가의 의도를 해석하여 전달하세요.
* **교육적 가치 조명:** 사진 속 공간이 교육에 미치는 긍정적 영향, 교육 철학과의 연관성, 미래 교육 방향에 대한 시사점 등을 제시하세요.
* **마무리:** 기사 전체 내용을 요약하고, 이 공간이 가지는 의미와 가치를 다시 한번 강조하며 마무리하세요.
{chr(10).join(image_prompts)}
"""
response = model.generate_content([prompt])
for chunk in response.text:
full_text += chunk
yield full_text
time.sleep(0.001)
# Gradio 인터페이스 설정
iface = gr.Interface(
fn=generate_architecture_article,
inputs=[
gr.Gallery(label="학교 공간 사진들", type="pil"),
gr.Radio(["유연하다", "연결하다", "상상하다", "특화하다"], label="공간 분류", info="공간의 특징을 선택하세요."),
gr.Textbox(label="공간 설명", lines=3, placeholder="공간에 대한 짧은 설명을 입력하세요.")
],
outputs=gr.Textbox(label="건축 잡지 기사"),
title="학교 공간 건축 기사 생성",
description="학교 공간 사진, 공간 유형, 공간 설명을 입력하여 건축 잡지 기사를 생성합니다.",
)
# 인터페이스 실행
iface.launch() |