From 7ec9e9749d872fba87f2853a8fb7fb03b1fb199e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=84=B1=EA=B2=BD?= Date: Tue, 14 Jul 2026 11:05:15 +0900 Subject: [PATCH] =?UTF-8?q?=EC=A0=9C=EB=AF=B8=EB=82=98=EC=9D=B4=20gpt?= =?UTF-8?q?=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/home/api/routers/v1/home.py | 7 ++++--- app/utils/autotag.py | 4 ++-- app/utils/image_filter.py | 4 ++-- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/app/home/api/routers/v1/home.py b/app/home/api/routers/v1/home.py index a2ddbc7..a9bd147 100644 --- a/app/home/api/routers/v1/home.py +++ b/app/home/api/routers/v1/home.py @@ -304,13 +304,14 @@ async def _crawling_logic( extra_photo_urls = scraper.extra_photo_urls or [] if len(owner_images) >= NvMapScraper.SUPPLEMENT_THRESHOLD: - # 업체 제공 사진은 필터링 면제 대상이므로 상한 없이 전량 사용한다 - # (MAX_IMAGES 상한은 방문자 사진이 섞이는 보충 경로에만 적용). + # 업체 제공 사진은 필터링 면제 대상이므로 MAX_IMAGES 상한 없이 수집분을 전부 사용한다 + # (MAX_IMAGES 상한은 방문자 사진이 섞이는 보충 경로에만 적용. + # 수집 자체는 NvMapScraper.BIZ_MAX_PAGES가 상한이며 도달 시 scraper가 warning을 남긴다). scraper.image_link_list = list(owner_images) step3_elapsed = (time.perf_counter() - step3_start) * 1000 logger.info( f"[crawling] Step 3 SKIP - 업체 사진 {len(owner_images)}장 " - f"≥ {NvMapScraper.SUPPLEMENT_THRESHOLD}장 → 방문자 사진 필터링 생략, 전량 사용" + f"≥ {NvMapScraper.SUPPLEMENT_THRESHOLD}장 → 방문자 사진 필터링 생략, 업체 사진만 사용" ) else: try: diff --git a/app/utils/autotag.py b/app/utils/autotag.py index 8b66a06..3ccade6 100644 --- a/app/utils/autotag.py +++ b/app/utils/autotag.py @@ -7,7 +7,7 @@ from app.utils.prompts.schemas import SpaceType, Subject, Camera, MotionRecommen import asyncio async def autotag_image(image_url : str, industry: str = "") -> list[str]: #tag_list - chatgpt = ChatgptService(model_type="gemini") + chatgpt = ChatgptService(model_type="gpt") image_input_data = { "img_url" : image_url, "industry" : industry, @@ -21,7 +21,7 @@ async def autotag_image(image_url : str, industry: str = "") -> list[str]: #tag_ return image_result async def autotag_images(image_url_list : list[str], industry: str = "") -> list[dict]: #tag_list - chatgpt = ChatgptService(model_type="gemini") + chatgpt = ChatgptService(model_type="gpt") image_input_data_list = [{ "img_url" : image_url, "industry" : industry, diff --git a/app/utils/image_filter.py b/app/utils/image_filter.py index b32abfe..6e7dc10 100644 --- a/app/utils/image_filter.py +++ b/app/utils/image_filter.py @@ -21,7 +21,7 @@ from app.utils.prompts.schemas import MarketingFilterOutput logger = get_logger("image_filter") # 크롤링 단계 필터링에 사용할 Gemini 모델. 시트(prompts.py)와 달리 코드에 고정한다. -MARKETING_FILTER_MODEL = "gemini-3.5-flash" +MARKETING_FILTER_MODEL = "gpt-5-mini" MAX_RETRY = 2 @@ -61,7 +61,7 @@ async def filter_marketing_images(image_url_list: list[str], industry: str = "") if not image_url_list: return [] - chatgpt = ChatgptService(model_type="gemini") + chatgpt = ChatgptService(model_type="gpt") prompt_text = _build_prompt(industry) async def _call(url: str):