25.05.19 코딩 공부 시작

코딩 척척석박사 분들 피드백 환영합니다.

공대생이 코딩에서 살아남기

특강/생성형 AI를 활용한 리포팅 자동화(API)

[Open AI]프로그램 제작 (08.26)

코딩 아가 2025. 8. 26. 23:06

1. 글 요약 프로그램(with. ChatGPT)

사용자에게 요약하고자 하는 글을 입력 받으면 최종 요약 결과를 보여주는 프로그램

토큰이란?

AI 나라의 글자 단위

토큰화란?

텍스트를 작은 단위로 나누는 과정

프로그램 UI 만들기

  1. 기본 정보 불러오기 (streamlit, OpenAI)
  2. 기능 구현 함수 (askGpt 함수 정의)
  3. 메인 함수로 구성
# 1.
import streamlit as st
import openai

# 2.
def askGpt(prompt,apikey):
    # OpenAI API 클라이언트를 초기화합니다.
    client = openai.OpenAI(api_key = apikey)
    # GPT 모델에 프롬프트를 보내어 응답을 요청합니다.
    response = client.responses.create(
    model="gpt-4.1-nano",
    input=prompt)
    # 응답에서 요약된 텍스트를 추출하여 반환합니다.
    gptResponse = response.output_text
    return gptResponse
    
# 3.
def main():
	# 페이지 설정(웹페이지 제목)
    st.set_page_config(page_title="요약 프로그램")
    # 헤더와 구분선 추가
    st.header("📃요약 프로그램")
    st.markdown('---')
    # 사이드바 설정 (st.text_input: API키 입력받기, type='password': 비밀번호 표시X)
    with st.sidebar:
        openai_apikey = st.text_input(label='OPENAI API 키', placeholder='Enter Your API Key', value='', type='password')
    # 요약 기능 추가하기
    text = st.text_area("요약 할 글을 입력하세요")
    if st.button("요약"):
        prompt = f'''
        **Instructions** :
        - You are an expert assistant that summarizes text into **Korean language**.
        - Your task is to summarize the **text** sentences in **Korean language**.
        - Your summaries should include the following :
            - Omit duplicate content, but increase the summary weight of duplicate content.
            - Summarize by emphasizing concepts and arguments rather than case evidence.
            - Summarize in 3 lines.
            - Use the format of a bullet point.
        -text : {text}
        '''
        if openai_apikey:
            # API 키가 유효한 경우 요약 작업을 수행합니다.
            st.info(askGpt(prompt, openai_apikey))
        else:
            st.info("API 키를 입력하세요")

if __name__=="__main__":
    main()

 

2.  AI 로고 생성 프로그램(with. DALL.E)

사용자가 생성하고자 하는 로고에 대한 정보를 입력하면 AI가 로고를 생성

DALL.E란?

ChatGPT를 만든 OpenAI에서 개발한 이미지 생성 AI 프로그램

  1. prompt (string)
    • 필수: 예
    • 설명: 생성할 이미지에 대한 텍스트 설명
    • DALLE-2 모델: 1000자
    • DALLE-3 모델: 4000자
  2. model (string)
    • 필수: 아니요 (기본값: "dall-e-2")
    • 설명: 이미지 생성에 사용할 모델을 지정
    • "dall-e-2",  "dall-e-3"
  3. n (integer or null)
    • 필수: 아니요 (기본값: 1)
    • 설명: 생성할 이미지의 수를 지정합니다. 1부터 10까지 설정 가능하며, DALLE-3 모델에서는 n=1만 지원됩니다.
  4. quality (string)
    • 필수: 아니요 (기본값: "standard")( DALLE-3 모델에서만 지원)
    • 설명: 생성된 이미지의 품질을 지정
    • "standard", "hd"(더 세부적이고 일관)
  5. response_format (string or null)
    • 필수: 아니요 (기본값: "url")
    • 설명: 생성된 이미지가 반환되는 형식을 지정
    • "url", "b64_json"(60분 동안 유효)
  6. size (string or null)
    • 필수: 아니요 (기본값: "1024x1024")
    • 설명: 생성된 이미지의 크기를 지정
    • DALLE-2 모델: "256x256", "512x512", "1024x1024"
    • DALLE-3 모델: "1024x1024", "1792x1024", "1024x1792"
  7. style (string or null)
    • 필수: 아니요 (기본값: "vivid")(DALLE-3 모델에서만 지원)
    • 설명: 생성된 이미지의 스타일을 지정
    • "vivid"(더 극적이고 현실감을 강조), "natural"(자연스러움)
import openai
client = openai.OpenAI(api_key = "API_Key")

response = client.images.generate(
    model="dall-e-3",
    prompt="귀엽고 친절한 첨단 고객센터 AI 로봇을 이미지를 생성해줘. 이미지의 배경은 흰색이야.",
    size="1024x1024",
    quality="standard",
    n=1
)

response

프로그램 UI 만들기

  1. 기본 정보 불러오기 (streamlit, OpenAI)
  2. 기능 구현 함수 (drawLogoUsingDalle3 함수 정의)
  3. 메인 함수로 구성
# 1.
import streamlit as st
import openai

# 2.
def drawLogoUsingDalle3(question):
    API_KEY = "API_Key"
    client = openai.OpenAI(api_key = API_KEY)
    response = client.images.generate(
    model="dall-e-3",
    prompt=question,
    size="1024x1024",
    quality="standard",
    n=1,
    )
    image_url = response.data[0].url
    return image_url

# 3. 
def main():
    st.title('AI 로고 생성기')
    st.markdown('---')

    st.subheader('생성하고자 하는 로고에 대한 상세한 정보를 입력하세요')
    # 사용자 입력 받기
    brand_name = st.text_input("1. 브랜드 이름은 무엇인가요?")
    message = st.text_input("2. 로고에서 전달하고 싶은 메시지나 느낌은 무엇인가요?")
    target_audience = st.text_input("3. 타겟 고객층은 누구인가요?")
    preferred_style = st.text_input("4. 선호하는 로고 스타일이나 색상이 있나요?")
    usage_environment = st.text_input("5. 로고는 주로 어디에 사용될 예정인가요?")

    # 로고 생성 요청 버튼
    if st.button("로고 생성 요청"):
        full_prompt = f'''
        Please create a logo for a brand with the following details:

        Brand Name: {brand_name}
        Message/Feelings: {message}
        Target Audience: {target_audience}
        Preferred Style/Colors: {preferred_style}
        Usage Environment: {usage_environment}

        The logo should be visually appealing, memorable, and effectively represent the brand's identity.
        Please consider the provided details to create a design that resonates with the target audience and stands out from competitors.
        '''
        image_url = drawLogoUsingDalle3(full_prompt)
        st.subheader('최종 생성 로고')
        st.image(image_url)
if __name__=="__main__":
    main()