diff --git a/.gitignore b/.gitignore index 109245c..68dc779 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,5 @@ /__pycache__/ /assets/ /resource/data/ -/tests/output/ \ No newline at end of file +/tests/output/ +/data/ \ No newline at end of file diff --git a/api/__pycache__/__init__.cpython-310.pyc b/api/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..a120bed Binary files /dev/null and b/api/__pycache__/__init__.cpython-310.pyc differ diff --git a/api/__pycache__/dependencies.cpython-310.pyc b/api/__pycache__/dependencies.cpython-310.pyc new file mode 100644 index 0000000..3eba171 Binary files /dev/null and b/api/__pycache__/dependencies.cpython-310.pyc differ diff --git a/api/__pycache__/main.cpython-310.pyc b/api/__pycache__/main.cpython-310.pyc new file mode 100644 index 0000000..a626727 Binary files /dev/null and b/api/__pycache__/main.cpython-310.pyc differ diff --git a/api/models/__pycache__/__init__.cpython-310.pyc b/api/models/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..f19e9ff Binary files /dev/null and b/api/models/__pycache__/__init__.cpython-310.pyc differ diff --git a/api/models/__pycache__/content_integration.cpython-310.pyc b/api/models/__pycache__/content_integration.cpython-310.pyc new file mode 100644 index 0000000..a6fcd22 Binary files /dev/null and b/api/models/__pycache__/content_integration.cpython-310.pyc differ diff --git a/api/models/__pycache__/document.cpython-310.pyc b/api/models/__pycache__/document.cpython-310.pyc new file mode 100644 index 0000000..e2637a4 Binary files /dev/null and b/api/models/__pycache__/document.cpython-310.pyc differ diff --git a/api/models/__pycache__/integration.cpython-310.pyc b/api/models/__pycache__/integration.cpython-310.pyc new file mode 100644 index 0000000..474ebf9 Binary files /dev/null and b/api/models/__pycache__/integration.cpython-310.pyc differ diff --git a/api/models/__pycache__/poster.cpython-310.pyc b/api/models/__pycache__/poster.cpython-310.pyc new file mode 100644 index 0000000..c618ef3 Binary files /dev/null and b/api/models/__pycache__/poster.cpython-310.pyc differ diff --git a/api/models/__pycache__/tweet.cpython-310.pyc b/api/models/__pycache__/tweet.cpython-310.pyc new file mode 100644 index 0000000..77012a4 Binary files /dev/null and b/api/models/__pycache__/tweet.cpython-310.pyc differ diff --git a/api/routers/__pycache__/__init__.cpython-310.pyc b/api/routers/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..2be107f Binary files /dev/null and b/api/routers/__pycache__/__init__.cpython-310.pyc differ diff --git a/api/routers/__pycache__/content_integration.cpython-310.pyc b/api/routers/__pycache__/content_integration.cpython-310.pyc new file mode 100644 index 0000000..27f4dae Binary files /dev/null and b/api/routers/__pycache__/content_integration.cpython-310.pyc differ diff --git a/api/routers/__pycache__/data.cpython-310.pyc b/api/routers/__pycache__/data.cpython-310.pyc new file mode 100644 index 0000000..a26f01e Binary files /dev/null and b/api/routers/__pycache__/data.cpython-310.pyc differ diff --git a/api/routers/__pycache__/document.cpython-310.pyc b/api/routers/__pycache__/document.cpython-310.pyc new file mode 100644 index 0000000..fa219f5 Binary files /dev/null and b/api/routers/__pycache__/document.cpython-310.pyc differ diff --git a/api/routers/__pycache__/integration.cpython-310.pyc b/api/routers/__pycache__/integration.cpython-310.pyc new file mode 100644 index 0000000..1c3f0a7 Binary files /dev/null and b/api/routers/__pycache__/integration.cpython-310.pyc differ diff --git a/api/routers/__pycache__/poster.cpython-310.pyc b/api/routers/__pycache__/poster.cpython-310.pyc new file mode 100644 index 0000000..d14b682 Binary files /dev/null and b/api/routers/__pycache__/poster.cpython-310.pyc differ diff --git a/api/routers/__pycache__/prompt.cpython-310.pyc b/api/routers/__pycache__/prompt.cpython-310.pyc new file mode 100644 index 0000000..22efd6d Binary files /dev/null and b/api/routers/__pycache__/prompt.cpython-310.pyc differ diff --git a/api/routers/__pycache__/tweet.cpython-310.pyc b/api/routers/__pycache__/tweet.cpython-310.pyc new file mode 100644 index 0000000..3e13f5a Binary files /dev/null and b/api/routers/__pycache__/tweet.cpython-310.pyc differ diff --git a/api/services/__pycache__/__init__.cpython-310.pyc b/api/services/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..0762618 Binary files /dev/null and b/api/services/__pycache__/__init__.cpython-310.pyc differ diff --git a/api/services/__pycache__/content_integration_service.cpython-310.pyc b/api/services/__pycache__/content_integration_service.cpython-310.pyc new file mode 100644 index 0000000..4c03fd2 Binary files /dev/null and b/api/services/__pycache__/content_integration_service.cpython-310.pyc differ diff --git a/api/services/__pycache__/database_service.cpython-310.pyc b/api/services/__pycache__/database_service.cpython-310.pyc new file mode 100644 index 0000000..0094925 Binary files /dev/null and b/api/services/__pycache__/database_service.cpython-310.pyc differ diff --git a/api/services/__pycache__/document_service.cpython-310.pyc b/api/services/__pycache__/document_service.cpython-310.pyc new file mode 100644 index 0000000..5624f29 Binary files /dev/null and b/api/services/__pycache__/document_service.cpython-310.pyc differ diff --git a/api/services/__pycache__/integration_service.cpython-310.pyc b/api/services/__pycache__/integration_service.cpython-310.pyc new file mode 100644 index 0000000..b8d5a29 Binary files /dev/null and b/api/services/__pycache__/integration_service.cpython-310.pyc differ diff --git a/api/services/__pycache__/poster.cpython-310.pyc b/api/services/__pycache__/poster.cpython-310.pyc new file mode 100644 index 0000000..f07c722 Binary files /dev/null and b/api/services/__pycache__/poster.cpython-310.pyc differ diff --git a/api/services/__pycache__/prompt_builder.cpython-310.pyc b/api/services/__pycache__/prompt_builder.cpython-310.pyc new file mode 100644 index 0000000..99e190a Binary files /dev/null and b/api/services/__pycache__/prompt_builder.cpython-310.pyc differ diff --git a/api/services/__pycache__/prompt_service.cpython-310.pyc b/api/services/__pycache__/prompt_service.cpython-310.pyc new file mode 100644 index 0000000..d43f619 Binary files /dev/null and b/api/services/__pycache__/prompt_service.cpython-310.pyc differ diff --git a/api/services/__pycache__/tweet.cpython-310.pyc b/api/services/__pycache__/tweet.cpython-310.pyc new file mode 100644 index 0000000..6cdecae Binary files /dev/null and b/api/services/__pycache__/tweet.cpython-310.pyc differ diff --git a/config/database.json b/config/database.json index 67f7c88..68b8014 100644 --- a/config/database.json +++ b/config/database.json @@ -1,7 +1,7 @@ { "host": "localhost", "user": "root", - "password": "password", + "password": "civmek-rezTed-0hovre", "database": "travel_content", "port": 3306, "charset": "utf8mb4" diff --git a/core/__pycache__/__init__.cpython-310.pyc b/core/__pycache__/__init__.cpython-310.pyc index c35ff3a..b8c98c1 100644 Binary files a/core/__pycache__/__init__.cpython-310.pyc and b/core/__pycache__/__init__.cpython-310.pyc differ diff --git a/core/__pycache__/cookie_manager.cpython-310.pyc b/core/__pycache__/cookie_manager.cpython-310.pyc new file mode 100644 index 0000000..dfc7f22 Binary files /dev/null and b/core/__pycache__/cookie_manager.cpython-310.pyc differ diff --git a/core/__pycache__/document_adapter.cpython-310.pyc b/core/__pycache__/document_adapter.cpython-310.pyc new file mode 100644 index 0000000..bd2d3df Binary files /dev/null and b/core/__pycache__/document_adapter.cpython-310.pyc differ diff --git a/core/__pycache__/media_manager.cpython-310.pyc b/core/__pycache__/media_manager.cpython-310.pyc new file mode 100644 index 0000000..e0f4b0c Binary files /dev/null and b/core/__pycache__/media_manager.cpython-310.pyc differ diff --git a/core/__pycache__/models.cpython-310.pyc b/core/__pycache__/models.cpython-310.pyc new file mode 100644 index 0000000..b65087c Binary files /dev/null and b/core/__pycache__/models.cpython-310.pyc differ diff --git a/core/__pycache__/xhs_adapter.cpython-310.pyc b/core/__pycache__/xhs_adapter.cpython-310.pyc new file mode 100644 index 0000000..1deb45c Binary files /dev/null and b/core/__pycache__/xhs_adapter.cpython-310.pyc differ diff --git a/core/ai/__pycache__/__init__.cpython-310.pyc b/core/ai/__pycache__/__init__.cpython-310.pyc index b463a08..9a3beac 100644 Binary files a/core/ai/__pycache__/__init__.cpython-310.pyc and b/core/ai/__pycache__/__init__.cpython-310.pyc differ diff --git a/core/ai/__pycache__/ai_agent.cpython-310.pyc b/core/ai/__pycache__/ai_agent.cpython-310.pyc index 94beeb5..3d22a50 100644 Binary files a/core/ai/__pycache__/ai_agent.cpython-310.pyc and b/core/ai/__pycache__/ai_agent.cpython-310.pyc differ diff --git a/core/config/__pycache__/__init__.cpython-310.pyc b/core/config/__pycache__/__init__.cpython-310.pyc index 7995ddb..1949495 100644 Binary files a/core/config/__pycache__/__init__.cpython-310.pyc and b/core/config/__pycache__/__init__.cpython-310.pyc differ diff --git a/core/config/__pycache__/manager.cpython-310.pyc b/core/config/__pycache__/manager.cpython-310.pyc index 3a5d5f8..65541b8 100644 Binary files a/core/config/__pycache__/manager.cpython-310.pyc and b/core/config/__pycache__/manager.cpython-310.pyc differ diff --git a/core/config/__pycache__/models.cpython-310.pyc b/core/config/__pycache__/models.cpython-310.pyc index ce6ca7b..9afd24f 100644 Binary files a/core/config/__pycache__/models.cpython-310.pyc and b/core/config/__pycache__/models.cpython-310.pyc differ diff --git a/core/document/__pycache__/__init__.cpython-310.pyc b/core/document/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..8b74a4b Binary files /dev/null and b/core/document/__pycache__/__init__.cpython-310.pyc differ diff --git a/core/document/__pycache__/content_integrator.cpython-310.pyc b/core/document/__pycache__/content_integrator.cpython-310.pyc new file mode 100644 index 0000000..ae06267 Binary files /dev/null and b/core/document/__pycache__/content_integrator.cpython-310.pyc differ diff --git a/core/document/__pycache__/content_transformer.cpython-310.pyc b/core/document/__pycache__/content_transformer.cpython-310.pyc new file mode 100644 index 0000000..6f832a4 Binary files /dev/null and b/core/document/__pycache__/content_transformer.cpython-310.pyc differ diff --git a/core/document/__pycache__/text_extractor.cpython-310.pyc b/core/document/__pycache__/text_extractor.cpython-310.pyc new file mode 100644 index 0000000..7cc06cd Binary files /dev/null and b/core/document/__pycache__/text_extractor.cpython-310.pyc differ diff --git a/core/exception/__pycache__/__init__.cpython-310.pyc b/core/exception/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..0c9d991 Binary files /dev/null and b/core/exception/__pycache__/__init__.cpython-310.pyc differ diff --git a/core/exception/__pycache__/exceptions.cpython-310.pyc b/core/exception/__pycache__/exceptions.cpython-310.pyc new file mode 100644 index 0000000..2b87674 Binary files /dev/null and b/core/exception/__pycache__/exceptions.cpython-310.pyc differ diff --git a/core/xhs_spider/__pycache__/__init__.cpython-310.pyc b/core/xhs_spider/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..40c4bc9 Binary files /dev/null and b/core/xhs_spider/__pycache__/__init__.cpython-310.pyc differ diff --git a/core/xhs_spider/__pycache__/main.cpython-310.pyc b/core/xhs_spider/__pycache__/main.cpython-310.pyc new file mode 100644 index 0000000..89eec94 Binary files /dev/null and b/core/xhs_spider/__pycache__/main.cpython-310.pyc differ diff --git a/core/xhs_spider/apis/__pycache__/__init__.cpython-310.pyc b/core/xhs_spider/apis/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..9c6c4e1 Binary files /dev/null and b/core/xhs_spider/apis/__pycache__/__init__.cpython-310.pyc differ diff --git a/core/xhs_spider/apis/__pycache__/xhs_creator_apis.cpython-310.pyc b/core/xhs_spider/apis/__pycache__/xhs_creator_apis.cpython-310.pyc new file mode 100644 index 0000000..302b2ed Binary files /dev/null and b/core/xhs_spider/apis/__pycache__/xhs_creator_apis.cpython-310.pyc differ diff --git a/core/xhs_spider/apis/__pycache__/xhs_pc_apis.cpython-310.pyc b/core/xhs_spider/apis/__pycache__/xhs_pc_apis.cpython-310.pyc new file mode 100644 index 0000000..292e5cc Binary files /dev/null and b/core/xhs_spider/apis/__pycache__/xhs_pc_apis.cpython-310.pyc differ diff --git a/core/xhs_spider/xhs_utils/__pycache__/__init__.cpython-310.pyc b/core/xhs_spider/xhs_utils/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..38ee614 Binary files /dev/null and b/core/xhs_spider/xhs_utils/__pycache__/__init__.cpython-310.pyc differ diff --git a/core/xhs_spider/xhs_utils/__pycache__/common_util.cpython-310.pyc b/core/xhs_spider/xhs_utils/__pycache__/common_util.cpython-310.pyc new file mode 100644 index 0000000..19fd864 Binary files /dev/null and b/core/xhs_spider/xhs_utils/__pycache__/common_util.cpython-310.pyc differ diff --git a/core/xhs_spider/xhs_utils/__pycache__/cookie_util.cpython-310.pyc b/core/xhs_spider/xhs_utils/__pycache__/cookie_util.cpython-310.pyc new file mode 100644 index 0000000..990f7ea Binary files /dev/null and b/core/xhs_spider/xhs_utils/__pycache__/cookie_util.cpython-310.pyc differ diff --git a/core/xhs_spider/xhs_utils/__pycache__/data_util.cpython-310.pyc b/core/xhs_spider/xhs_utils/__pycache__/data_util.cpython-310.pyc new file mode 100644 index 0000000..ac1bb60 Binary files /dev/null and b/core/xhs_spider/xhs_utils/__pycache__/data_util.cpython-310.pyc differ diff --git a/core/xhs_spider/xhs_utils/__pycache__/xhs_creator_util.cpython-310.pyc b/core/xhs_spider/xhs_utils/__pycache__/xhs_creator_util.cpython-310.pyc new file mode 100644 index 0000000..d2f80e4 Binary files /dev/null and b/core/xhs_spider/xhs_utils/__pycache__/xhs_creator_util.cpython-310.pyc differ diff --git a/core/xhs_spider/xhs_utils/__pycache__/xhs_util.cpython-310.pyc b/core/xhs_spider/xhs_utils/__pycache__/xhs_util.cpython-310.pyc new file mode 100644 index 0000000..16dc7e1 Binary files /dev/null and b/core/xhs_spider/xhs_utils/__pycache__/xhs_util.cpython-310.pyc differ diff --git a/poster/__pycache__/__init__.cpython-310.pyc b/poster/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..c17ede2 Binary files /dev/null and b/poster/__pycache__/__init__.cpython-310.pyc differ diff --git a/poster/__pycache__/utils.cpython-310.pyc b/poster/__pycache__/utils.cpython-310.pyc new file mode 100644 index 0000000..ca6218d Binary files /dev/null and b/poster/__pycache__/utils.cpython-310.pyc differ diff --git a/poster/templates/__pycache__/__init__.cpython-310.pyc b/poster/templates/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..b201b9b Binary files /dev/null and b/poster/templates/__pycache__/__init__.cpython-310.pyc differ diff --git a/poster/templates/__pycache__/base_template.cpython-310.pyc b/poster/templates/__pycache__/base_template.cpython-310.pyc new file mode 100644 index 0000000..a659c73 Binary files /dev/null and b/poster/templates/__pycache__/base_template.cpython-310.pyc differ diff --git a/poster/templates/__pycache__/business_template.cpython-310.pyc b/poster/templates/__pycache__/business_template.cpython-310.pyc new file mode 100644 index 0000000..bd0396d Binary files /dev/null and b/poster/templates/__pycache__/business_template.cpython-310.pyc differ diff --git a/poster/templates/__pycache__/collage_template.cpython-310.pyc b/poster/templates/__pycache__/collage_template.cpython-310.pyc new file mode 100644 index 0000000..2dc2c8b Binary files /dev/null and b/poster/templates/__pycache__/collage_template.cpython-310.pyc differ diff --git a/poster/templates/__pycache__/vibrant_template.cpython-310.pyc b/poster/templates/__pycache__/vibrant_template.cpython-310.pyc new file mode 100644 index 0000000..24c1454 Binary files /dev/null and b/poster/templates/__pycache__/vibrant_template.cpython-310.pyc differ diff --git a/run_api.py b/run_api.py index 1d33d6c..2d0a05d 100644 --- a/run_api.py +++ b/run_api.py @@ -2,28 +2,127 @@ # -*- coding: utf-8 -*- """ -TravelContentCreator API服务启动脚本 +TravelContentCreator API 服务启动脚本(生产环境优化版) + +- 基于 uvicorn 官方 API 启动 FastAPI 应用。 +- 默认按「2 * CPU + 1」规则自动计算 worker 数,以充分利用多核性能。 +- 可选择使用 uvloop 作为事件循环,提升 I/O 性能(如未安装 uvloop 会自动降级)。 +- 支持通过环境变量或命令行参数覆盖默认配置,方便容器化部署。 """ -import uvicorn +from __future__ import annotations + import argparse import logging +import multiprocessing +import os +import sys +from typing import Any + +import uvicorn + + +def build_arg_parser() -> argparse.ArgumentParser: + """构造命令行解析器""" + cpu_cores = multiprocessing.cpu_count() + default_workers = cpu_cores * 2 + 1 + + parser = argparse.ArgumentParser(description="TravelContentCreator API 服务(生产环境)") + parser.add_argument("--host", default=os.getenv("HOST", "0.0.0.0"), help="监听主机地址") + parser.add_argument( + "--port", + type=int, + default=int(os.getenv("PORT", 8000)), + help="监听端口", + ) + parser.add_argument( + "--workers", + type=int, + default=int(os.getenv("WORKERS", default_workers)), + help="worker 进程数,默认 2*CPU + 1", + ) + parser.add_argument( + "--log-level", + default=os.getenv("LOG_LEVEL", "info"), + choices=[ + "critical", + "error", + "warning", + "info", + "debug", + "trace", + ], + help="日志级别", + ) + parser.add_argument( + "--proxy-headers", + action="store_true", + help="信任代理头(例如部署在 Nginx / Traefik 之后时开启)", + ) + parser.add_argument( + "--loop", + default=os.getenv("LOOP", "uvloop"), + choices=["uvloop", "asyncio"], + help="事件循环实现(uvloop 未安装时自动降级到 asyncio)", + ) + parser.add_argument( + "--timeout-keep-alive", + type=int, + default=int(os.getenv("TIMEOUT_KEEP_ALIVE", 5)), + help="Keep-Alive 超时时间 (秒)", + ) + return parser + + +def setup_logging(log_level: str = "info") -> None: + """初始化日志配置""" + logging.basicConfig( + level=getattr(logging, log_level.upper(), logging.INFO), + format="%(asctime)s | %(levelname)s | %(process)d | %(name)s | %(message)s", + datefmt="%Y-%m-%d %H:%M:%S", + stream=sys.stdout, + ) + + +def maybe_install_uvloop(enable: bool) -> None: + """若选择 uvloop 并且可用,则安装之""" + if not enable: + return + try: + import uvloop # type: ignore + + uvloop.install() + logging.getLogger(__name__).info("uvloop 已启用") + except ModuleNotFoundError: + logging.getLogger(__name__).warning("未检测到 uvloop,降级使用默认 asyncio 事件循环") + + +def run() -> None: # noqa: C901 # (函数较长但在此处可接受) + parser = build_arg_parser() + args = parser.parse_args() + + setup_logging(args.log_level) + maybe_install_uvloop(args.loop == "uvloop") + + logging.getLogger(__name__).info( + "启动 API 服务: http://%s:%d | workers=%d | loop=%s", + args.host, + args.port, + args.workers, + args.loop, + ) + + uvicorn.run( + "api.main:app", + host=args.host, + port=args.port, + workers=args.workers, + proxy_headers=args.proxy_headers, + log_level=args.log_level, + timeout_keep_alive=args.timeout_keep_alive, # type: ignore[arg-type] + loop="uvloop" if args.loop == "uvloop" else "asyncio", + ) + if __name__ == "__main__": - # 配置命令行参数 - parser = argparse.ArgumentParser(description="TravelContentCreator API服务") - parser.add_argument("--host", default="0.0.0.0", help="监听主机地址") - parser.add_argument("--port", type=int, default=8000, help="监听端口") - parser.add_argument("--reload", action="store_true", help="是否启用热重载") - parser.add_argument("--log-level", default="info", help="日志级别") - args = parser.parse_args() - - # 启动服务 - print(f"启动API服务,地址: {args.host}:{args.port}") - uvicorn.run( - "api.main:app", - host=args.host, - port=args.port, - reload=args.reload, - log_level=args.log_level - ) \ No newline at end of file + run() \ No newline at end of file diff --git a/tweet/__pycache__/__init__.cpython-310.pyc b/tweet/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..814cc96 Binary files /dev/null and b/tweet/__pycache__/__init__.cpython-310.pyc differ diff --git a/tweet/__pycache__/content_generator.cpython-310.pyc b/tweet/__pycache__/content_generator.cpython-310.pyc new file mode 100644 index 0000000..cfeeeb5 Binary files /dev/null and b/tweet/__pycache__/content_generator.cpython-310.pyc differ diff --git a/tweet/__pycache__/content_judger.cpython-310.pyc b/tweet/__pycache__/content_judger.cpython-310.pyc new file mode 100644 index 0000000..2aa4f5c Binary files /dev/null and b/tweet/__pycache__/content_judger.cpython-310.pyc differ diff --git a/tweet/__pycache__/topic_generator.cpython-310.pyc b/tweet/__pycache__/topic_generator.cpython-310.pyc new file mode 100644 index 0000000..91e9311 Binary files /dev/null and b/tweet/__pycache__/topic_generator.cpython-310.pyc differ diff --git a/tweet/__pycache__/topic_parser.cpython-310.pyc b/tweet/__pycache__/topic_parser.cpython-310.pyc new file mode 100644 index 0000000..e1ce0a6 Binary files /dev/null and b/tweet/__pycache__/topic_parser.cpython-310.pyc differ diff --git a/utils/__pycache__/__init__.cpython-310.pyc b/utils/__pycache__/__init__.cpython-310.pyc index ff9a401..ab9d4b2 100644 Binary files a/utils/__pycache__/__init__.cpython-310.pyc and b/utils/__pycache__/__init__.cpython-310.pyc differ diff --git a/utils/__pycache__/file_io.cpython-310.pyc b/utils/__pycache__/file_io.cpython-310.pyc index 374fb1c..10d06f4 100644 Binary files a/utils/__pycache__/file_io.cpython-310.pyc and b/utils/__pycache__/file_io.cpython-310.pyc differ diff --git a/utils/__pycache__/image_processor.cpython-310.pyc b/utils/__pycache__/image_processor.cpython-310.pyc new file mode 100644 index 0000000..bfe4777 Binary files /dev/null and b/utils/__pycache__/image_processor.cpython-310.pyc differ diff --git a/utils/__pycache__/prompts.cpython-310.pyc b/utils/__pycache__/prompts.cpython-310.pyc new file mode 100644 index 0000000..ba62694 Binary files /dev/null and b/utils/__pycache__/prompts.cpython-310.pyc differ