1
0
Fork 0

GEMINI 질문을 마크다운 형식으로 받기

이후 마크다운을 HTML 코드로 변환하여 HTML 위젯에 넣는걸로 수정
This commit is contained in:
Envy_PC 2024-04-23 15:58:08 +09:00
parent ccc6494096
commit 305b21798d
2 changed files with 83 additions and 6 deletions

View File

@ -1,6 +1,7 @@
import requests
import google.generativeai as genai
import logging
import markdown
# 로거 인스턴스 가져오기
logger = logging.getLogger('default_logger')
@ -59,6 +60,7 @@ class ImageDescriptionGenerator:
너는 온라인 쇼핑몰 상세페이지 제작 전문가야. 니가 만든 상품페이지는 모두를 감동시키고, 구매로 이어지는 마법같은 능력이 있어.
이제 주어진 이미지와 내가 원하는 상세페이지에 대한 정보를 줄께.
하나씩 차근차근 진행해보자.
질문에 대한 답변을 마크다운 편집기에 바로 사용할 있게 문단기호, 구분기호등으로 분리해서 답변해줘.
[정보]
A. 해당상품의 타오바오 상품명은 '{product_info.tao_title}'
B. 해당상품의 키워드는 '{product_info.keyword_title}'
@ -76,22 +78,90 @@ class ImageDescriptionGenerator:
E-5. 상품명5 : {product_info.naver_products[4]["productTitle"]}
상품가격5 : {product_info.naver_products[4]["price"]}
[상품명]
위의 모든 정보를 바탕으로 상품을 설명한 상품명을 만들어줘 1 만들어줘.
- 상품명 제작 권장 사항 1: 키워드, 용도, 재질, 용량, 형식, 모양,특징등의 단어를 콤마를 제외하고 띄어쓰기로 나열해(용량과 스펙등은 뒤쪽으로 배치).
- 상품명 제작 권장 사항 2: 타오바오 상품명과 옵션이름들에서 상품의 특징을 가져와서 상품명에 사용해야해.
- 상품명 제작 권장 사항 3 : 경쟁사의 상품명들을 띄어쓰기를 중심으로 단어를 분리하고, 중복된 단어를 모두 제거한 나머지 단어들 4개를 가져와서 상품명 제작에 사용해줘.
- 반드시 준시해야 상품명 제한 사항 : 형용사 사용 금지, 중복단어 절대 사용 금지, 쉼표나 별표를 포함한 모든 특수문자 금지.
- 상품명 형식 : 한글의 글자수로 35 이상 되어야 .
답변은 마크다운 형식으로 '폰트크기 24, 폰트 스타일 굵게' 해줘
[상품의 용도]
상품이 무엇인지, 어떤 용도로 사용하는지 자세하게 설명해줘.
답변은 마크다운 형식으로 제목을 '폰트크기 20, 폰트 스타일 굵게', 내용은 '폰트크기 16, 들여쓰기'로해줘
[상품의 무게]
상품의 배송비 산정을 위해 무게를 kg으로 알려줘.
답변은 마크다운 형식으로 제목을 '폰트크기 20, 폰트 스타일 굵게', 내용은 '폰트크기 16, 들여쓰기'로해줘
[상품의 강점과 특징]
상품의 강점, 특징과 함께 이상품을 사야하는지, 다른제품들과의 차별점은 무엇인지, 기존제품의 어떠한 단점을 개선했는지를 중심으로 홍보문구를 상품이미지에 맞게 자세하고 친절하게 만들어줘."
답변은 마크다운 형식으로 제목을 '폰트크기 20, 폰트 스타일 굵게', 내용은 '폰트크기 16, 들여쓰기'로해줘
[사용상 주의점]
상품의 사용상 주의점을 자세히 알려줘
답변은 마크다운 형식으로 제목을 '폰트크기 20, 폰트 스타일 굵게', 내용은 '폰트크기 16, 들여쓰기'로해줘
[상품의 추가 정보]
상품의 도움이 될만한 다른 추가정보를 자세하게 알려줘
답변은 마크다운 형식으로 제목을 '폰트크기 20, 폰트 스타일 굵게', 내용은 '폰트크기 16, 들여쓰기'로해줘
'''
front_prompt = f'''
나는 타오바오에서 상품을 가져와서 한국의 온라인 쇼핑몰에서 구매대행업을 하는 사업가야.
너는 온라인 쇼핑몰 상세페이지 제작 전문가야. 니가 만든 상품페이지는 모두를 감동시키고, 구매로 이어지는 마법같은 능력이 있어.
이제 주어진 이미지와 내가 원하는 상세페이지에 대한 정보를 줄께.
하나씩 차근차근 진행해보자.
내가 원하는 답변 형식은 바로 상품페이지에 쓸수 있는 형식이야. 해당 부분을 구분하고, 부연설명은 빼줘.
[정보]
A. 해당상품의 타오바오 상품명은 '{product_info.tao_title}'
B. 해당상품의 키워드는 '{product_info.keyword_title}'
C. 해당상품을 나타나는 상품의 옵션이름은 '{product_info.trans_option_1_names}'
D. 해당상품의 특징이라 옵션의 공통적인 키워드는 '{product_info.trans_option_1_name_common_parts}'
E. 해당상품과 비슷한 상품을 파는 경쟁사의 제품정보는 아래와 같아.
E-1. 상품명1 : {product_info.naver_products[0]["productTitle"]}
상품가격1 : {product_info.naver_products[0]["price"]}
E-2. 상품명2 : {product_info.naver_products[1]["productTitle"]}
상품가격2 : {product_info.naver_products[1]["price"]}
E-3. 상품명3 : {product_info.naver_products[2]["productTitle"]}
상품가격3 : {product_info.naver_products[2]["price"]}
E-4. 상품명4 : {product_info.naver_products[3]["productTitle"]}
상품가격4 : {product_info.naver_products[3]["price"]}
E-5. 상품명5 : {product_info.naver_products[4]["productTitle"]}
상품가격5 : {product_info.naver_products[4]["price"]}
'''
purpose_prompt = f'''
[질문]
1. 상품이 무엇인지, 어떤 용도로 사용하는지 자세하게 설명해줘.
'''
weight_prompt = f'''
[질문]
2. 상품의 배송비 산정을 위해 무게를 kg으로 알려줘.
'''
character_prompt = f'''
[질문]
3. 상품의 강점, 특징과 함께 이상품을 사야하는지, 다른제품들과의 차별점은 무엇인지, 기존제품의 어떠한 단점을 개선했는지를 중심으로 홍보문구를 상품이미지에 맞게 자세하고 친절하게 만들어줘."
'''
warning_prompt = f'''
[질문]
4. 상품의 사용상 주의점을 자세히 알려줘
'''
addtional_prompt = f'''
[질문]
5. 상품의 도움이 될만한 다른 추가정보를 자세하게 알려줘
'''
title_prompt = f'''
[질문]
6. 위의 모든 정보를 바탕으로 상품을 설명한 상품명을 만들어줘 1 만들어줘.
6-1. 상품명 제작 권장 사항 1: 키워드, 용도, 재질, 용량, 형식, 모양,특징등의 단어를 콤마를 제외하고 띄어쓰기로 나열해(용량과 스펙등은 뒤쪽으로 배치).
6-2. 상품명 제작 권장 사항 2: 타오바오 상품명과 옵션이름들에서 상품의 특징을 가져와서 상품명에 사용해야해.
6-3. 상품명 제작 권장 사항 3 : 경쟁사의 상품명들을 띄어쓰기를 중심으로 단어를 분리하고, 중복된 단어를 모두 제거한 나머지 단어들 4개를 가져와서 상품명 제작에 사용해줘.
6-4. 반드시 준시해야 상품명 제한 사항 : 형용사 사용 금지, 중복단어 절대 사용 금지, 쉼표나 별표를 포함한 모든 특수문자 금지.
6-5. 상품명 형식 : 한글의 글자수로 35 이상 되어야 .
'''
# 원하는 답변형태
# 아래와 같은 형식으로 답변해주면 좋겠어.
@ -116,8 +186,11 @@ class ImageDescriptionGenerator:
# 후보 결과 확인 및 처리
if response.candidates and len(response.candidates) > 0:
logger.debug(f"{response.text}")
return response.text
logger.debug(f"response.text : {response.text}")
response_html = markdown.markdown(response.text)
logger.debug(f"response_html : {response_html}")
return response_html
else:
# 후보 결과가 없거나 유효하지 않을 경우 기본 응답 반환
return '''

View File

@ -617,9 +617,13 @@ def modify_detail_page(driver, product_info, gemini, translator, delv_collection
# contents 변수의 값이 None이 아닐 때만 send_keys 메서드를 호출합니다.
if aicontents is not None:
html_insert_btn_xpath="//div[@id='productMainContentContainerId']/div/div/div[2]/div[2]/div/div/div[2]/div/div/button[7]"
click_element(driver, 'XPATH', html_insert_btn_xpath, 5, 'ac')
detail_content.send_keys(aicontents)
html_insert_ok_xpath="/html/body/div[6]/div/div[3]/div/div[2]/div[1]/div/div/div[2]/div[2]/div[2]/div/div[1]/div[2]/div/button[1]"
click_element(driver, 'XPATH', html_insert_ok_xpath, 5, 'ac')
logger.debug(f"AI 컨텐츠 입력완료")
detail_content.send_keys(Keys.DOWN)
else:
# contents 변수가 None일 때의 대체 처리
# 예: detail_content.send_keys("") 또는 아무 동작도 수행하지 않음