app.py
import streamlit as st
import requests
st.title('광고 문구 서비스앱')
generate_ad_url = 'http://127.0.0.1:8000/create_ad'
product_name = st.text_input('제품 이름')
details = st.text_input('주요 내용')
options = st.multiselect('광고 문구의 느낌', options=['기본', '재밌게', '차분하게', '과장스럽게', '참신하게', '고급스럽게'], default=['기본'])
if st.button("광고 문구 생성하기"):
try:
response = requests.post(
generate_ad_url,
json={"product_name": product_name,
"details": details,
"tone_and_manner": ", ".join(options)})
ad = response.json()['ad']
st.success(ad)
except:
st.error("연결 실패!")
main.py
import openai
from fastapi import FastAPI
from pydantic import BaseModel
openai.api_key = 'sk-proj-GFQ0DO9J1J6mSFbp4Y6TT3BlbkFJb4apPkDTmLZcwsHGXDVK'
app = FastAPI()
class AdGenerator:
def __init__(self, engine='gpt-3.5-turbo'):
self.engine = engine
def using_engine(self, prompt):
system_instruction = 'assistant는 마케팅 문구 작성 도우미로 동작한다. user의 내용을 참고하여 마케팅 문구를 작성해라'
messages = [{'role':'system', 'content': system_instruction},
{'role': 'user', 'content': prompt}]
response = openai.chat.completions.create(model=self.engine, messages=messages)
result = response.choices[0].message.content.strip()
return result
def generate(self, product_name, details, tone_and_manner):
prompt = f'제품 이름: {product_name}\n주요 내용: {details}\n광고 문구의 스타일: {tone_and_manner} 위 내용을 참고하여 마케팅 문구를 만들어라'
result = self.using_engine(prompt=prompt)
return result
class Product(BaseModel):
product_name: str
details: str
tone_and_manner: str
@app.post('/create_ad')
async def create_ad(product: Product):
print(product)
ad_generator = AdGenerator()
ad = ad_generator.generate(product_name=product.product_name,
details=product.details,
tone_and_manner=product.tone_and_manner)
return {'ad': ad}
과제
과제
"광고 문구 서비스앱"에 "광고 문구 생성하기" 실행마다 MongoDB에 저장하고, 저장된 내용을 프론트단(화면)에 표 또는 시각화 도구로 표현하기
'PyCharm' 카테고리의 다른 글
PyCharm gpt번역앱 (2024-06-04) (0) | 2024.06.04 |
---|---|
PyCharm fastAPI (2024-06-04) (0) | 2024.06.04 |