diff --git a/.env_local b/.env_local index bfdfcfc..101b05e 100644 --- a/.env_local +++ b/.env_local @@ -1,2 +1,2 @@ GEMINI_API_KEY=AIzaSyAO4zXFke1bqyrXd9-RGfKJTLerwLSFKww -GOOGLE_APPLICATION_CREDENTIALS="/workspace/Trinity/Litserve_LC_Prod/lc_stylist_agent/app/request.json" \ No newline at end of file + GOOGLE_APPLICATION_CREDENTIALS="/workspace/lc_stylist_agent/app/request.json" \ No newline at end of file diff --git a/.gitignore b/.gitignore index 8473f44..f7d96af 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,5 @@ app/core/__pycache__/ app/core/data/ .idea/ -*.sqlite3 \ No newline at end of file +*.sqlite3 +*.log \ No newline at end of file diff --git a/app/core/config.py b/app/core/config.py index 6dd45a3..924d530 100644 --- a/app/core/config.py +++ b/app/core/config.py @@ -1,8 +1,11 @@ +import os + from pydantic_settings import BaseSettings, SettingsConfigDict from pydantic import Field - # ⚠️ 注意: 您需要安装 pydantic-settings: pip install pydantic-settings +DEBUG = os.environ.get("DEBUG", True) + class Settings(BaseSettings): """ @@ -31,7 +34,10 @@ class Settings(BaseSettings): STYLIST_GUIDE_DIR: str = Field(default="/workspace/lc_stylist_agent/app/core/data/stylist_guide", description="风格指南文本目录") # 向量数据库配置参数 - VECTOR_DB_DIR: str = Field(default="./app/db", description="向量数据库目录") + if DEBUG: + VECTOR_DB_DIR: str = Field(default="./db", description="向量数据库目录") + else: + VECTOR_DB_DIR: str = Field(default="./app/db", description="向量数据库目录") COLLECTION_NAME: str = Field(default="lc_clothing_embedding", description="向量数据库集合名称") EMBEDDING_MODEL_NAME: str = Field(default="openai/clip-vit-base-patch32", description="CLIP嵌入模型名称") diff --git a/app/core/stylist_agent_server.py b/app/core/stylist_agent_server.py index a45e5f0..0c9323c 100644 --- a/app/core/stylist_agent_server.py +++ b/app/core/stylist_agent_server.py @@ -21,9 +21,9 @@ logger = logging.getLogger(__name__) class AsyncStylistAgent: CATEGORY_SET = {'Activewear', 'Watches', 'Shopping Totes', 'Underwear', 'Sunglasses', 'Dresses', 'Outerwear', 'Handbags', 'Backpacks', 'Belts', 'Hats', 'Skirts', 'Swimwear', 'Jewelry', 'Briefcases', 'Socks', 'Neckties', 'Pants', 'Suits', 'Shoes', 'Shirts & Tops', 'Scarves & Shawls'} - def __init__(self, local_db, max_len: int, gemini_model_name: str): + def __init__(self, local_db, max_len: int, gemini_model_name: str, outfit_id=str): # self.outfit_items: List[Dict[str, str]] = [] - self.outfit_id = str(uuid.uuid4()) + self.outfit_id = outfit_id self.gemini_client = genai.Client( vertexai=True, project='aida-461108', location='us-central1' ) diff --git a/app/core/system_prompt.py b/app/core/system_prompt.py index 169d3c7..7156586 100644 --- a/app/core/system_prompt.py +++ b/app/core/system_prompt.py @@ -1,4 +1,27 @@ -BASIC_PROMPT = """You are a professional, friendly, and insightful AI Styling Assistant. +BASIC_PROMPT = """""" +WOMEN_BASIC_PROMPT = """You are a professional, friendly, and insightful AI women's styling assistant. + +Your primary mission is to engage in a multi-turn conversation with the user to fully understand their dressing intent. You must adopt a professional yet approachable tone. + +CONVERSATION GOALS: +1. **Occasion:** Determine the specific event (e.g., romantic dinner, summer wedding, business meeting). +2. **Style:** Pinpoint the desired aesthetic (e.g., classic elegance, edgy, minimalist, bohemian). +3. **Vibe/Details:** Gather any mood or specific constraints (e.g., needs to be comfortable, requires light colors, no bare shoulders). +4. **Item Preference:** Ask the user if they have any specific preferences for an item type or silhouette (e.g., preference for a dress, skirt, tailored pants, or a particular neckline/length). + +GUIDANCE FOR RESPONSE GENERATION: +- After the user's initial request (e.g., "I want a chic outfit for dinner."), immediately reply with a friendly, targeted follow-up question to elicit the most crucial missing information (usually a combination of **Occasion** and **Style**). +- Be concise. Ask only 1 to 2 essential questions per turn. +- You must gather sufficient, clear intent before proceeding to actual clothing recommendations. + +OUTPUT FORMAT INSTRUCTION: +- **DO NOT** use any Markdown formatting whatsoever (e.g., do not use asterisks (*), bold text (**), lists, or code blocks). +- **ONLY** output the plain text response spoken by the AI Assistant. + +Example Follow-up (mimicking a conversational flow): +User: I want a chic outfit for dinner. +Your Response: Hey there! A chic dinner outfit, I love that! To give you the perfect recommendations, tell me: is this a romantic date, business dinner, or celebration with friends? And what's your go-to style vibe: classic elegance or something with more edge?""" +MEN_BASIC_PROMPT = """You are a professional, friendly, and insightful AI men's styling assistant. Your primary mission is to engage in a multi-turn conversation with the user to fully understand their dressing intent. You must adopt a professional yet approachable tone. @@ -30,4 +53,4 @@ JSON FIELD REQUIREMENTS: - **style (string):** The overall aesthetic description (e.g., "Classic elegance", "Modern minimalist", "Bohemian vibe", "Edgy and contemporary"). - **color_preference (string or list):** User's preferred or excluded colors/tones (e.g., "Light colors only", "Avoid deep shades", "['Cream', 'Pale Blue']", "No preference"). - **clothing_type (string):** User's preference for specific garment types, material, or silhouette (e.g., "Lightweight maxi dress", "Skirt with silk blouse", "Tailored wide-leg pants", "Floral print"). -- **vibe_or_details (string):** Any other details, mood requirements, or specific constraints (e.g., "Needs to be comfortable and breathable", "Accent on accessories", "Must cover shoulders").""" \ No newline at end of file +- **vibe_or_details (string):** Any other details, mood requirements, or specific constraints (e.g., "Needs to be comfortable and breathable", "Accent on accessories", "Must cover shoulders").""" diff --git a/app/logs/debug.log b/app/logs/debug.log deleted file mode 100644 index 23ce975..0000000 --- a/app/logs/debug.log +++ /dev/null @@ -1,1230 +0,0 @@ -2025-10-23 10:56:29,513 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 10:56:29,526 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 10:56:29,572 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 10:56:29,584 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 10:56:33,748 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 10:56:33,974 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 10:57:02,331 agent_server.py [line:44] INFO user_id: string -2025-10-23 10:57:02,332 agent_server.py [line:45] INFO num_outfits: 4 -2025-10-23 10:57:02,332 agent_server.py [line:46] INFO stylist_path: lanecarford/stylist_guide/crystal_en.md -2025-10-23 10:57:02,333 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 10:57:05,318 agent_server.py [line:53] INFO request_summary: ```json -{ - "occasion": "No preference", - "style": "No preference", - "color_preference": "No preference", - "clothing_type": "Chinese style cheongsam", - "vibe_or_details": "No preference" -} -``` -2025-10-23 10:57:05,364 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 10:57:10,230 agent_server.py [line:67] INFO data: {'status': 'ok', 'message': '', 'path': '', 'outfit_id': 'e5af07ec-592b-4557-a713-0fedd13c34fd'} -2025-10-23 10:57:10,789 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 10:57:23,727 agent_server.py [line:67] INFO data: {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/b8ae95ae-98ca-4ca9-bdea-3f444179589f.jpg', 'outfit_id': 'e5af07ec-592b-4557-a713-0fedd13c34fd'} -2025-10-23 10:57:24,139 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 10:57:31,576 agent_server.py [line:67] INFO data: {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/8954e478-6af6-4e2c-9a53-e67804e96808.jpg', 'outfit_id': 'e5af07ec-592b-4557-a713-0fedd13c34fd'} -2025-10-23 10:57:31,989 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 10:57:40,780 agent_server.py [line:67] INFO data: {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/359ef9d1-dc87-4f85-b893-91d90cb5e62d.jpg', 'outfit_id': 'e5af07ec-592b-4557-a713-0fedd13c34fd'} -2025-10-23 10:57:41,253 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 10:57:52,322 agent_server.py [line:67] INFO data: {'status': 'stop', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/49f3e346-9682-4c9a-a7c5-f71030567f83.jpg', 'outfit_id': 'e5af07ec-592b-4557-a713-0fedd13c34fd'} -2025-10-23 10:57:52,331 minio_client.py [line:105] INFO ✅ JSON file uploaded successfully to lanecarford/lc_stylist_agent_outfit_items/string/59623391-ab35-457e-a972-f1eafe197f64.json -2025-10-23 10:57:52,332 agent_server.py [line:67] INFO data: {'status': 'finish', 'message': 'Finish reason: Uploading the outfit json file is completed', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/59623391-ab35-457e-a972-f1eafe197f64.json', 'outfit_id': 'e5af07ec-592b-4557-a713-0fedd13c34fd'} -2025-10-23 10:57:52,338 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 10:57:57,268 agent_server.py [line:67] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': '', 'outfit_id': '395c0c00-d337-427b-be51-276a46846303'} -2025-10-23 10:57:57,549 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 10:58:19,991 agent_server.py [line:67] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/3ede3959-bfbd-42c0-9d2b-6b688d763eff.jpg', 'outfit_id': '395c0c00-d337-427b-be51-276a46846303'} -2025-10-23 10:58:20,319 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 10:58:31,851 agent_server.py [line:67] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/cb90d852-01c0-47d9-91f4-44c8d0e2450a.jpg', 'outfit_id': '395c0c00-d337-427b-be51-276a46846303'} -2025-10-23 10:58:32,524 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:01:02,248 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:01:02,251 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:01:02,302 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 11:01:02,305 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 11:01:06,358 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:01:06,591 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:02:16,850 agent_server.py [line:45] INFO request: {"user_id":"string","num_outfits":4,"stylist_path":"lanecarford/stylist_guide/crystal_en.md"} -2025-10-23 11:02:16,852 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:02:19,086 agent_server.py [line:51] INFO request_summary: ```json -{ - "occasion": "Not specified", - "style": "Chinese style", - "color_preference": "No preference", - "clothing_type": "Cheongsam (Qipao)", - "vibe_or_details": "Not specified" -} -``` -2025-10-23 11:02:23,320 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:02:28,142 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': '', 'path': '', 'outfit_id': '5a06077c-c11b-4676-8744-1741eb6786e3'} -2025-10-23 11:02:28,741 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:02:36,845 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/7ad46b7b-f91c-44a0-9c70-913052f5089b.jpg', 'outfit_id': '5a06077c-c11b-4676-8744-1741eb6786e3'} -2025-10-23 11:02:37,456 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:02:58,387 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/432e5511-aac5-4d2c-8188-e91a864dee42.jpg', 'outfit_id': '5a06077c-c11b-4676-8744-1741eb6786e3'} -2025-10-23 11:02:58,880 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:03:19,252 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/91b58c9d-f85a-4fe9-b97c-eb45d4ccf7d5.jpg', 'outfit_id': '5a06077c-c11b-4676-8744-1741eb6786e3'} -2025-10-23 11:03:19,815 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:03:44,211 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:03:44,216 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:03:44,256 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 11:03:44,261 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 11:03:44,265 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 11:03:44,270 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 11:03:48,045 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:03:48,322 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:12:12,633 agent_server.py [line:45] INFO request: {'user_id': 'string', 'num_outfits': 4, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 11:12:12,634 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:12:16,233 agent_server.py [line:51] INFO request_summary: ```json -{ - "occasion": "No preference", - "style": "Chinese style", - "color_preference": "No preference", - "clothing_type": "Cheongsam (Qipao)", - "vibe_or_details": "No preference" -} -``` -2025-10-23 11:12:16,288 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:12:22,718 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': '', 'path': '', 'outfit_id': '5baebe07-fa6b-4c3c-9d66-9ba225e8d05c'} -2025-10-23 11:12:24,073 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:12:47,690 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/b52246bb-bb64-42ff-8851-549bcea1a00d.jpg', 'outfit_id': '5baebe07-fa6b-4c3c-9d66-9ba225e8d05c'} -2025-10-23 11:12:48,231 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:13:04,273 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/f71cf5db-dc11-4103-9cf3-bf99ace695f8.jpg', 'outfit_id': '5baebe07-fa6b-4c3c-9d66-9ba225e8d05c'} -2025-10-23 11:13:04,878 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:13:58,911 agent_server.py [line:65] INFO data: {'status': 'stop', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/732aff3e-5c42-46dc-a46a-8a83459c3bae.jpg', 'outfit_id': '5baebe07-fa6b-4c3c-9d66-9ba225e8d05c'} -2025-10-23 11:13:58,923 minio_client.py [line:105] INFO ✅ JSON file uploaded successfully to lanecarford/lc_stylist_agent_outfit_items/string/be9b8fb7-ba78-4e24-95f6-c8da95a1cf31.json -2025-10-23 11:13:58,923 agent_server.py [line:65] INFO data: {'status': 'finish', 'message': 'Finish reason: Uploading the outfit json file is completed', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/be9b8fb7-ba78-4e24-95f6-c8da95a1cf31.json', 'outfit_id': '5baebe07-fa6b-4c3c-9d66-9ba225e8d05c'} -2025-10-23 11:13:58,928 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:14:04,216 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': '', 'outfit_id': '53bb6f9a-d991-46b2-a6e3-68b01194a84b'} -2025-10-23 11:14:04,535 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:14:17,199 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/57b044ec-d115-46cd-945a-e00cf6491bf2.jpg', 'outfit_id': '53bb6f9a-d991-46b2-a6e3-68b01194a84b'} -2025-10-23 11:14:17,548 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:14:46,099 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/330ad35b-86be-4f73-b241-005b75382bd4.jpg', 'outfit_id': '53bb6f9a-d991-46b2-a6e3-68b01194a84b'} -2025-10-23 11:14:46,514 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:15:05,135 agent_server.py [line:65] INFO data: {'status': 'stop', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/f1a706b2-286d-427d-908a-f3461897130e.jpg', 'outfit_id': '53bb6f9a-d991-46b2-a6e3-68b01194a84b'} -2025-10-23 11:15:05,148 minio_client.py [line:105] INFO ✅ JSON file uploaded successfully to lanecarford/lc_stylist_agent_outfit_items/string/ccb2ff08-8921-47ad-b244-511f35e825b4.json -2025-10-23 11:15:05,148 agent_server.py [line:65] INFO data: {'status': 'finish', 'message': 'Finish reason: Uploading the outfit json file is completed', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/ccb2ff08-8921-47ad-b244-511f35e825b4.json', 'outfit_id': '53bb6f9a-d991-46b2-a6e3-68b01194a84b'} -2025-10-23 11:15:05,156 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:15:09,346 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': '', 'outfit_id': '3e9e5ed0-3a63-45a1-8283-b1ddb929c536'} -2025-10-23 11:15:09,644 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:15:24,781 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/bfc789d0-bd41-49f3-8abd-e5f45d41f900.jpg', 'outfit_id': '3e9e5ed0-3a63-45a1-8283-b1ddb929c536'} -2025-10-23 11:15:25,273 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:15:37,273 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/e2dca4dc-f2b2-4b92-90dd-551278d0bc3b.jpg', 'outfit_id': '3e9e5ed0-3a63-45a1-8283-b1ddb929c536'} -2025-10-23 11:15:38,372 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:15:46,216 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/f6001b63-6efc-4cf2-8cfb-b41c07abe214.jpg', 'outfit_id': '3e9e5ed0-3a63-45a1-8283-b1ddb929c536'} -2025-10-23 11:15:47,935 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:16:07,814 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/55f358d6-7582-4757-ac12-2a4e1de7859d.jpg', 'outfit_id': '3e9e5ed0-3a63-45a1-8283-b1ddb929c536'} -2025-10-23 11:16:07,814 agent_server.py [line:65] INFO data: {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/55f358d6-7582-4757-ac12-2a4e1de7859d.jpg', 'outfit_id': '3e9e5ed0-3a63-45a1-8283-b1ddb929c536'} -2025-10-23 11:16:07,825 minio_client.py [line:105] INFO ✅ JSON file uploaded successfully to lanecarford/lc_stylist_agent_outfit_items/string/f9dc2f8e-43b4-45ee-8b43-07fd5d17a40e.json -2025-10-23 11:16:07,825 agent_server.py [line:65] INFO data: {'status': 'finish', 'message': 'Finish reason: Uploading the outfit json file is completed', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/f9dc2f8e-43b4-45ee-8b43-07fd5d17a40e.json', 'outfit_id': '3e9e5ed0-3a63-45a1-8283-b1ddb929c536'} -2025-10-23 11:16:07,831 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:16:11,658 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Reached max outfit length.', 'path': '', 'outfit_id': '96298a98-c882-42b9-abcb-497f29b43cdd'} -2025-10-23 11:16:12,207 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:16:27,292 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/5169274e-3b3c-4aad-8a63-9efb4a2af58f.jpg', 'outfit_id': '96298a98-c882-42b9-abcb-497f29b43cdd'} -2025-10-23 11:16:28,901 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:16:40,761 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/2c6dce9e-9d05-422d-bdc9-fba2fb6b1cf7.jpg', 'outfit_id': '96298a98-c882-42b9-abcb-497f29b43cdd'} -2025-10-23 11:16:41,512 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:17:00,513 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/74f5703d-c19a-421f-be8c-c592dd21ee2a.jpg', 'outfit_id': '96298a98-c882-42b9-abcb-497f29b43cdd'} -2025-10-23 11:17:02,199 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:17:33,140 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/dd1ddbaf-68ca-4e0c-8067-45f7412c2d58.jpg', 'outfit_id': '96298a98-c882-42b9-abcb-497f29b43cdd'} -2025-10-23 11:17:33,141 agent_server.py [line:65] INFO data: {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/dd1ddbaf-68ca-4e0c-8067-45f7412c2d58.jpg', 'outfit_id': '96298a98-c882-42b9-abcb-497f29b43cdd'} -2025-10-23 11:17:33,154 minio_client.py [line:105] INFO ✅ JSON file uploaded successfully to lanecarford/lc_stylist_agent_outfit_items/string/4477404f-a73c-40ce-a712-a3c7ff2109a6.json -2025-10-23 11:17:33,154 agent_server.py [line:65] INFO data: {'status': 'finish', 'message': 'Finish reason: Uploading the outfit json file is completed', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/4477404f-a73c-40ce-a712-a3c7ff2109a6.json', 'outfit_id': '96298a98-c882-42b9-abcb-497f29b43cdd'} -2025-10-23 11:17:33,155 agent_server.py [line:61] INFO ---- Final Recommendation Results --- -2025-10-23 11:18:28,131 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:18:28,173 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:18:28,176 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 11:18:28,186 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 11:18:28,219 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 11:18:28,228 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 11:18:32,277 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:18:32,897 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:19:27,634 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:19:27,657 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:19:27,680 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 11:19:27,689 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 11:19:27,701 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 11:19:27,711 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 11:19:31,006 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:19:31,794 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:20:01,289 agent_server.py [line:70] INFO request: {'user_id': 'string', 'num_outfits': 4, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 11:20:01,290 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:20:05,061 agent_server.py [line:76] INFO request_summary: ```json -{ - "occasion": "Not specified", - "style": "Not specified", - "color_preference": "No preference", - "clothing_type": "Chinese style cheongsam", - "vibe_or_details": "Chinese aesthetic" -} -``` -2025-10-23 11:20:05,061 agent_server.py [line:102] INFO --- Started 4 concurrent outfit generation tasks. --- -2025-10-23 11:20:05,118 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:20:05,127 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:20:05,135 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:20:05,143 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:20:09,011 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:20:09,016 agent_server.py [line:135] INFO data: {'status': 'ok', 'message': '', 'path': '', 'outfit_id': '2c810463-b7ca-4b0d-b421-354bcfca904c'} -2025-10-23 11:20:09,057 minio_client.py [line:105] INFO ✅ JSON file uploaded successfully to lanecarford/lc_stylist_agent_outfit_items/string/6e8d8ac5-c1ea-4c7f-baa5-0c4fc7dd8b67.json -2025-10-23 11:20:09,057 agent_server.py [line:135] INFO data: {'status': 'stop', 'message': 'Finish reason: Duplicate item selected.', 'path': '', 'outfit_id': 'fa846539-1752-4e25-bf9f-56fba4b2d79d'} -2025-10-23 11:20:09,058 agent_server.py [line:135] INFO data: {'status': 'finish', 'message': 'Finish reason: Uploading the outfit json file is completed', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/6e8d8ac5-c1ea-4c7f-baa5-0c4fc7dd8b67.json', 'outfit_id': 'fa846539-1752-4e25-bf9f-56fba4b2d79d'} -2025-10-23 11:20:09,058 agent_server.py [line:113] INFO Outfit fa846539-1752-4e25-bf9f-56fba4b2d79d completed. Total done: 1/4 -2025-10-23 11:20:10,192 minio_client.py [line:105] INFO ✅ JSON file uploaded successfully to lanecarford/lc_stylist_agent_outfit_items/string/d5d0d363-026d-4369-84dd-5b40e7ae5817.json -2025-10-23 11:20:10,193 agent_server.py [line:135] INFO data: {'status': 'stop', 'message': 'Finish reason: Duplicate item selected.', 'path': '', 'outfit_id': '918521d9-aaf1-496b-8d4a-1b6fe0797589'} -2025-10-23 11:20:10,193 agent_server.py [line:135] INFO data: {'status': 'finish', 'message': 'Finish reason: Uploading the outfit json file is completed', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/d5d0d363-026d-4369-84dd-5b40e7ae5817.json', 'outfit_id': '918521d9-aaf1-496b-8d4a-1b6fe0797589'} -2025-10-23 11:20:10,193 agent_server.py [line:113] INFO Outfit 918521d9-aaf1-496b-8d4a-1b6fe0797589 completed. Total done: 2/4 -2025-10-23 11:20:11,527 minio_client.py [line:105] INFO ✅ JSON file uploaded successfully to lanecarford/lc_stylist_agent_outfit_items/string/cb7394f5-37c3-4df5-9a6e-b919fbaa8343.json -2025-10-23 11:20:11,527 agent_server.py [line:135] INFO data: {'status': 'stop', 'message': 'Finish reason: Duplicate item selected.', 'path': '', 'outfit_id': '10b237b1-83bf-4e6f-afec-4d44e94efd3f'} -2025-10-23 11:20:11,527 agent_server.py [line:135] INFO data: {'status': 'finish', 'message': 'Finish reason: Uploading the outfit json file is completed', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/cb7394f5-37c3-4df5-9a6e-b919fbaa8343.json', 'outfit_id': '10b237b1-83bf-4e6f-afec-4d44e94efd3f'} -2025-10-23 11:20:11,527 agent_server.py [line:113] INFO Outfit 10b237b1-83bf-4e6f-afec-4d44e94efd3f completed. Total done: 3/4 -2025-10-23 11:20:46,654 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:20:46,658 agent_server.py [line:135] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/c2feb0de-65f0-47c8-b880-387cee2d29da.jpg', 'outfit_id': '2c810463-b7ca-4b0d-b421-354bcfca904c'} -2025-10-23 11:21:34,535 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:21:34,539 agent_server.py [line:135] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/14bce83e-e756-42ea-bbdf-ce9871daf50a.jpg', 'outfit_id': '2c810463-b7ca-4b0d-b421-354bcfca904c'} -2025-10-23 11:21:59,202 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:21:59,206 agent_server.py [line:135] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/67ead470-42ba-492e-8d21-ed829e24ba4b.jpg', 'outfit_id': '2c810463-b7ca-4b0d-b421-354bcfca904c'} -2025-10-23 11:22:11,106 minio_client.py [line:105] INFO ✅ JSON file uploaded successfully to lanecarford/lc_stylist_agent_outfit_items/string/2005d954-2392-4b17-8d8a-b285bc7bf38a.json -2025-10-23 11:22:11,106 agent_server.py [line:135] INFO data: {'status': 'stop', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/0777d807-5646-4ce0-90b4-c1416637ef04.jpg', 'outfit_id': '2c810463-b7ca-4b0d-b421-354bcfca904c'} -2025-10-23 11:22:11,106 agent_server.py [line:135] INFO data: {'status': 'finish', 'message': 'Finish reason: Uploading the outfit json file is completed', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/2005d954-2392-4b17-8d8a-b285bc7bf38a.json', 'outfit_id': '2c810463-b7ca-4b0d-b421-354bcfca904c'} -2025-10-23 11:22:11,107 agent_server.py [line:113] INFO Outfit 2c810463-b7ca-4b0d-b421-354bcfca904c completed. Total done: 4/4 -2025-10-23 11:22:11,107 agent_server.py [line:124] INFO --- Final Recommendation Results: All tasks finished and merged. --- -2025-10-23 11:24:50,359 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:24:50,371 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:24:50,404 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 11:24:50,413 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 11:24:50,416 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 11:24:50,425 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 11:24:54,163 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:24:55,305 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:25:01,832 agent_server.py [line:70] INFO request: {'user_id': 'string', 'num_outfits': 4, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 11:25:01,833 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:25:05,825 agent_server.py [line:76] INFO request_summary: ```json -{ - "occasion": "Not specified, assistant is asking for details (e.g., special event, celebration)", - "style": "Chinese style, assistant is asking for more details (e.g., traditional, modern, elegant, formal, casual, contemporary)", - "color_preference": "Not specified", - "clothing_type": "Cheongsam", - "vibe_or_details": "Chinese aesthetic" -} -``` -2025-10-23 11:25:05,826 agent_server.py [line:102] INFO --- Started 4 concurrent outfit generation tasks. --- -2025-10-23 11:25:05,866 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:25:05,873 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:25:05,879 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:25:05,884 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:25:26,001 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:25:26,007 agent_server.py [line:135] INFO data: {'status': 'ok', 'message': '', 'path': '', 'outfit_id': 'ad68ad14-b881-4281-b044-8b7d6c63a7e6'} -2025-10-23 11:25:43,263 minio_client.py [line:105] INFO ✅ JSON file uploaded successfully to lanecarford/lc_stylist_agent_outfit_items/string/8018ca0e-c597-498f-b6a0-25927e758d5b.json -2025-10-23 11:26:53,700 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:26:53,744 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 11:26:53,753 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 11:26:53,791 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:26:53,837 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 11:26:53,847 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 11:26:58,122 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:26:58,122 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:27:06,240 agent_server.py [line:45] INFO request: {'user_id': 'string', 'num_outfits': 4, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 11:27:06,242 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:27:08,623 agent_server.py [line:51] INFO request_summary: ```json -{ - "occasion": null, - "style": null, - "color_preference": "No preference", - "clothing_type": "Chinese style cheongsam", - "vibe_or_details": null -} -``` -2025-10-23 11:27:08,688 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:27:15,181 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': '', 'path': '', 'outfit_id': '4ace98e2-fc3c-4da1-8a66-b1f18358cdd1'} -2025-10-23 11:27:15,182 agent_server.py [line:65] INFO data: {'status': None, 'message': '', 'path': '', 'outfit_id': '4ace98e2-fc3c-4da1-8a66-b1f18358cdd1'} -2025-10-23 11:27:15,654 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:27:23,943 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/372257a1-75a2-4f58-8f51-bffb84ac949f.jpg', 'outfit_id': '4ace98e2-fc3c-4da1-8a66-b1f18358cdd1'} -2025-10-23 11:27:24,367 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:27:49,603 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/1dc4d364-3d80-4258-afc8-a0e1026d07eb.jpg', 'outfit_id': '4ace98e2-fc3c-4da1-8a66-b1f18358cdd1'} -2025-10-23 11:27:50,012 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:28:35,706 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/55c2199b-a6fc-4ec5-9f9b-a355cf6a0c45.jpg', 'outfit_id': '4ace98e2-fc3c-4da1-8a66-b1f18358cdd1'} -2025-10-23 11:28:36,168 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:29:03,107 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/32ba57ef-c0f5-4127-93a1-67a363b698d7.jpg', 'outfit_id': '4ace98e2-fc3c-4da1-8a66-b1f18358cdd1'} -2025-10-23 11:29:03,108 agent_server.py [line:65] INFO data: {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/32ba57ef-c0f5-4127-93a1-67a363b698d7.jpg', 'outfit_id': '4ace98e2-fc3c-4da1-8a66-b1f18358cdd1'} -2025-10-23 11:29:03,132 minio_client.py [line:105] INFO ✅ JSON file uploaded successfully to lanecarford/lc_stylist_agent_outfit_items/string/bdada992-5da4-4a4b-8313-39c2cd18ebee.json -2025-10-23 11:29:03,133 agent_server.py [line:65] INFO data: {'status': 'finish', 'message': 'Finish reason: Uploading the outfit json file is completed', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/bdada992-5da4-4a4b-8313-39c2cd18ebee.json', 'outfit_id': '4ace98e2-fc3c-4da1-8a66-b1f18358cdd1'} -2025-10-23 11:29:03,139 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:29:06,431 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Reached max outfit length.', 'path': '', 'outfit_id': 'd156fb58-e9b1-47f2-b9c8-15d6b50f38e3'} -2025-10-23 11:29:06,738 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:29:12,217 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/4461112f-ba84-441f-a557-bf48491c0a50.jpg', 'outfit_id': 'd156fb58-e9b1-47f2-b9c8-15d6b50f38e3'} -2025-10-23 11:29:12,593 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:29:52,020 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/310d14c6-e5f7-4f7a-a091-df7c23f349bd.jpg', 'outfit_id': 'd156fb58-e9b1-47f2-b9c8-15d6b50f38e3'} -2025-10-23 11:29:52,501 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:30:26,208 agent_server.py [line:65] INFO data: {'status': 'stop', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/f196dcbb-e60e-4bc1-9c04-db0744a86317.jpg', 'outfit_id': 'd156fb58-e9b1-47f2-b9c8-15d6b50f38e3'} -2025-10-23 11:30:26,219 minio_client.py [line:105] INFO ✅ JSON file uploaded successfully to lanecarford/lc_stylist_agent_outfit_items/string/d9ee3b3d-7f8b-431a-a860-948157c3997f.json -2025-10-23 11:30:26,219 agent_server.py [line:65] INFO data: {'status': 'finish', 'message': 'Finish reason: Uploading the outfit json file is completed', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/d9ee3b3d-7f8b-431a-a860-948157c3997f.json', 'outfit_id': 'd156fb58-e9b1-47f2-b9c8-15d6b50f38e3'} -2025-10-23 11:30:26,224 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:30:31,001 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': '', 'outfit_id': 'ccecd1dc-ddcb-421c-a6a2-6448c89c3e2b'} -2025-10-23 11:30:31,303 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:30:49,896 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/5aa90e6b-d88b-4cd5-953b-95a3b83c0e1a.jpg', 'outfit_id': 'ccecd1dc-ddcb-421c-a6a2-6448c89c3e2b'} -2025-10-23 11:30:50,305 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:31:00,222 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/6766500f-e68b-4e78-a2c4-d1f471a336e6.jpg', 'outfit_id': 'ccecd1dc-ddcb-421c-a6a2-6448c89c3e2b'} -2025-10-23 11:31:00,611 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:31:36,207 agent_server.py [line:65] INFO data: {'status': 'stop', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/d6722e1c-b416-4f2f-a451-654380c259ce.jpg', 'outfit_id': 'ccecd1dc-ddcb-421c-a6a2-6448c89c3e2b'} -2025-10-23 11:31:36,218 minio_client.py [line:105] INFO ✅ JSON file uploaded successfully to lanecarford/lc_stylist_agent_outfit_items/string/29f27155-ee33-4abf-b953-feaeab4dddad.json -2025-10-23 11:31:36,218 agent_server.py [line:65] INFO data: {'status': 'finish', 'message': 'Finish reason: Uploading the outfit json file is completed', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/29f27155-ee33-4abf-b953-feaeab4dddad.json', 'outfit_id': 'ccecd1dc-ddcb-421c-a6a2-6448c89c3e2b'} -2025-10-23 11:31:36,223 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:31:39,234 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': '', 'outfit_id': 'f4cb025a-3472-4951-8a1f-92b661b28e8c'} -2025-10-23 11:31:39,566 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:31:45,494 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/9a99e594-0a0d-4b6b-ab2b-d9af1127a355.jpg', 'outfit_id': 'f4cb025a-3472-4951-8a1f-92b661b28e8c'} -2025-10-23 11:31:45,858 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:32:02,528 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/98191298-4ac1-4be8-bc0b-6e065b0a5263.jpg', 'outfit_id': 'f4cb025a-3472-4951-8a1f-92b661b28e8c'} -2025-10-23 11:32:02,915 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:32:33,491 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/659e56c9-5c7f-4199-9427-c39a52a57ded.jpg', 'outfit_id': 'f4cb025a-3472-4951-8a1f-92b661b28e8c'} -2025-10-23 11:32:33,943 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:33:23,443 agent_server.py [line:65] INFO data: {'status': 'stop', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/bb779d0c-d0a4-4718-bd0f-c0746a75b6e9.jpg', 'outfit_id': 'f4cb025a-3472-4951-8a1f-92b661b28e8c'} -2025-10-23 11:33:23,455 minio_client.py [line:105] INFO ✅ JSON file uploaded successfully to lanecarford/lc_stylist_agent_outfit_items/string/dbecf137-1b05-40fb-939c-8cca26cd9442.json -2025-10-23 11:33:23,455 agent_server.py [line:65] INFO data: {'status': 'finish', 'message': 'Finish reason: Uploading the outfit json file is completed', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/dbecf137-1b05-40fb-939c-8cca26cd9442.json', 'outfit_id': 'f4cb025a-3472-4951-8a1f-92b661b28e8c'} -2025-10-23 11:33:23,455 agent_server.py [line:61] INFO ---- Final Recommendation Results --- -2025-10-23 13:25:28,620 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:25:28,663 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:25:28,665 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 13:25:28,675 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 13:25:28,708 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 13:25:28,717 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 13:25:32,800 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:25:32,869 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:25:37,723 agent_server.py [line:46] INFO request: {'user_id': 'string', 'num_outfits': 4, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 13:25:37,724 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:25:40,943 agent_server.py [line:52] INFO request_summary: ```json -{ - "occasion": "Not specified", - "style": "Chinese traditional (cheongsam)", - "color_preference": "No preference", - "clothing_type": "Cheongsam (旗袍)", - "vibe_or_details": "Chinese style" -} -``` -2025-10-23 13:25:47,625 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:25:49,542 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:25:50,814 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:25:52,159 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:26:01,351 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:26:01,391 minio_client.py [line:105] INFO ✅ JSON file uploaded successfully to lanecarford/lc_stylist_agent_outfit_items/string/f2c7668d-e445-4416-bb64-b200f2835e40.json -2025-10-23 13:26:01,421 minio_client.py [line:105] INFO ✅ JSON file uploaded successfully to lanecarford/lc_stylist_agent_outfit_items/string/f2a64497-9b91-4bbc-ac44-325e49db7b60.json -2025-10-23 13:26:01,452 minio_client.py [line:105] INFO ✅ JSON file uploaded successfully to lanecarford/lc_stylist_agent_outfit_items/string/a152d27a-06dd-4b10-9329-f85807158703.json -2025-10-23 13:27:13,857 minio_client.py [line:105] INFO ✅ JSON file uploaded successfully to lanecarford/lc_stylist_agent_outfit_items/string/61979b6f-4627-4e6c-b3b3-6cb5a2e30064.json -2025-10-23 13:28:06,446 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:28:06,492 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 13:28:06,497 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:28:06,502 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 13:28:06,544 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 13:28:06,553 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 13:28:11,341 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:28:11,585 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:28:14,248 agent_server.py [line:46] INFO request: {'user_id': 'string', 'num_outfits': 4, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 13:28:14,248 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:28:20,805 agent_server.py [line:52] INFO request_summary: ```json -{ - "occasion": "Not specified", - "style": "Chinese style", - "color_preference": "No preference", - "clothing_type": "Cheongsam", - "vibe_or_details": "No specific details" -} -``` -2025-10-23 13:28:25,126 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:28:26,577 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:28:27,659 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:28:28,798 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:28:39,554 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:29:24,681 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:29:54,405 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:29:54,431 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:29:54,451 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 13:29:54,460 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 13:29:54,475 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 13:29:54,485 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 13:29:58,510 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:29:59,200 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:30:29,611 agent_server.py [line:46] INFO request: {'user_id': 'string', 'num_outfits': 4, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 13:30:29,612 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:30:33,707 agent_server.py [line:52] INFO request_summary: ```json -{ - "occasion": "Special event or celebration", - "style": "Chinese traditional elegance", - "color_preference": "No preference", - "clothing_type": "Cheongsam (qipao), Chinese style", - "vibe_or_details": "Elegant and formal" -} -``` -2025-10-23 13:30:42,522 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:30:57,725 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:31:01,957 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:31:04,104 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:31:16,166 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:31:41,077 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:31:50,086 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:43:46,382 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:43:46,412 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:43:46,427 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 13:43:46,436 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 13:43:46,456 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 13:43:46,466 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 13:43:51,446 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:43:52,394 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 4, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 13:43:52,395 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:43:56,097 agent_server.py [line:53] INFO request_summary: ```json -{ - "occasion": "Not specified", - "style": "Chinese style", - "color_preference": "No preference", - "clothing_type": "Cheongsam", - "vibe_or_details": "Traditional Chinese aesthetics" -} -``` -2025-10-23 13:43:56,098 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:43:56,172 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:43:56,228 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:43:56,283 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:43:58,756 stylist_agent_server.py [line:274] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'dce4e9c0-a5be-4268-adff-9552caddd22f'} -2025-10-23 13:43:58,757 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:43:58,765 stylist_agent_server.py [line:274] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'bc602866-1120-4882-bba3-31bfe684e049'} -2025-10-23 13:43:58,765 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:43:58,770 stylist_agent_server.py [line:274] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '0ceb3eb5-8020-4600-97d3-0f50a5e0983b'} -2025-10-23 13:43:58,771 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:43:58,776 stylist_agent_server.py [line:274] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'b4636bcf-6fe6-4707-90c2-e75857957644'} -2025-10-23 13:43:58,777 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:44:02,849 stylist_agent_server.py [line:364] INFO {'status': 'ok', 'message': '', 'path': '', 'outfit_id': '0ceb3eb5-8020-4600-97d3-0f50a5e0983b'} -2025-10-23 13:44:03,381 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:44:03,415 stylist_agent_server.py [line:364] INFO {'status': 'ok', 'message': '', 'path': '', 'outfit_id': 'bc602866-1120-4882-bba3-31bfe684e049'} -2025-10-23 13:44:03,798 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:44:04,985 stylist_agent_server.py [line:364] INFO {'status': 'ok', 'message': '', 'path': '', 'outfit_id': 'dce4e9c0-a5be-4268-adff-9552caddd22f'} -2025-10-23 13:44:05,342 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:44:05,374 stylist_agent_server.py [line:364] INFO {'status': 'ok', 'message': '', 'path': '', 'outfit_id': 'b4636bcf-6fe6-4707-90c2-e75857957644'} -2025-10-23 13:44:05,835 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:44:11,594 stylist_agent_server.py [line:364] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/bcff7784-855a-4650-a54c-0f08fa0c8c95.jpg', 'outfit_id': 'bc602866-1120-4882-bba3-31bfe684e049'} -2025-10-23 13:44:11,911 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:44:15,744 stylist_agent_server.py [line:364] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/23e31943-ece7-4a62-87c5-b31818a4b811.jpg', 'outfit_id': '0ceb3eb5-8020-4600-97d3-0f50a5e0983b'} -2025-10-23 13:44:16,113 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:44:16,432 stylist_agent_server.py [line:364] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/eff89bcf-15d6-45a9-838f-fc667d664fda.jpg', 'outfit_id': 'b4636bcf-6fe6-4707-90c2-e75857957644'} -2025-10-23 13:44:16,770 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:44:20,357 stylist_agent_server.py [line:341] INFO {'status': 'stop', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/5de155d0-56a6-43e8-a2f1-7538fce86220.jpg', 'outfit_id': 'bc602866-1120-4882-bba3-31bfe684e049'} -2025-10-23 13:44:20,358 stylist_agent_server.py [line:398] INFO {'status': 'stop', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/5de155d0-56a6-43e8-a2f1-7538fce86220.jpg', 'outfit_id': 'bc602866-1120-4882-bba3-31bfe684e049'} -2025-10-23 13:44:25,524 stylist_agent_server.py [line:364] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/a92afc54-a169-4f17-97b1-a347b01f65e5.jpg', 'outfit_id': 'b4636bcf-6fe6-4707-90c2-e75857957644'} -2025-10-23 13:44:25,895 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:44:25,958 stylist_agent_server.py [line:364] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/d8551497-07a3-43aa-8b0e-f7d3fdbaecd3.jpg', 'outfit_id': '0ceb3eb5-8020-4600-97d3-0f50a5e0983b'} -2025-10-23 13:44:26,434 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:44:33,940 stylist_agent_server.py [line:364] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/77998525-5fca-4a9a-abc3-57ab0bd6d906.jpg', 'outfit_id': 'dce4e9c0-a5be-4268-adff-9552caddd22f'} -2025-10-23 13:44:34,274 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:44:41,417 stylist_agent_server.py [line:364] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/bd4e3dae-38c5-46a5-ace1-0981d2a824c0.jpg', 'outfit_id': 'b4636bcf-6fe6-4707-90c2-e75857957644'} -2025-10-23 13:44:41,830 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:44:41,861 stylist_agent_server.py [line:364] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/04c2e2d1-24c7-4770-8501-448624327e13.jpg', 'outfit_id': '0ceb3eb5-8020-4600-97d3-0f50a5e0983b'} -2025-10-23 13:44:42,284 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:44:44,902 stylist_agent_server.py [line:364] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/d4f54181-4f07-4ca1-ad89-45fcea73dc65.jpg', 'outfit_id': 'dce4e9c0-a5be-4268-adff-9552caddd22f'} -2025-10-23 13:44:45,255 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:44:55,768 stylist_agent_server.py [line:364] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/5bd19a7c-2c9e-405b-896b-84f2169c1c3a.jpg', 'outfit_id': 'b4636bcf-6fe6-4707-90c2-e75857957644'} -2025-10-23 13:44:55,768 stylist_agent_server.py [line:385] INFO {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/5bd19a7c-2c9e-405b-896b-84f2169c1c3a.jpg'} -2025-10-23 13:44:55,778 stylist_agent_server.py [line:398] INFO {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/5bd19a7c-2c9e-405b-896b-84f2169c1c3a.jpg'} -2025-10-23 13:44:58,356 stylist_agent_server.py [line:364] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/b329df14-9b79-4ca5-8831-1a306acfed20.jpg', 'outfit_id': 'dce4e9c0-a5be-4268-adff-9552caddd22f'} -2025-10-23 13:44:58,787 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:45:01,119 stylist_agent_server.py [line:341] INFO {'status': 'stop', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/1cd1803c-5f51-4961-a4f2-2acd3e0d8294.jpg', 'outfit_id': '0ceb3eb5-8020-4600-97d3-0f50a5e0983b'} -2025-10-23 13:45:01,120 stylist_agent_server.py [line:398] INFO {'status': 'stop', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/1cd1803c-5f51-4961-a4f2-2acd3e0d8294.jpg', 'outfit_id': '0ceb3eb5-8020-4600-97d3-0f50a5e0983b'} -2025-10-23 13:45:20,358 stylist_agent_server.py [line:364] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/7fed1c7b-9efd-41fa-a335-182c310ea611.jpg', 'outfit_id': 'dce4e9c0-a5be-4268-adff-9552caddd22f'} -2025-10-23 13:45:20,358 stylist_agent_server.py [line:385] INFO {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/7fed1c7b-9efd-41fa-a335-182c310ea611.jpg'} -2025-10-23 13:45:20,359 stylist_agent_server.py [line:398] INFO {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/7fed1c7b-9efd-41fa-a335-182c310ea611.jpg'} -2025-10-23 13:54:25,342 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:54:25,366 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:54:25,388 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 13:54:25,397 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 13:54:25,411 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 13:54:25,420 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 13:54:29,582 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:54:54,573 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 4, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 13:54:54,574 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:54:57,710 agent_server.py [line:53] INFO request_summary: ```json -{ - "occasion": "No preference", - "style": "Chinese style", - "color_preference": "No preference", - "clothing_type": "Cheongsam", - "vibe_or_details": "No preference" -} -``` -2025-10-23 13:54:57,711 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:54:57,767 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:54:57,819 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:54:57,872 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:54:57,954 stylist_agent_server.py [line:274] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '6b22e935-0db7-4837-8e0f-6e2b8d1928c8'} -2025-10-23 13:54:57,954 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:54:57,958 stylist_agent_server.py [line:274] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '9a6a2b1a-e04e-491d-83a3-9d2eded56584'} -2025-10-23 13:54:57,959 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:54:57,963 stylist_agent_server.py [line:274] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'fbdba0ee-bf25-4487-a88f-29d00507f248'} -2025-10-23 13:54:57,964 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:54:57,970 stylist_agent_server.py [line:274] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'b1b256ce-0648-44b1-abe4-10c9c96e461b'} -2025-10-23 13:54:57,970 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:05:50,606 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:05:50,606 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:05:50,651 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 14:05:50,651 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 14:05:50,660 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 14:05:50,660 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 14:05:55,033 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:06:00,209 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 4, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 14:06:00,210 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:06:07,708 agent_server.py [line:53] INFO request_summary: ```json -{ - "occasion": "Unspecified", - "style": "Chinese style", - "color_preference": "No preference", - "clothing_type": "Cheongsam", - "vibe_or_details": "No additional details" -} -``` -2025-10-23 14:06:07,709 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:06:07,765 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:06:07,819 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:06:07,872 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:06:07,953 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'eb372841-06de-4441-a156-5d1e53c1203c', 'items': []} -2025-10-23 14:06:07,953 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:06:07,958 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'f9dde999-80c2-46d2-970d-78e28410bd68', 'items': []} -2025-10-23 14:06:07,959 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:06:07,963 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '694d1893-9ee9-48b0-ae4e-5b602c13d82d', 'items': []} -2025-10-23 14:06:07,964 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:06:07,969 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'c6322143-7b86-440f-97a4-d6568e4da393', 'items': []} -2025-10-23 14:06:07,970 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:07:15,894 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:07:43,086 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:08:03,031 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:09:36,436 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:09:36,445 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:09:36,482 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 14:09:36,491 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 14:09:36,492 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 14:09:36,501 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 14:09:41,297 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:09:49,328 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 4, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 14:09:49,329 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:09:53,829 agent_server.py [line:53] INFO request_summary: ```json -{ - "occasion": "No preference", - "style": "Chinese style", - "color_preference": "No preference", - "clothing_type": "Cheongsam (Qipao)", - "vibe_or_details": "Chinese cultural aesthetic" -} -``` -2025-10-23 14:09:53,830 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:09:53,887 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:09:53,940 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:09:53,993 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:09:54,083 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '60416e04-6303-41e7-a086-945e03e5d215', 'items': []} -2025-10-23 14:09:54,083 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:09:54,088 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '650a6975-7f43-489e-964a-8befba246585', 'items': []} -2025-10-23 14:09:54,088 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:09:54,093 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'e6988ddf-410f-407f-a664-107e27004a6d', 'items': []} -2025-10-23 14:09:54,093 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:09:54,098 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '24986e27-f964-4d27-8a13-417d87f3cf9a', 'items': []} -2025-10-23 14:09:54,098 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:10:03,704 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:11:55,714 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:11:55,762 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 14:11:55,763 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:11:55,772 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 14:11:55,809 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 14:11:55,819 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 14:12:00,397 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:12:13,190 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 4, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 14:12:13,191 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:12:17,090 agent_server.py [line:53] INFO request_summary: ```json -{ - "occasion": "Not specified", - "style": "Chinese traditional aesthetic", - "color_preference": "No preference", - "clothing_type": "Cheongsam", - "vibe_or_details": "Chinese style" -} -``` -2025-10-23 14:12:17,090 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:12:17,146 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:12:17,201 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:12:17,256 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:12:17,409 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '109380f4-2492-4d00-ac1b-95a58d732df7', 'items': []} -2025-10-23 14:12:17,409 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:12:17,414 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'f3721f46-c549-4189-a7a4-280d7317e557', 'items': []} -2025-10-23 14:12:17,414 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:12:17,419 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'd2204d6e-cbfa-4afd-b210-a7ae5b608916', 'items': []} -2025-10-23 14:12:17,420 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:12:17,426 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'ef5d6386-1f0d-4384-b190-16eb78872153', 'items': []} -2025-10-23 14:12:17,426 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:12:38,274 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:12:56,300 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:13:03,927 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:13:10,972 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:13:13,194 stylist_agent_server.py [line:356] INFO {'status': 'stop', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/9dd7568b-75e5-48e0-8f6f-588b49dd607f.jpg', 'outfit_id': 'd2204d6e-cbfa-4afd-b210-a7ae5b608916', 'items': ['EKO522']} -2025-10-23 14:13:13,194 stylist_agent_server.py [line:357] INFO [{'item_id': 'EKO522', 'category': 'Dresses', 'gpt_description': 'Slim-fit cheongsam dress in a vibrant red silk blend, featuring intricate gold and emerald floral embroidery that evokes a traditional Chinese aesthetic. The dress has a classic mandarin collar and short sleeves, serving as the central piece and primary pattern for the outfit.', 'description': "Add an edgy urban touch to your wardrobe with this pre-styled dress from alexanderwang which can be worn as a dress when closed or as a blazer when open. It is intentionally tucked at the yoke to evoke a layered look, underscoring this collection's theme of morphed tailoring, a study in the evolution of the garment.", 'image_path': 'EKO522.jpg'}] -2025-10-23 14:13:22,047 stylist_agent_server.py [line:356] INFO {'status': 'stop', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/f69e6a38-6230-4398-ac81-7d3fbcc7d314.jpg', 'outfit_id': 'f3721f46-c549-4189-a7a4-280d7317e557', 'items': ['EKO522']} -2025-10-23 14:13:22,047 stylist_agent_server.py [line:357] INFO [{'item_id': 'EKO522', 'category': 'Dresses', 'gpt_description': "A slim-fit, floor-length Cheongsam dress in a rich sapphire blue silk, featuring an intricate traditional Chinese floral pattern embroidered in gold and deep red hues. It has a classic mandarin collar, frog button fastenings, and a high side slit for a traditional yet elegant silhouette. This dress serves as the primary garment, embodying the Chinese traditional aesthetic and setting the 'heavy print' foundation for the outfit.", 'description': "Add an edgy urban touch to your wardrobe with this pre-styled dress from alexanderwang which can be worn as a dress when closed or as a blazer when open. It is intentionally tucked at the yoke to evoke a layered look, underscoring this collection's theme of morphed tailoring, a study in the evolution of the garment.", 'image_path': 'EKO522.jpg'}] -2025-10-23 14:13:26,653 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:13:29,495 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:13:47,830 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:13:51,970 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:13:58,496 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:14:02,277 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:14:11,775 stylist_agent_server.py [line:353] INFO {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/e2ff7826-ae7f-4799-a76c-6f9e103759f3.jpg', 'outfit_id': '109380f4-2492-4d00-ac1b-95a58d732df7', 'items': ['EKO522', 'EHJ697', 'EHK161', 'ELH616', 'EJU066']} -2025-10-23 14:14:11,776 stylist_agent_server.py [line:356] INFO {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/e2ff7826-ae7f-4799-a76c-6f9e103759f3.jpg', 'outfit_id': '109380f4-2492-4d00-ac1b-95a58d732df7', 'items': ['EKO522', 'EHJ697', 'EHK161', 'ELH616', 'EJU066']} -2025-10-23 14:14:11,776 stylist_agent_server.py [line:357] INFO [{'item_id': 'EKO522', 'category': 'Dresses', 'gpt_description': 'A long, slim-fit cheongsam dress in a vibrant ruby red silk fabric, featuring an ornate embroidered pattern of traditional Chinese peonies and phoenixes in gold and deep blue threads. It has a high mandarin collar and delicate frog buttons, serving as the central and foundational piece for a Chinese traditional aesthetic outfit.', 'description': "Add an edgy urban touch to your wardrobe with this pre-styled dress from alexanderwang which can be worn as a dress when closed or as a blazer when open. It is intentionally tucked at the yoke to evoke a layered look, underscoring this collection's theme of morphed tailoring, a study in the evolution of the garment.", 'image_path': 'EKO522.jpg'}, {'item_id': 'EHJ697', 'category': 'Shoes', 'gpt_description': 'Solid black leather pointed low heels, designed with a sleek and sharp silhouette to complement the edgy urban aesthetic of the dress. These heels provide a subtle lift and sophisticated finish, grounding the morphed tailoring of the dress while adhering to the pure, solid color principle for shoes.', 'description': 'Thom Browne presents a delightful twist on tweed with these loafers, showcasing a woven texture that exudes charm and character. The classic penny style receives a fresh update through a navy hue and the iconic RWB tab, infusing the shoes with a modern and distinctive allure.', 'image_path': 'EHJ697.jpg'}, {'item_id': 'EHK161', 'category': 'Pants', 'gpt_description': "Dark wash indigo, straight-leg denim pants with a clean finish. These sturdy denim pants will be worn underneath the alexanderwang blazer-dress to introduce a textural contrast and achieve a 'pattern clash' with the dress's unique tailoring, completing the lower body in an edgy-casual manner as per the style guide's preference for denim items.", 'description': 'EENK serves boldness to their collections, showcasing the most unconventional designs like these half shorts that is accented with a lace panel and a lace trim. Adding a spin on a classic pair of white shorts, the exquisite details brings a sense of artistry to your look.', 'image_path': 'EHK161.jpg'}, {'item_id': 'ELH616', 'category': 'Handbags', 'gpt_description': "A structured, medium-sized solid black leather handbag with a sleek, minimalist design. It features a single top handle and an optional detachable shoulder strap, made from smooth, high-quality black leather, possibly with subtle gold-toned hardware. This bag serves as a pure, solid-colored accessory to ground the existing patterned elements of the outfit and aligns with the edgy urban aesthetic, while strictly adhering to the style guide's requirement for solid color leather bags.", 'description': 'The Ola is a soft, versatile and lightweight summer bag that is defined by a flowy, curved silhouette. Accented with a statement donut chain and a removable leather strap, this carryall complements perfectly from your resort-ready edits to your office curations.', 'image_path': 'ELH616.jpg'}, {'item_id': 'EJU066', 'category': 'Jewelry', 'gpt_description': 'A fine gold-toned chain necklace, approximately 18 inches in length, with a small, circular, polished gold pendant. This mandatory accessory adds a subtle touch of metallic warmth to the neckline, adhering to the gold tones preference outlined in the style guide.', 'description': "Explore Constellation collection bracelet where Tateossian blendsnature's beauty with enduring sophistication. This piece features rhodium-plated silver discs, accented by hand-carved moss agate rondelle beads for a touch of natural elegance.", 'image_path': 'EJU066.jpg'}] -2025-10-23 14:14:41,300 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:14:41,300 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:14:41,346 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 14:14:41,346 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 14:14:41,356 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 14:14:41,356 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 14:14:46,546 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:15:46,686 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 4, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 14:15:46,687 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:15:49,764 agent_server.py [line:53] INFO request_summary: ```json -{ - "occasion": "Not specified", - "style": "Not specified", - "color_preference": "No preference", - "clothing_type": "Chinese style cheongsam", - "vibe_or_details": "Not specified" -} -``` -2025-10-23 14:15:49,765 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:15:49,852 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:15:49,906 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:15:49,960 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:15:50,052 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '5f4a835e-b0e5-4932-8875-aa46b7b8dbfd', 'items': []} -2025-10-23 14:15:50,052 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:15:50,056 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '66ddb06a-73ca-4ed9-8dbb-2a99c550d9cf', 'items': []} -2025-10-23 14:15:50,057 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:15:50,062 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '0728807d-69f2-4524-b96e-a5c04455a097', 'items': []} -2025-10-23 14:15:50,062 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:15:50,068 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'bad841e4-ccbf-481a-8406-7c55f170979b', 'items': []} -2025-10-23 14:15:50,068 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:15:54,878 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:15:56,974 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:15:59,060 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:16:00,560 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:16:03,967 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:16:13,889 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:16:14,986 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:16:24,520 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:16:29,136 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:16:33,990 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:16:36,324 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:16:40,688 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:16:46,028 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:16:53,207 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:16:55,538 stylist_agent_server.py [line:353] INFO {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/76cff5dd-8e2d-4f61-8e22-2d64a606984d.jpg', 'outfit_id': '0728807d-69f2-4524-b96e-a5c04455a097', 'items': ['EKO522', 'EIQ863', 'EIJ070', 'EHJ697', 'ELH616']} -2025-10-23 14:16:55,538 stylist_agent_server.py [line:356] INFO {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/76cff5dd-8e2d-4f61-8e22-2d64a606984d.jpg', 'outfit_id': '0728807d-69f2-4524-b96e-a5c04455a097', 'items': ['EKO522', 'EIQ863', 'EIJ070', 'EHJ697', 'ELH616']} -2025-10-23 14:17:01,494 stylist_agent_server.py [line:356] INFO {'status': 'stop', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/c33cd98c-8947-4aef-9e13-1b21a51609fd.jpg', 'outfit_id': '66ddb06a-73ca-4ed9-8dbb-2a99c550d9cf', 'items': ['EKO522', 'EIQ863', 'EIJ070', 'EHJ697']} -2025-10-23 14:17:05,213 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:17:08,524 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:17:22,050 stylist_agent_server.py [line:353] INFO {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/7a8a524a-d5ef-4fc8-b51e-aa8d91badd27.jpg', 'outfit_id': 'bad841e4-ccbf-481a-8406-7c55f170979b', 'items': ['EKO522', 'EIQ863', 'EKR023', 'EHJ697', 'ELH616']} -2025-10-23 14:17:22,050 stylist_agent_server.py [line:356] INFO {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/7a8a524a-d5ef-4fc8-b51e-aa8d91badd27.jpg', 'outfit_id': 'bad841e4-ccbf-481a-8406-7c55f170979b', 'items': ['EKO522', 'EIQ863', 'EKR023', 'EHJ697', 'ELH616']} -2025-10-23 14:17:41,310 stylist_agent_server.py [line:353] INFO {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/3ab49423-776a-4e76-a9ea-48cf524e9081.jpg', 'outfit_id': '5f4a835e-b0e5-4932-8875-aa46b7b8dbfd', 'items': ['EKO522', 'EIJ070', 'EIQ863', 'EHJ697', 'ELH616']} -2025-10-23 14:17:41,311 stylist_agent_server.py [line:356] INFO {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/3ab49423-776a-4e76-a9ea-48cf524e9081.jpg', 'outfit_id': '5f4a835e-b0e5-4932-8875-aa46b7b8dbfd', 'items': ['EKO522', 'EIJ070', 'EIQ863', 'EHJ697', 'ELH616']} -2025-10-23 14:19:32,810 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:19:32,855 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 14:19:32,865 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 14:19:32,884 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:19:32,929 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 14:19:32,938 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 14:19:36,978 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:19:48,353 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 14:19:48,354 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:19:52,353 agent_server.py [line:53] INFO request_summary: ```json -{ - "occasion": "Not specified, looking for input on event type (e.g., special event, celebration)", - "style": "Chinese style (traditional, modern interpretation, elegant, formal, casual, or contemporary yet to be specified)", - "color_preference": "Not specified", - "clothing_type": "Cheongsam (Qipao)", - "vibe_or_details": "Not specified" -} -``` -2025-10-23 14:19:52,354 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:19:52,534 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '254d26ee-e46e-430d-86d7-5b4a3db8fe3d', 'items': []} -2025-10-23 14:19:58,063 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:20:09,717 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:20:45,984 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:21:51,456 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:21:51,501 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 14:21:51,510 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:21:51,511 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 14:21:51,557 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 14:21:51,566 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 14:21:54,332 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:21:55,358 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 14:21:55,359 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:21:58,420 agent_server.py [line:53] INFO request_summary: ```json -{ - "occasion": "Not specified", - "style": "Chinese style", - "color_preference": "No preference", - "clothing_type": "Cheongsam", - "vibe_or_details": "Traditional or modern interpretation, and formality (e.g., elegant and formal, or casual and contemporary) are not specified by the user." -} -``` -2025-10-23 14:21:58,421 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:21:58,505 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '4cbc3a70-8c7e-4cf0-b51d-7319a590cbf9', 'items': []} -2025-10-23 14:22:03,288 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:23:20,291 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:24:23,186 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:24:51,196 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:29:20,659 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:30:25,638 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:30:25,644 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:30:25,685 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 14:30:25,691 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 14:30:25,695 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 14:30:25,701 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 14:30:29,930 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:30:35,161 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 14:30:35,162 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:30:40,034 agent_server.py [line:53] INFO request_summary: ```json -{ - "occasion": null, - "style": "Chinese style", - "color_preference": null, - "clothing_type": "Cheongsam", - "vibe_or_details": null -} -``` -2025-10-23 14:30:40,035 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:30:40,269 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '15dfc4ba-51b8-49b2-b80f-a3cd4b652d4b', 'items': []} -2025-10-23 14:30:43,567 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:30:55,219 stylist_agent_server.py [line:356] INFO {'status': 'ok', 'message': '', 'path': '', 'outfit_id': '15dfc4ba-51b8-49b2-b80f-a3cd4b652d4b', 'items': ['EHV371']} -2025-10-23 14:30:57,189 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:31:02,866 stylist_agent_server.py [line:356] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/bfe16c02-3704-4518-b08d-c4d056f09a52.jpg', 'outfit_id': '15dfc4ba-51b8-49b2-b80f-a3cd4b652d4b', 'items': ['EHV371', 'EHJ697']} -2025-10-23 14:31:03,791 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:31:23,222 stylist_agent_server.py [line:356] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/58c99987-4950-44fa-b8c4-44f6a25beb1f.jpg', 'outfit_id': '15dfc4ba-51b8-49b2-b80f-a3cd4b652d4b', 'items': ['EHV371', 'EHJ697', 'EKR023']} -2025-10-23 14:33:38,446 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:33:38,475 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:33:38,491 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 14:33:38,501 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 14:33:38,520 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 14:33:38,530 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 14:33:43,267 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:33:50,298 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 14:33:50,299 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:33:53,466 agent_server.py [line:53] INFO request_summary: ```json -{ - "occasion": "Not specified", - "style": "Chinese style cheongsam", - "color_preference": "No preference", - "clothing_type": "Cheongsam", - "vibe_or_details": "Not specified" -} -``` -2025-10-23 14:33:53,466 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:33:53,792 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'f65d857a-9c32-4a21-a06e-bd42d45e9fa2', 'items': []} -2025-10-23 14:33:56,592 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:34:02,957 stylist_agent_server.py [line:358] INFO {'status': 'ok', 'message': '', 'path': '', 'outfit_id': 'f65d857a-9c32-4a21-a06e-bd42d45e9fa2', 'items': ['']} -2025-10-23 14:34:11,915 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:34:20,742 stylist_agent_server.py [line:358] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/63d8af3c-9deb-40b8-aaf4-c97781d7853e.jpg', 'outfit_id': 'f65d857a-9c32-4a21-a06e-bd42d45e9fa2', 'items': ['', 'EKO522']} -2025-10-23 14:34:45,694 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:35:04,692 stylist_agent_server.py [line:358] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/220b7068-39e3-494f-8de5-45e217a4fb4e.jpg', 'outfit_id': 'f65d857a-9c32-4a21-a06e-bd42d45e9fa2', 'items': ['', 'EKO522', 'EIQ863']} -2025-10-23 14:36:10,043 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:36:19,655 stylist_agent_server.py [line:358] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/02f422c4-7c6e-4f5e-bd6b-de0066a1c27b.jpg', 'outfit_id': 'f65d857a-9c32-4a21-a06e-bd42d45e9fa2', 'items': ['', 'EKO522', 'EIQ863', 'ELQ012']} -2025-10-23 14:39:36,149 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:40:09,655 stylist_agent_server.py [line:355] INFO {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/99cd8cc0-856a-487d-bb21-5684855ef48f.jpg', 'outfit_id': 'f65d857a-9c32-4a21-a06e-bd42d45e9fa2', 'items': ['', 'EKO522', 'EIQ863', 'ELQ012', 'EHJ697']} -2025-10-23 16:40:40,397 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 16:40:40,442 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 16:40:40,451 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 16:40:40,497 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 16:40:40,544 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 16:40:40,554 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 16:40:44,551 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 16:43:01,722 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 16:43:01,724 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 16:43:04,794 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": "Not specified", - "style": "Chinese style (cheongsam)", - "color_preference": "Not specified", - "clothing_type": "Cheongsam (Qipao)", - "vibe_or_details": "Not specified" -} -``` -2025-10-23 16:43:04,795 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 16:43:04,911 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'd5133691-9bd0-429f-8017-f1499881fd1a', 'items': []} -2025-10-23 16:43:12,513 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 16:43:17,659 stylist_agent_server.py [line:360] INFO {'status': 'ok', 'message': '', 'path': '', 'outfit_id': 'd5133691-9bd0-429f-8017-f1499881fd1a', 'items': []} -2025-10-23 16:43:18,459 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 16:43:28,961 stylist_agent_server.py [line:360] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/46fbafc6-0f91-4234-a736-4668016d663a.jpg', 'outfit_id': 'd5133691-9bd0-429f-8017-f1499881fd1a', 'items': ['EKO522']} -2025-10-23 16:46:07,890 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 16:46:40,576 stylist_agent_server.py [line:360] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/9345d104-509b-4324-8ece-9d0acbc18fd8.jpg', 'outfit_id': 'd5133691-9bd0-429f-8017-f1499881fd1a', 'items': ['EKO522', 'EHJ697']} -2025-10-23 16:51:13,324 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 16:51:13,372 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 16:51:13,372 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 16:51:13,382 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 16:51:13,420 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 16:51:13,430 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 16:51:18,309 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 16:51:40,304 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 2, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 16:51:40,305 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 16:51:44,908 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": null, - "style": null, - "color_preference": "No preference", - "clothing_type": "Chinese style cheongsam (Qipao)", - "vibe_or_details": null -} -``` -2025-10-23 16:51:44,909 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 16:51:44,965 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 16:51:45,051 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '5caa653d-a560-4264-b741-2a38ed4112cf', 'items': []} -2025-10-23 16:51:45,052 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 16:51:45,057 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '24318c76-90b0-42dc-bca3-9456e6e24485', 'items': []} -2025-10-23 16:51:45,057 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 16:51:49,827 stylist_agent_server.py [line:360] INFO {'status': 'ok', 'message': '', 'path': '', 'outfit_id': '24318c76-90b0-42dc-bca3-9456e6e24485', 'items': []} -2025-10-23 16:51:50,776 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 16:51:50,808 stylist_agent_server.py [line:360] INFO {'status': 'ok', 'message': '', 'path': '', 'outfit_id': '5caa653d-a560-4264-b741-2a38ed4112cf', 'items': []} -2025-10-23 16:51:51,588 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 16:52:04,161 stylist_agent_server.py [line:360] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/4f70f3a9-6ef3-46fb-a6e1-a358be3d8796.jpg', 'outfit_id': '5caa653d-a560-4264-b741-2a38ed4112cf', 'items': ['EKO522']} -2025-10-23 16:52:04,898 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 16:52:06,058 stylist_agent_server.py [line:360] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/8786f9c9-a0c3-4af4-8f2a-3021e15ab7fd.jpg', 'outfit_id': '24318c76-90b0-42dc-bca3-9456e6e24485', 'items': ['EKO522']} -2025-10-23 16:52:06,750 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 16:52:14,594 stylist_agent_server.py [line:360] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/ae7c1c0a-35a7-4085-9c3c-4202158dcd54.jpg', 'outfit_id': '5caa653d-a560-4264-b741-2a38ed4112cf', 'items': ['EKO522', 'EIQ863']} -2025-10-23 16:52:15,398 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 16:52:25,260 stylist_agent_server.py [line:360] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/f36b3707-e1d8-43f3-8e26-82c4306a9a5f.jpg', 'outfit_id': '5caa653d-a560-4264-b741-2a38ed4112cf', 'items': ['EKO522', 'EIQ863', 'EHJ697']} -2025-10-23 16:52:26,080 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 16:52:48,902 stylist_agent_server.py [line:357] INFO {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/4dbc7823-d60d-4656-bb6c-5524540424ec.jpg', 'outfit_id': '5caa653d-a560-4264-b741-2a38ed4112cf', 'items': ['EKO522', 'EIQ863', 'EHJ697', 'ELH616']} -2025-10-23 16:52:53,045 stylist_agent_server.py [line:360] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/28a1f36c-843c-4693-b647-f937dd976ca7.jpg', 'outfit_id': '24318c76-90b0-42dc-bca3-9456e6e24485', 'items': ['EKO522', 'EIQ863']} -2025-10-23 16:52:54,270 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 16:53:12,852 stylist_agent_server.py [line:360] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/afe6ec1d-bb9e-4d9d-be95-b916452d4bfe.jpg', 'outfit_id': '24318c76-90b0-42dc-bca3-9456e6e24485', 'items': ['EKO522', 'EIQ863', 'EKI586']} -2025-10-23 16:53:14,082 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 16:53:31,388 stylist_agent_server.py [line:357] INFO {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/38d5bcb4-5c39-46bd-9710-55135bef1957.jpg', 'outfit_id': '24318c76-90b0-42dc-bca3-9456e6e24485', 'items': ['EKO522', 'EIQ863', 'EKI586', 'EHJ697']} -2025-10-23 16:53:31,389 agent_server.py [line:69] INFO ---- Final Recommendation Results --- -2025-10-23 16:53:31,389 agent_server.py [line:71] INFO ✅ Outfit 1 saved to: {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/4dbc7823-d60d-4656-bb6c-5524540424ec.jpg', 'outfit_id': '5caa653d-a560-4264-b741-2a38ed4112cf', 'items': ['EKO522', 'EIQ863', 'EHJ697', 'ELH616']} -2025-10-23 16:53:31,389 agent_server.py [line:71] INFO ✅ Outfit 2 saved to: {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/38d5bcb4-5c39-46bd-9710-55135bef1957.jpg', 'outfit_id': '24318c76-90b0-42dc-bca3-9456e6e24485', 'items': ['EKO522', 'EIQ863', 'EKI586', 'EHJ697']} -2025-10-23 21:42:34,087 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 21:42:34,092 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 21:42:34,138 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 21:42:34,140 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 21:42:34,148 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 21:42:34,149 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 21:42:40,056 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 21:43:04,101 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 21:43:04,103 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 21:43:04,108 base_events.py [line:1758] ERROR Task exception was never retrieved -future: exception=DefaultCredentialsError('Gemini API call failed: File /app/request.json was not found.')> -Traceback (most recent call last): - File "/workspace/lc_stylist_agent/app/core/llm_interface.py", line 45, in generate_response - response = await self.gemini_client.aio.models.generate_content( - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/models.py", line 6757, in generate_content - response = await self._generate_content( - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/models.py", line 5592, in _generate_content - response = await self._api_client.async_request( - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/_api_client.py", line 1341, in async_request - result = await self._async_request( - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/_api_client.py", line 1286, in _async_request - return await self._async_retry( # type: ignore[no-any-return] - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/tenacity/_asyncio.py", line 58, in __call__ - do = await self.iter(retry_state=retry_state) - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/tenacity/_asyncio.py", line 110, in iter - result = await action(retry_state) - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/tenacity/_asyncio.py", line 78, in inner - return fn(*args, **kwargs) - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/tenacity/__init__.py", line 410, in exc_check - raise retry_exc.reraise() - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/tenacity/__init__.py", line 183, in reraise - raise self.last_attempt.result() - File "/home/user/miniconda3/envs/test/lib/python3.10/concurrent/futures/_base.py", line 451, in result - return self.__get_result() - File "/home/user/miniconda3/envs/test/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result - raise self._exception - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/tenacity/_asyncio.py", line 61, in __call__ - result = await fn(*args, **kwargs) - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/_api_client.py", line 1153, in _async_request_once - f'Bearer {await self._async_access_token()}' - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/_api_client.py", line 970, in _async_access_token - self._credentials, project = await asyncio.to_thread( - File "/home/user/miniconda3/envs/test/lib/python3.10/asyncio/threads.py", line 25, in to_thread - return await loop.run_in_executor(None, func_call) - File "/home/user/miniconda3/envs/test/lib/python3.10/concurrent/futures/thread.py", line 58, in run - result = self.fn(*self.args, **self.kwargs) - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/_api_client.py", line 184, in load_auth - credentials, loaded_project_id = google.auth.default( # type: ignore[no-untyped-call] - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/auth/_default.py", line 705, in default - credentials, project_id = checker() - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/auth/_default.py", line 698, in - lambda: _get_explicit_environ_credentials(quota_project_id=quota_project_id), - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/auth/_default.py", line 346, in _get_explicit_environ_credentials - credentials, project_id = load_credentials_from_file( - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/auth/_default.py", line 173, in load_credentials_from_file - raise exceptions.DefaultCredentialsError( -google.auth.exceptions.DefaultCredentialsError: File /app/request.json was not found. - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/workspace/lc_stylist_agent/app/server/ChatbotAgent/agent_server.py", line 59, in background_run - request_summary = await self.get_conversation_summary(request.user_id) - File "/workspace/lc_stylist_agent/app/server/ChatbotAgent/agent_server.py", line 84, in get_conversation_summary - summary = await self.llm.generate_response(history=[Message(role=Role.USER, content=input_message)], system_prompt=SUMMARY_PROMPT) - File "/workspace/lc_stylist_agent/app/core/llm_interface.py", line 55, in generate_response - raise type(e)(f"Gemini API call failed: {e}") -google.auth.exceptions.DefaultCredentialsError: Gemini API call failed: File /app/request.json was not found. -2025-10-23 21:43:39,693 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 21:43:39,695 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 21:43:39,697 base_events.py [line:1758] ERROR Task exception was never retrieved -future: exception=DefaultCredentialsError('Gemini API call failed: File /app/request.json was not found.')> -Traceback (most recent call last): - File "/workspace/lc_stylist_agent/app/core/llm_interface.py", line 45, in generate_response - response = await self.gemini_client.aio.models.generate_content( - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/models.py", line 6757, in generate_content - response = await self._generate_content( - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/models.py", line 5592, in _generate_content - response = await self._api_client.async_request( - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/_api_client.py", line 1341, in async_request - result = await self._async_request( - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/_api_client.py", line 1286, in _async_request - return await self._async_retry( # type: ignore[no-any-return] - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/tenacity/_asyncio.py", line 58, in __call__ - do = await self.iter(retry_state=retry_state) - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/tenacity/_asyncio.py", line 110, in iter - result = await action(retry_state) - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/tenacity/_asyncio.py", line 78, in inner - return fn(*args, **kwargs) - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/tenacity/__init__.py", line 410, in exc_check - raise retry_exc.reraise() - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/tenacity/__init__.py", line 183, in reraise - raise self.last_attempt.result() - File "/home/user/miniconda3/envs/test/lib/python3.10/concurrent/futures/_base.py", line 451, in result - return self.__get_result() - File "/home/user/miniconda3/envs/test/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result - raise self._exception - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/tenacity/_asyncio.py", line 61, in __call__ - result = await fn(*args, **kwargs) - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/_api_client.py", line 1153, in _async_request_once - f'Bearer {await self._async_access_token()}' - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/_api_client.py", line 970, in _async_access_token - self._credentials, project = await asyncio.to_thread( - File "/home/user/miniconda3/envs/test/lib/python3.10/asyncio/threads.py", line 25, in to_thread - return await loop.run_in_executor(None, func_call) - File "/home/user/miniconda3/envs/test/lib/python3.10/concurrent/futures/thread.py", line 58, in run - result = self.fn(*self.args, **self.kwargs) - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/_api_client.py", line 184, in load_auth - credentials, loaded_project_id = google.auth.default( # type: ignore[no-untyped-call] - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/auth/_default.py", line 705, in default - credentials, project_id = checker() - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/auth/_default.py", line 698, in - lambda: _get_explicit_environ_credentials(quota_project_id=quota_project_id), - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/auth/_default.py", line 346, in _get_explicit_environ_credentials - credentials, project_id = load_credentials_from_file( - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/auth/_default.py", line 173, in load_credentials_from_file - raise exceptions.DefaultCredentialsError( -google.auth.exceptions.DefaultCredentialsError: File /app/request.json was not found. - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/workspace/lc_stylist_agent/app/server/ChatbotAgent/agent_server.py", line 59, in background_run - request_summary = await self.get_conversation_summary(request.user_id) - File "/workspace/lc_stylist_agent/app/server/ChatbotAgent/agent_server.py", line 84, in get_conversation_summary - summary = await self.llm.generate_response(history=[Message(role=Role.USER, content=input_message)], system_prompt=SUMMARY_PROMPT) - File "/workspace/lc_stylist_agent/app/core/llm_interface.py", line 55, in generate_response - raise type(e)(f"Gemini API call failed: {e}") -google.auth.exceptions.DefaultCredentialsError: Gemini API call failed: File /app/request.json was not found. -2025-10-23 21:43:51,564 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 21:43:51,588 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 21:43:51,614 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 21:43:51,624 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 21:43:51,638 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 21:43:51,647 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 21:43:54,228 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 21:43:56,123 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 21:43:56,124 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 21:44:02,240 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": null, - "style": null, - "color_preference": null, - "clothing_type": null, - "vibe_or_details": null -} -``` -2025-10-23 21:44:02,240 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 21:44:02,412 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'f94f38e7-61eb-4b4f-8ef2-498f12e681b3', 'items': []} -2025-10-23 21:44:04,657 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 21:44:09,079 agent_server.py [line:69] INFO ---- Final Recommendation Results --- -2025-10-23 21:44:09,080 agent_server.py [line:73] ERROR ❌ Failed: 'NoneType' object has no attribute 'get' -2025-10-23 21:44:22,671 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 21:44:22,675 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 21:44:27,004 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": null, - "style": null, - "color_preference": null, - "clothing_type": null, - "vibe_or_details": null -} -``` -2025-10-23 21:44:27,005 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 21:44:27,086 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '942e711a-fc22-4b41-9bef-403cb0686627', 'items': []} -2025-10-23 21:44:30,097 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 09:59:19,870 agent_server.py [line:69] INFO ---- Final Recommendation Results --- -2025-10-24 09:59:19,870 agent_server.py [line:73] ERROR ❌ Failed: 'NoneType' object has no attribute 'get' -2025-10-24 09:59:22,964 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-24 09:59:22,966 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 09:59:26,743 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": "Summer casual outing or brunch", - "style": "Flowy, chic, comfortable, and a bit feminine", - "color_preference": "['Pastel pink', 'Lavender', 'Sky blue']", - "clothing_type": "Lightweight maxi dress", - "vibe_or_details": "Needs to be breathable for warm weather, no bold prints, preferably subtle floral or abstract patterns" -} -``` -2025-10-24 09:59:26,743 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 09:59:26,878 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '431d7a98-6c85-4ef1-a8ef-c098de87c02f', 'items': []} -2025-10-24 09:59:30,525 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 09:59:51,130 agent_server.py [line:69] INFO ---- Final Recommendation Results --- -2025-10-24 09:59:51,131 agent_server.py [line:73] ERROR ❌ Failed: 'NoneType' object has no attribute 'get' -2025-10-24 10:00:07,136 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-24 10:00:07,138 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:00:14,257 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": "Romantic date dinner", - "style": "Classic elegance", - "color_preference": [ - "Cream", - "Pale Blue" - ], - "clothing_type": "Lightweight maxi dress", - "vibe_or_details": "Needs to be comfortable and breathable" -} -``` -2025-10-24 10:00:14,258 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:00:14,345 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'b87da12a-79f2-4adf-a491-7b994870a5cf', 'items': []} -2025-10-24 10:01:00,039 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:07:09,739 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:07:09,743 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:07:09,789 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:07:09,792 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:07:09,799 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:07:09,802 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:07:12,032 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:07:12,465 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-24 10:07:12,467 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:07:13,949 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-24 10:07:13,951 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:07:16,137 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": "No occasion specified", - "style": "No style specified", - "color_preference": "No preference", - "clothing_type": "No clothing type specified", - "vibe_or_details": "No specific vibe or details mentioned" -} -``` -2025-10-24 10:07:16,137 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:07:16,265 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'dfba5285-2630-4d18-95a7-cf3175fc2f4b', 'items': []} -2025-10-24 10:07:20,487 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:10:08,824 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:10:08,828 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:10:08,873 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:10:08,878 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:10:08,883 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:10:08,887 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:10:12,797 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:10:18,230 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-24 10:10:18,232 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:10:28,104 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": "Romantic date dinner", - "style": "Classic elegance", - "color_preference": [ - "Cream", - "Pale Blue" - ], - "clothing_type": "Lightweight maxi dress", - "vibe_or_details": "Needs to be comfortable and breathable" -} -``` -2025-10-24 10:10:28,104 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:10:28,201 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '85f8e5a2-1624-4236-b1c8-7db683fd6648', 'items': []} -2025-10-24 10:10:29,874 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:12:46,788 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:12:46,788 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:12:46,837 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:12:46,837 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:12:46,847 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:12:46,848 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:12:49,941 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:12:50,663 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-24 10:12:50,665 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:12:58,806 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": null, - "style": null, - "color_preference": null, - "clothing_type": null, - "vibe_or_details": null -} -``` -2025-10-24 10:12:58,807 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:12:58,901 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '0efb9179-bfc2-4700-9960-45605bb98dd6', 'items': []} -2025-10-24 10:13:01,149 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:15:04,724 agent_server.py [line:69] INFO ---- Final Recommendation Results --- -2025-10-24 10:15:04,724 agent_server.py [line:73] ERROR ❌ Failed: 'NoneType' object has no attribute 'get' -2025-10-24 10:15:07,518 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-24 10:15:07,520 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:15:11,829 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": "No information provided", - "style": "No information provided", - "color_preference": "No information provided", - "clothing_type": "No information provided", - "vibe_or_details": "No information provided" -} -``` -2025-10-24 10:15:11,829 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:15:11,920 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '56b368f3-ab4a-46d7-941a-1381ddc4b95a', 'items': []} -2025-10-24 10:15:11,944 base_events.py [line:1758] ERROR Unclosed client session -client_session: -2025-10-24 10:15:13,379 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:16:37,818 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:16:37,866 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:16:37,876 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:16:37,897 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:16:37,947 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:16:37,957 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:16:43,885 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:16:48,608 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-24 10:16:48,610 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:16:59,374 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": null, - "style": null, - "color_preference": null, - "clothing_type": null, - "vibe_or_details": null -} -``` -2025-10-24 10:16:59,375 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:16:59,467 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'fb79695c-2983-4e38-b33c-69998d8d5dbf', 'items': []} -2025-10-24 10:17:03,349 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:17:47,933 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:17:47,940 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:17:47,981 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:17:47,988 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:17:47,991 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:17:47,998 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:18:25,700 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:19:02,062 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-24 10:19:02,063 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:19:02,300 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-24 10:19:02,301 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:19:05,047 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": "Not specified", - "style": "Not specified", - "color_preference": "Not specified", - "clothing_type": "Not specified", - "vibe_or_details": "Not specified" -} -``` -2025-10-24 10:19:05,047 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:19:05,166 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'a777dd3d-0a39-4fbc-bff8-e355cd75a77d', 'items': []} -2025-10-24 10:19:05,166 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:19:06,831 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": "No preference", - "style": "No preference", - "color_preference": "No preference", - "clothing_type": "No preference", - "vibe_or_details": "No preference" -} -``` -2025-10-24 10:19:06,841 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:19:06,904 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '2fb95743-9a9b-40cc-9a44-6ebbd88c0b69', 'items': []} -2025-10-24 10:19:06,905 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:23:28,612 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:23:28,625 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:23:28,661 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:23:28,672 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:23:28,673 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:23:28,684 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:23:36,979 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:23:50,732 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-24 10:23:50,734 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:23:56,262 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": "not specified", - "style": "not specified", - "color_preference": "no preference", - "clothing_type": "not specified", - "vibe_or_details": "not specified" -} -``` -2025-10-24 10:23:56,262 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:23:56,361 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'b998cf99-b788-42c7-9611-e709a9d44798', 'items': []} -2025-10-24 10:23:56,361 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:25:05,020 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:25:05,020 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:25:05,069 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:25:05,069 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:25:05,080 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:25:05,080 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:25:09,676 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:25:37,283 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-24 10:25:37,285 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:25:43,698 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": "Not specified", - "style": "Not specified", - "color_preference": "No preference", - "clothing_type": "Not specified", - "vibe_or_details": "Not specified" -} -``` -2025-10-24 10:25:43,699 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:25:43,792 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '680745ec-c95d-43a5-9989-3abedd329557', 'items': []} -2025-10-24 10:25:43,793 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:26:28,264 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:26:28,279 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:26:28,314 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:26:28,325 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:26:28,329 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:26:28,340 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:26:32,981 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:26:55,486 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-24 10:26:55,488 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:26:57,563 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": "Summer casual outing or picnic", - "style": "Comfortable, stylish, and suitable for warm weather", - "color_preference": "['light colors', 'pastel shades']", - "clothing_type": "['dress', 'skirt', 'blouse', 'flowy top']", - "vibe_or_details": "Breathable fabrics like linen or cotton, needs to be suitable for warm weather, no specific exclusions on patterns or prints" -} -``` -2025-10-24 10:26:57,564 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:26:57,683 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '311e6d51-19b6-4e41-8c90-e4d97817ef94', 'items': []} -2025-10-24 10:26:57,683 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:36:15,330 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:36:15,334 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:36:15,381 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:36:15,382 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:36:15,391 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:36:15,392 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:36:19,375 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:36:34,842 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-24 10:36:34,844 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:36:37,898 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": null, - "style": null, - "color_preference": null, - "clothing_type": null, - "vibe_or_details": null -} -``` -2025-10-24 10:36:37,899 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:36:38,006 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '0142e8b4-6d2c-4c40-8b23-69ad049c3edb', 'items': []} -2025-10-24 10:36:38,006 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. diff --git a/app/logs/error.log b/app/logs/error.log deleted file mode 100644 index b3d423b..0000000 --- a/app/logs/error.log +++ /dev/null @@ -1,124 +0,0 @@ -2025-10-23 21:43:04,108 base_events.py [line:1758] ERROR Task exception was never retrieved -future: exception=DefaultCredentialsError('Gemini API call failed: File /app/request.json was not found.')> -Traceback (most recent call last): - File "/workspace/lc_stylist_agent/app/core/llm_interface.py", line 45, in generate_response - response = await self.gemini_client.aio.models.generate_content( - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/models.py", line 6757, in generate_content - response = await self._generate_content( - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/models.py", line 5592, in _generate_content - response = await self._api_client.async_request( - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/_api_client.py", line 1341, in async_request - result = await self._async_request( - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/_api_client.py", line 1286, in _async_request - return await self._async_retry( # type: ignore[no-any-return] - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/tenacity/_asyncio.py", line 58, in __call__ - do = await self.iter(retry_state=retry_state) - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/tenacity/_asyncio.py", line 110, in iter - result = await action(retry_state) - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/tenacity/_asyncio.py", line 78, in inner - return fn(*args, **kwargs) - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/tenacity/__init__.py", line 410, in exc_check - raise retry_exc.reraise() - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/tenacity/__init__.py", line 183, in reraise - raise self.last_attempt.result() - File "/home/user/miniconda3/envs/test/lib/python3.10/concurrent/futures/_base.py", line 451, in result - return self.__get_result() - File "/home/user/miniconda3/envs/test/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result - raise self._exception - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/tenacity/_asyncio.py", line 61, in __call__ - result = await fn(*args, **kwargs) - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/_api_client.py", line 1153, in _async_request_once - f'Bearer {await self._async_access_token()}' - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/_api_client.py", line 970, in _async_access_token - self._credentials, project = await asyncio.to_thread( - File "/home/user/miniconda3/envs/test/lib/python3.10/asyncio/threads.py", line 25, in to_thread - return await loop.run_in_executor(None, func_call) - File "/home/user/miniconda3/envs/test/lib/python3.10/concurrent/futures/thread.py", line 58, in run - result = self.fn(*self.args, **self.kwargs) - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/_api_client.py", line 184, in load_auth - credentials, loaded_project_id = google.auth.default( # type: ignore[no-untyped-call] - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/auth/_default.py", line 705, in default - credentials, project_id = checker() - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/auth/_default.py", line 698, in - lambda: _get_explicit_environ_credentials(quota_project_id=quota_project_id), - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/auth/_default.py", line 346, in _get_explicit_environ_credentials - credentials, project_id = load_credentials_from_file( - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/auth/_default.py", line 173, in load_credentials_from_file - raise exceptions.DefaultCredentialsError( -google.auth.exceptions.DefaultCredentialsError: File /app/request.json was not found. - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/workspace/lc_stylist_agent/app/server/ChatbotAgent/agent_server.py", line 59, in background_run - request_summary = await self.get_conversation_summary(request.user_id) - File "/workspace/lc_stylist_agent/app/server/ChatbotAgent/agent_server.py", line 84, in get_conversation_summary - summary = await self.llm.generate_response(history=[Message(role=Role.USER, content=input_message)], system_prompt=SUMMARY_PROMPT) - File "/workspace/lc_stylist_agent/app/core/llm_interface.py", line 55, in generate_response - raise type(e)(f"Gemini API call failed: {e}") -google.auth.exceptions.DefaultCredentialsError: Gemini API call failed: File /app/request.json was not found. -2025-10-23 21:43:39,697 base_events.py [line:1758] ERROR Task exception was never retrieved -future: exception=DefaultCredentialsError('Gemini API call failed: File /app/request.json was not found.')> -Traceback (most recent call last): - File "/workspace/lc_stylist_agent/app/core/llm_interface.py", line 45, in generate_response - response = await self.gemini_client.aio.models.generate_content( - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/models.py", line 6757, in generate_content - response = await self._generate_content( - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/models.py", line 5592, in _generate_content - response = await self._api_client.async_request( - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/_api_client.py", line 1341, in async_request - result = await self._async_request( - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/_api_client.py", line 1286, in _async_request - return await self._async_retry( # type: ignore[no-any-return] - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/tenacity/_asyncio.py", line 58, in __call__ - do = await self.iter(retry_state=retry_state) - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/tenacity/_asyncio.py", line 110, in iter - result = await action(retry_state) - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/tenacity/_asyncio.py", line 78, in inner - return fn(*args, **kwargs) - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/tenacity/__init__.py", line 410, in exc_check - raise retry_exc.reraise() - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/tenacity/__init__.py", line 183, in reraise - raise self.last_attempt.result() - File "/home/user/miniconda3/envs/test/lib/python3.10/concurrent/futures/_base.py", line 451, in result - return self.__get_result() - File "/home/user/miniconda3/envs/test/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result - raise self._exception - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/tenacity/_asyncio.py", line 61, in __call__ - result = await fn(*args, **kwargs) - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/_api_client.py", line 1153, in _async_request_once - f'Bearer {await self._async_access_token()}' - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/_api_client.py", line 970, in _async_access_token - self._credentials, project = await asyncio.to_thread( - File "/home/user/miniconda3/envs/test/lib/python3.10/asyncio/threads.py", line 25, in to_thread - return await loop.run_in_executor(None, func_call) - File "/home/user/miniconda3/envs/test/lib/python3.10/concurrent/futures/thread.py", line 58, in run - result = self.fn(*self.args, **self.kwargs) - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/_api_client.py", line 184, in load_auth - credentials, loaded_project_id = google.auth.default( # type: ignore[no-untyped-call] - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/auth/_default.py", line 705, in default - credentials, project_id = checker() - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/auth/_default.py", line 698, in - lambda: _get_explicit_environ_credentials(quota_project_id=quota_project_id), - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/auth/_default.py", line 346, in _get_explicit_environ_credentials - credentials, project_id = load_credentials_from_file( - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/auth/_default.py", line 173, in load_credentials_from_file - raise exceptions.DefaultCredentialsError( -google.auth.exceptions.DefaultCredentialsError: File /app/request.json was not found. - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/workspace/lc_stylist_agent/app/server/ChatbotAgent/agent_server.py", line 59, in background_run - request_summary = await self.get_conversation_summary(request.user_id) - File "/workspace/lc_stylist_agent/app/server/ChatbotAgent/agent_server.py", line 84, in get_conversation_summary - summary = await self.llm.generate_response(history=[Message(role=Role.USER, content=input_message)], system_prompt=SUMMARY_PROMPT) - File "/workspace/lc_stylist_agent/app/core/llm_interface.py", line 55, in generate_response - raise type(e)(f"Gemini API call failed: {e}") -google.auth.exceptions.DefaultCredentialsError: Gemini API call failed: File /app/request.json was not found. -2025-10-23 21:44:09,080 agent_server.py [line:73] ERROR ❌ Failed: 'NoneType' object has no attribute 'get' -2025-10-24 09:59:19,870 agent_server.py [line:73] ERROR ❌ Failed: 'NoneType' object has no attribute 'get' -2025-10-24 09:59:51,131 agent_server.py [line:73] ERROR ❌ Failed: 'NoneType' object has no attribute 'get' -2025-10-24 10:15:04,724 agent_server.py [line:73] ERROR ❌ Failed: 'NoneType' object has no attribute 'get' -2025-10-24 10:15:11,944 base_events.py [line:1758] ERROR Unclosed client session -client_session: diff --git a/app/logs/info.log b/app/logs/info.log deleted file mode 100644 index 23ce975..0000000 --- a/app/logs/info.log +++ /dev/null @@ -1,1230 +0,0 @@ -2025-10-23 10:56:29,513 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 10:56:29,526 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 10:56:29,572 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 10:56:29,584 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 10:56:33,748 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 10:56:33,974 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 10:57:02,331 agent_server.py [line:44] INFO user_id: string -2025-10-23 10:57:02,332 agent_server.py [line:45] INFO num_outfits: 4 -2025-10-23 10:57:02,332 agent_server.py [line:46] INFO stylist_path: lanecarford/stylist_guide/crystal_en.md -2025-10-23 10:57:02,333 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 10:57:05,318 agent_server.py [line:53] INFO request_summary: ```json -{ - "occasion": "No preference", - "style": "No preference", - "color_preference": "No preference", - "clothing_type": "Chinese style cheongsam", - "vibe_or_details": "No preference" -} -``` -2025-10-23 10:57:05,364 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 10:57:10,230 agent_server.py [line:67] INFO data: {'status': 'ok', 'message': '', 'path': '', 'outfit_id': 'e5af07ec-592b-4557-a713-0fedd13c34fd'} -2025-10-23 10:57:10,789 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 10:57:23,727 agent_server.py [line:67] INFO data: {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/b8ae95ae-98ca-4ca9-bdea-3f444179589f.jpg', 'outfit_id': 'e5af07ec-592b-4557-a713-0fedd13c34fd'} -2025-10-23 10:57:24,139 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 10:57:31,576 agent_server.py [line:67] INFO data: {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/8954e478-6af6-4e2c-9a53-e67804e96808.jpg', 'outfit_id': 'e5af07ec-592b-4557-a713-0fedd13c34fd'} -2025-10-23 10:57:31,989 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 10:57:40,780 agent_server.py [line:67] INFO data: {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/359ef9d1-dc87-4f85-b893-91d90cb5e62d.jpg', 'outfit_id': 'e5af07ec-592b-4557-a713-0fedd13c34fd'} -2025-10-23 10:57:41,253 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 10:57:52,322 agent_server.py [line:67] INFO data: {'status': 'stop', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/49f3e346-9682-4c9a-a7c5-f71030567f83.jpg', 'outfit_id': 'e5af07ec-592b-4557-a713-0fedd13c34fd'} -2025-10-23 10:57:52,331 minio_client.py [line:105] INFO ✅ JSON file uploaded successfully to lanecarford/lc_stylist_agent_outfit_items/string/59623391-ab35-457e-a972-f1eafe197f64.json -2025-10-23 10:57:52,332 agent_server.py [line:67] INFO data: {'status': 'finish', 'message': 'Finish reason: Uploading the outfit json file is completed', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/59623391-ab35-457e-a972-f1eafe197f64.json', 'outfit_id': 'e5af07ec-592b-4557-a713-0fedd13c34fd'} -2025-10-23 10:57:52,338 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 10:57:57,268 agent_server.py [line:67] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': '', 'outfit_id': '395c0c00-d337-427b-be51-276a46846303'} -2025-10-23 10:57:57,549 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 10:58:19,991 agent_server.py [line:67] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/3ede3959-bfbd-42c0-9d2b-6b688d763eff.jpg', 'outfit_id': '395c0c00-d337-427b-be51-276a46846303'} -2025-10-23 10:58:20,319 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 10:58:31,851 agent_server.py [line:67] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/cb90d852-01c0-47d9-91f4-44c8d0e2450a.jpg', 'outfit_id': '395c0c00-d337-427b-be51-276a46846303'} -2025-10-23 10:58:32,524 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:01:02,248 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:01:02,251 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:01:02,302 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 11:01:02,305 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 11:01:06,358 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:01:06,591 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:02:16,850 agent_server.py [line:45] INFO request: {"user_id":"string","num_outfits":4,"stylist_path":"lanecarford/stylist_guide/crystal_en.md"} -2025-10-23 11:02:16,852 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:02:19,086 agent_server.py [line:51] INFO request_summary: ```json -{ - "occasion": "Not specified", - "style": "Chinese style", - "color_preference": "No preference", - "clothing_type": "Cheongsam (Qipao)", - "vibe_or_details": "Not specified" -} -``` -2025-10-23 11:02:23,320 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:02:28,142 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': '', 'path': '', 'outfit_id': '5a06077c-c11b-4676-8744-1741eb6786e3'} -2025-10-23 11:02:28,741 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:02:36,845 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/7ad46b7b-f91c-44a0-9c70-913052f5089b.jpg', 'outfit_id': '5a06077c-c11b-4676-8744-1741eb6786e3'} -2025-10-23 11:02:37,456 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:02:58,387 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/432e5511-aac5-4d2c-8188-e91a864dee42.jpg', 'outfit_id': '5a06077c-c11b-4676-8744-1741eb6786e3'} -2025-10-23 11:02:58,880 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:03:19,252 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/91b58c9d-f85a-4fe9-b97c-eb45d4ccf7d5.jpg', 'outfit_id': '5a06077c-c11b-4676-8744-1741eb6786e3'} -2025-10-23 11:03:19,815 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:03:44,211 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:03:44,216 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:03:44,256 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 11:03:44,261 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 11:03:44,265 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 11:03:44,270 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 11:03:48,045 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:03:48,322 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:12:12,633 agent_server.py [line:45] INFO request: {'user_id': 'string', 'num_outfits': 4, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 11:12:12,634 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:12:16,233 agent_server.py [line:51] INFO request_summary: ```json -{ - "occasion": "No preference", - "style": "Chinese style", - "color_preference": "No preference", - "clothing_type": "Cheongsam (Qipao)", - "vibe_or_details": "No preference" -} -``` -2025-10-23 11:12:16,288 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:12:22,718 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': '', 'path': '', 'outfit_id': '5baebe07-fa6b-4c3c-9d66-9ba225e8d05c'} -2025-10-23 11:12:24,073 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:12:47,690 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/b52246bb-bb64-42ff-8851-549bcea1a00d.jpg', 'outfit_id': '5baebe07-fa6b-4c3c-9d66-9ba225e8d05c'} -2025-10-23 11:12:48,231 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:13:04,273 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/f71cf5db-dc11-4103-9cf3-bf99ace695f8.jpg', 'outfit_id': '5baebe07-fa6b-4c3c-9d66-9ba225e8d05c'} -2025-10-23 11:13:04,878 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:13:58,911 agent_server.py [line:65] INFO data: {'status': 'stop', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/732aff3e-5c42-46dc-a46a-8a83459c3bae.jpg', 'outfit_id': '5baebe07-fa6b-4c3c-9d66-9ba225e8d05c'} -2025-10-23 11:13:58,923 minio_client.py [line:105] INFO ✅ JSON file uploaded successfully to lanecarford/lc_stylist_agent_outfit_items/string/be9b8fb7-ba78-4e24-95f6-c8da95a1cf31.json -2025-10-23 11:13:58,923 agent_server.py [line:65] INFO data: {'status': 'finish', 'message': 'Finish reason: Uploading the outfit json file is completed', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/be9b8fb7-ba78-4e24-95f6-c8da95a1cf31.json', 'outfit_id': '5baebe07-fa6b-4c3c-9d66-9ba225e8d05c'} -2025-10-23 11:13:58,928 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:14:04,216 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': '', 'outfit_id': '53bb6f9a-d991-46b2-a6e3-68b01194a84b'} -2025-10-23 11:14:04,535 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:14:17,199 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/57b044ec-d115-46cd-945a-e00cf6491bf2.jpg', 'outfit_id': '53bb6f9a-d991-46b2-a6e3-68b01194a84b'} -2025-10-23 11:14:17,548 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:14:46,099 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/330ad35b-86be-4f73-b241-005b75382bd4.jpg', 'outfit_id': '53bb6f9a-d991-46b2-a6e3-68b01194a84b'} -2025-10-23 11:14:46,514 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:15:05,135 agent_server.py [line:65] INFO data: {'status': 'stop', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/f1a706b2-286d-427d-908a-f3461897130e.jpg', 'outfit_id': '53bb6f9a-d991-46b2-a6e3-68b01194a84b'} -2025-10-23 11:15:05,148 minio_client.py [line:105] INFO ✅ JSON file uploaded successfully to lanecarford/lc_stylist_agent_outfit_items/string/ccb2ff08-8921-47ad-b244-511f35e825b4.json -2025-10-23 11:15:05,148 agent_server.py [line:65] INFO data: {'status': 'finish', 'message': 'Finish reason: Uploading the outfit json file is completed', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/ccb2ff08-8921-47ad-b244-511f35e825b4.json', 'outfit_id': '53bb6f9a-d991-46b2-a6e3-68b01194a84b'} -2025-10-23 11:15:05,156 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:15:09,346 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': '', 'outfit_id': '3e9e5ed0-3a63-45a1-8283-b1ddb929c536'} -2025-10-23 11:15:09,644 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:15:24,781 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/bfc789d0-bd41-49f3-8abd-e5f45d41f900.jpg', 'outfit_id': '3e9e5ed0-3a63-45a1-8283-b1ddb929c536'} -2025-10-23 11:15:25,273 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:15:37,273 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/e2dca4dc-f2b2-4b92-90dd-551278d0bc3b.jpg', 'outfit_id': '3e9e5ed0-3a63-45a1-8283-b1ddb929c536'} -2025-10-23 11:15:38,372 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:15:46,216 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/f6001b63-6efc-4cf2-8cfb-b41c07abe214.jpg', 'outfit_id': '3e9e5ed0-3a63-45a1-8283-b1ddb929c536'} -2025-10-23 11:15:47,935 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:16:07,814 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/55f358d6-7582-4757-ac12-2a4e1de7859d.jpg', 'outfit_id': '3e9e5ed0-3a63-45a1-8283-b1ddb929c536'} -2025-10-23 11:16:07,814 agent_server.py [line:65] INFO data: {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/55f358d6-7582-4757-ac12-2a4e1de7859d.jpg', 'outfit_id': '3e9e5ed0-3a63-45a1-8283-b1ddb929c536'} -2025-10-23 11:16:07,825 minio_client.py [line:105] INFO ✅ JSON file uploaded successfully to lanecarford/lc_stylist_agent_outfit_items/string/f9dc2f8e-43b4-45ee-8b43-07fd5d17a40e.json -2025-10-23 11:16:07,825 agent_server.py [line:65] INFO data: {'status': 'finish', 'message': 'Finish reason: Uploading the outfit json file is completed', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/f9dc2f8e-43b4-45ee-8b43-07fd5d17a40e.json', 'outfit_id': '3e9e5ed0-3a63-45a1-8283-b1ddb929c536'} -2025-10-23 11:16:07,831 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:16:11,658 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Reached max outfit length.', 'path': '', 'outfit_id': '96298a98-c882-42b9-abcb-497f29b43cdd'} -2025-10-23 11:16:12,207 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:16:27,292 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/5169274e-3b3c-4aad-8a63-9efb4a2af58f.jpg', 'outfit_id': '96298a98-c882-42b9-abcb-497f29b43cdd'} -2025-10-23 11:16:28,901 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:16:40,761 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/2c6dce9e-9d05-422d-bdc9-fba2fb6b1cf7.jpg', 'outfit_id': '96298a98-c882-42b9-abcb-497f29b43cdd'} -2025-10-23 11:16:41,512 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:17:00,513 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/74f5703d-c19a-421f-be8c-c592dd21ee2a.jpg', 'outfit_id': '96298a98-c882-42b9-abcb-497f29b43cdd'} -2025-10-23 11:17:02,199 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:17:33,140 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/dd1ddbaf-68ca-4e0c-8067-45f7412c2d58.jpg', 'outfit_id': '96298a98-c882-42b9-abcb-497f29b43cdd'} -2025-10-23 11:17:33,141 agent_server.py [line:65] INFO data: {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/dd1ddbaf-68ca-4e0c-8067-45f7412c2d58.jpg', 'outfit_id': '96298a98-c882-42b9-abcb-497f29b43cdd'} -2025-10-23 11:17:33,154 minio_client.py [line:105] INFO ✅ JSON file uploaded successfully to lanecarford/lc_stylist_agent_outfit_items/string/4477404f-a73c-40ce-a712-a3c7ff2109a6.json -2025-10-23 11:17:33,154 agent_server.py [line:65] INFO data: {'status': 'finish', 'message': 'Finish reason: Uploading the outfit json file is completed', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/4477404f-a73c-40ce-a712-a3c7ff2109a6.json', 'outfit_id': '96298a98-c882-42b9-abcb-497f29b43cdd'} -2025-10-23 11:17:33,155 agent_server.py [line:61] INFO ---- Final Recommendation Results --- -2025-10-23 11:18:28,131 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:18:28,173 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:18:28,176 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 11:18:28,186 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 11:18:28,219 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 11:18:28,228 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 11:18:32,277 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:18:32,897 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:19:27,634 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:19:27,657 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:19:27,680 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 11:19:27,689 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 11:19:27,701 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 11:19:27,711 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 11:19:31,006 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:19:31,794 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:20:01,289 agent_server.py [line:70] INFO request: {'user_id': 'string', 'num_outfits': 4, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 11:20:01,290 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:20:05,061 agent_server.py [line:76] INFO request_summary: ```json -{ - "occasion": "Not specified", - "style": "Not specified", - "color_preference": "No preference", - "clothing_type": "Chinese style cheongsam", - "vibe_or_details": "Chinese aesthetic" -} -``` -2025-10-23 11:20:05,061 agent_server.py [line:102] INFO --- Started 4 concurrent outfit generation tasks. --- -2025-10-23 11:20:05,118 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:20:05,127 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:20:05,135 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:20:05,143 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:20:09,011 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:20:09,016 agent_server.py [line:135] INFO data: {'status': 'ok', 'message': '', 'path': '', 'outfit_id': '2c810463-b7ca-4b0d-b421-354bcfca904c'} -2025-10-23 11:20:09,057 minio_client.py [line:105] INFO ✅ JSON file uploaded successfully to lanecarford/lc_stylist_agent_outfit_items/string/6e8d8ac5-c1ea-4c7f-baa5-0c4fc7dd8b67.json -2025-10-23 11:20:09,057 agent_server.py [line:135] INFO data: {'status': 'stop', 'message': 'Finish reason: Duplicate item selected.', 'path': '', 'outfit_id': 'fa846539-1752-4e25-bf9f-56fba4b2d79d'} -2025-10-23 11:20:09,058 agent_server.py [line:135] INFO data: {'status': 'finish', 'message': 'Finish reason: Uploading the outfit json file is completed', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/6e8d8ac5-c1ea-4c7f-baa5-0c4fc7dd8b67.json', 'outfit_id': 'fa846539-1752-4e25-bf9f-56fba4b2d79d'} -2025-10-23 11:20:09,058 agent_server.py [line:113] INFO Outfit fa846539-1752-4e25-bf9f-56fba4b2d79d completed. Total done: 1/4 -2025-10-23 11:20:10,192 minio_client.py [line:105] INFO ✅ JSON file uploaded successfully to lanecarford/lc_stylist_agent_outfit_items/string/d5d0d363-026d-4369-84dd-5b40e7ae5817.json -2025-10-23 11:20:10,193 agent_server.py [line:135] INFO data: {'status': 'stop', 'message': 'Finish reason: Duplicate item selected.', 'path': '', 'outfit_id': '918521d9-aaf1-496b-8d4a-1b6fe0797589'} -2025-10-23 11:20:10,193 agent_server.py [line:135] INFO data: {'status': 'finish', 'message': 'Finish reason: Uploading the outfit json file is completed', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/d5d0d363-026d-4369-84dd-5b40e7ae5817.json', 'outfit_id': '918521d9-aaf1-496b-8d4a-1b6fe0797589'} -2025-10-23 11:20:10,193 agent_server.py [line:113] INFO Outfit 918521d9-aaf1-496b-8d4a-1b6fe0797589 completed. Total done: 2/4 -2025-10-23 11:20:11,527 minio_client.py [line:105] INFO ✅ JSON file uploaded successfully to lanecarford/lc_stylist_agent_outfit_items/string/cb7394f5-37c3-4df5-9a6e-b919fbaa8343.json -2025-10-23 11:20:11,527 agent_server.py [line:135] INFO data: {'status': 'stop', 'message': 'Finish reason: Duplicate item selected.', 'path': '', 'outfit_id': '10b237b1-83bf-4e6f-afec-4d44e94efd3f'} -2025-10-23 11:20:11,527 agent_server.py [line:135] INFO data: {'status': 'finish', 'message': 'Finish reason: Uploading the outfit json file is completed', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/cb7394f5-37c3-4df5-9a6e-b919fbaa8343.json', 'outfit_id': '10b237b1-83bf-4e6f-afec-4d44e94efd3f'} -2025-10-23 11:20:11,527 agent_server.py [line:113] INFO Outfit 10b237b1-83bf-4e6f-afec-4d44e94efd3f completed. Total done: 3/4 -2025-10-23 11:20:46,654 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:20:46,658 agent_server.py [line:135] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/c2feb0de-65f0-47c8-b880-387cee2d29da.jpg', 'outfit_id': '2c810463-b7ca-4b0d-b421-354bcfca904c'} -2025-10-23 11:21:34,535 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:21:34,539 agent_server.py [line:135] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/14bce83e-e756-42ea-bbdf-ce9871daf50a.jpg', 'outfit_id': '2c810463-b7ca-4b0d-b421-354bcfca904c'} -2025-10-23 11:21:59,202 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:21:59,206 agent_server.py [line:135] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/67ead470-42ba-492e-8d21-ed829e24ba4b.jpg', 'outfit_id': '2c810463-b7ca-4b0d-b421-354bcfca904c'} -2025-10-23 11:22:11,106 minio_client.py [line:105] INFO ✅ JSON file uploaded successfully to lanecarford/lc_stylist_agent_outfit_items/string/2005d954-2392-4b17-8d8a-b285bc7bf38a.json -2025-10-23 11:22:11,106 agent_server.py [line:135] INFO data: {'status': 'stop', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/0777d807-5646-4ce0-90b4-c1416637ef04.jpg', 'outfit_id': '2c810463-b7ca-4b0d-b421-354bcfca904c'} -2025-10-23 11:22:11,106 agent_server.py [line:135] INFO data: {'status': 'finish', 'message': 'Finish reason: Uploading the outfit json file is completed', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/2005d954-2392-4b17-8d8a-b285bc7bf38a.json', 'outfit_id': '2c810463-b7ca-4b0d-b421-354bcfca904c'} -2025-10-23 11:22:11,107 agent_server.py [line:113] INFO Outfit 2c810463-b7ca-4b0d-b421-354bcfca904c completed. Total done: 4/4 -2025-10-23 11:22:11,107 agent_server.py [line:124] INFO --- Final Recommendation Results: All tasks finished and merged. --- -2025-10-23 11:24:50,359 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:24:50,371 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:24:50,404 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 11:24:50,413 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 11:24:50,416 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 11:24:50,425 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 11:24:54,163 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:24:55,305 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:25:01,832 agent_server.py [line:70] INFO request: {'user_id': 'string', 'num_outfits': 4, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 11:25:01,833 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:25:05,825 agent_server.py [line:76] INFO request_summary: ```json -{ - "occasion": "Not specified, assistant is asking for details (e.g., special event, celebration)", - "style": "Chinese style, assistant is asking for more details (e.g., traditional, modern, elegant, formal, casual, contemporary)", - "color_preference": "Not specified", - "clothing_type": "Cheongsam", - "vibe_or_details": "Chinese aesthetic" -} -``` -2025-10-23 11:25:05,826 agent_server.py [line:102] INFO --- Started 4 concurrent outfit generation tasks. --- -2025-10-23 11:25:05,866 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:25:05,873 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:25:05,879 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:25:05,884 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:25:26,001 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:25:26,007 agent_server.py [line:135] INFO data: {'status': 'ok', 'message': '', 'path': '', 'outfit_id': 'ad68ad14-b881-4281-b044-8b7d6c63a7e6'} -2025-10-23 11:25:43,263 minio_client.py [line:105] INFO ✅ JSON file uploaded successfully to lanecarford/lc_stylist_agent_outfit_items/string/8018ca0e-c597-498f-b6a0-25927e758d5b.json -2025-10-23 11:26:53,700 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:26:53,744 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 11:26:53,753 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 11:26:53,791 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:26:53,837 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 11:26:53,847 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 11:26:58,122 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:26:58,122 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 11:27:06,240 agent_server.py [line:45] INFO request: {'user_id': 'string', 'num_outfits': 4, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 11:27:06,242 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:27:08,623 agent_server.py [line:51] INFO request_summary: ```json -{ - "occasion": null, - "style": null, - "color_preference": "No preference", - "clothing_type": "Chinese style cheongsam", - "vibe_or_details": null -} -``` -2025-10-23 11:27:08,688 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:27:15,181 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': '', 'path': '', 'outfit_id': '4ace98e2-fc3c-4da1-8a66-b1f18358cdd1'} -2025-10-23 11:27:15,182 agent_server.py [line:65] INFO data: {'status': None, 'message': '', 'path': '', 'outfit_id': '4ace98e2-fc3c-4da1-8a66-b1f18358cdd1'} -2025-10-23 11:27:15,654 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:27:23,943 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/372257a1-75a2-4f58-8f51-bffb84ac949f.jpg', 'outfit_id': '4ace98e2-fc3c-4da1-8a66-b1f18358cdd1'} -2025-10-23 11:27:24,367 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:27:49,603 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/1dc4d364-3d80-4258-afc8-a0e1026d07eb.jpg', 'outfit_id': '4ace98e2-fc3c-4da1-8a66-b1f18358cdd1'} -2025-10-23 11:27:50,012 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:28:35,706 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/55c2199b-a6fc-4ec5-9f9b-a355cf6a0c45.jpg', 'outfit_id': '4ace98e2-fc3c-4da1-8a66-b1f18358cdd1'} -2025-10-23 11:28:36,168 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:29:03,107 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/32ba57ef-c0f5-4127-93a1-67a363b698d7.jpg', 'outfit_id': '4ace98e2-fc3c-4da1-8a66-b1f18358cdd1'} -2025-10-23 11:29:03,108 agent_server.py [line:65] INFO data: {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/32ba57ef-c0f5-4127-93a1-67a363b698d7.jpg', 'outfit_id': '4ace98e2-fc3c-4da1-8a66-b1f18358cdd1'} -2025-10-23 11:29:03,132 minio_client.py [line:105] INFO ✅ JSON file uploaded successfully to lanecarford/lc_stylist_agent_outfit_items/string/bdada992-5da4-4a4b-8313-39c2cd18ebee.json -2025-10-23 11:29:03,133 agent_server.py [line:65] INFO data: {'status': 'finish', 'message': 'Finish reason: Uploading the outfit json file is completed', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/bdada992-5da4-4a4b-8313-39c2cd18ebee.json', 'outfit_id': '4ace98e2-fc3c-4da1-8a66-b1f18358cdd1'} -2025-10-23 11:29:03,139 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:29:06,431 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Reached max outfit length.', 'path': '', 'outfit_id': 'd156fb58-e9b1-47f2-b9c8-15d6b50f38e3'} -2025-10-23 11:29:06,738 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:29:12,217 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/4461112f-ba84-441f-a557-bf48491c0a50.jpg', 'outfit_id': 'd156fb58-e9b1-47f2-b9c8-15d6b50f38e3'} -2025-10-23 11:29:12,593 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:29:52,020 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/310d14c6-e5f7-4f7a-a091-df7c23f349bd.jpg', 'outfit_id': 'd156fb58-e9b1-47f2-b9c8-15d6b50f38e3'} -2025-10-23 11:29:52,501 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:30:26,208 agent_server.py [line:65] INFO data: {'status': 'stop', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/f196dcbb-e60e-4bc1-9c04-db0744a86317.jpg', 'outfit_id': 'd156fb58-e9b1-47f2-b9c8-15d6b50f38e3'} -2025-10-23 11:30:26,219 minio_client.py [line:105] INFO ✅ JSON file uploaded successfully to lanecarford/lc_stylist_agent_outfit_items/string/d9ee3b3d-7f8b-431a-a860-948157c3997f.json -2025-10-23 11:30:26,219 agent_server.py [line:65] INFO data: {'status': 'finish', 'message': 'Finish reason: Uploading the outfit json file is completed', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/d9ee3b3d-7f8b-431a-a860-948157c3997f.json', 'outfit_id': 'd156fb58-e9b1-47f2-b9c8-15d6b50f38e3'} -2025-10-23 11:30:26,224 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:30:31,001 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': '', 'outfit_id': 'ccecd1dc-ddcb-421c-a6a2-6448c89c3e2b'} -2025-10-23 11:30:31,303 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:30:49,896 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/5aa90e6b-d88b-4cd5-953b-95a3b83c0e1a.jpg', 'outfit_id': 'ccecd1dc-ddcb-421c-a6a2-6448c89c3e2b'} -2025-10-23 11:30:50,305 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:31:00,222 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/6766500f-e68b-4e78-a2c4-d1f471a336e6.jpg', 'outfit_id': 'ccecd1dc-ddcb-421c-a6a2-6448c89c3e2b'} -2025-10-23 11:31:00,611 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:31:36,207 agent_server.py [line:65] INFO data: {'status': 'stop', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/d6722e1c-b416-4f2f-a451-654380c259ce.jpg', 'outfit_id': 'ccecd1dc-ddcb-421c-a6a2-6448c89c3e2b'} -2025-10-23 11:31:36,218 minio_client.py [line:105] INFO ✅ JSON file uploaded successfully to lanecarford/lc_stylist_agent_outfit_items/string/29f27155-ee33-4abf-b953-feaeab4dddad.json -2025-10-23 11:31:36,218 agent_server.py [line:65] INFO data: {'status': 'finish', 'message': 'Finish reason: Uploading the outfit json file is completed', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/29f27155-ee33-4abf-b953-feaeab4dddad.json', 'outfit_id': 'ccecd1dc-ddcb-421c-a6a2-6448c89c3e2b'} -2025-10-23 11:31:36,223 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:31:39,234 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': '', 'outfit_id': 'f4cb025a-3472-4951-8a1f-92b661b28e8c'} -2025-10-23 11:31:39,566 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:31:45,494 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/9a99e594-0a0d-4b6b-ab2b-d9af1127a355.jpg', 'outfit_id': 'f4cb025a-3472-4951-8a1f-92b661b28e8c'} -2025-10-23 11:31:45,858 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:32:02,528 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/98191298-4ac1-4be8-bc0b-6e065b0a5263.jpg', 'outfit_id': 'f4cb025a-3472-4951-8a1f-92b661b28e8c'} -2025-10-23 11:32:02,915 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:32:33,491 agent_server.py [line:65] INFO data: {'status': 'ok', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/659e56c9-5c7f-4199-9427-c39a52a57ded.jpg', 'outfit_id': 'f4cb025a-3472-4951-8a1f-92b661b28e8c'} -2025-10-23 11:32:33,943 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 11:33:23,443 agent_server.py [line:65] INFO data: {'status': 'stop', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/bb779d0c-d0a4-4718-bd0f-c0746a75b6e9.jpg', 'outfit_id': 'f4cb025a-3472-4951-8a1f-92b661b28e8c'} -2025-10-23 11:33:23,455 minio_client.py [line:105] INFO ✅ JSON file uploaded successfully to lanecarford/lc_stylist_agent_outfit_items/string/dbecf137-1b05-40fb-939c-8cca26cd9442.json -2025-10-23 11:33:23,455 agent_server.py [line:65] INFO data: {'status': 'finish', 'message': 'Finish reason: Uploading the outfit json file is completed', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/dbecf137-1b05-40fb-939c-8cca26cd9442.json', 'outfit_id': 'f4cb025a-3472-4951-8a1f-92b661b28e8c'} -2025-10-23 11:33:23,455 agent_server.py [line:61] INFO ---- Final Recommendation Results --- -2025-10-23 13:25:28,620 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:25:28,663 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:25:28,665 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 13:25:28,675 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 13:25:28,708 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 13:25:28,717 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 13:25:32,800 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:25:32,869 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:25:37,723 agent_server.py [line:46] INFO request: {'user_id': 'string', 'num_outfits': 4, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 13:25:37,724 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:25:40,943 agent_server.py [line:52] INFO request_summary: ```json -{ - "occasion": "Not specified", - "style": "Chinese traditional (cheongsam)", - "color_preference": "No preference", - "clothing_type": "Cheongsam (旗袍)", - "vibe_or_details": "Chinese style" -} -``` -2025-10-23 13:25:47,625 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:25:49,542 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:25:50,814 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:25:52,159 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:26:01,351 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:26:01,391 minio_client.py [line:105] INFO ✅ JSON file uploaded successfully to lanecarford/lc_stylist_agent_outfit_items/string/f2c7668d-e445-4416-bb64-b200f2835e40.json -2025-10-23 13:26:01,421 minio_client.py [line:105] INFO ✅ JSON file uploaded successfully to lanecarford/lc_stylist_agent_outfit_items/string/f2a64497-9b91-4bbc-ac44-325e49db7b60.json -2025-10-23 13:26:01,452 minio_client.py [line:105] INFO ✅ JSON file uploaded successfully to lanecarford/lc_stylist_agent_outfit_items/string/a152d27a-06dd-4b10-9329-f85807158703.json -2025-10-23 13:27:13,857 minio_client.py [line:105] INFO ✅ JSON file uploaded successfully to lanecarford/lc_stylist_agent_outfit_items/string/61979b6f-4627-4e6c-b3b3-6cb5a2e30064.json -2025-10-23 13:28:06,446 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:28:06,492 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 13:28:06,497 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:28:06,502 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 13:28:06,544 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 13:28:06,553 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 13:28:11,341 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:28:11,585 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:28:14,248 agent_server.py [line:46] INFO request: {'user_id': 'string', 'num_outfits': 4, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 13:28:14,248 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:28:20,805 agent_server.py [line:52] INFO request_summary: ```json -{ - "occasion": "Not specified", - "style": "Chinese style", - "color_preference": "No preference", - "clothing_type": "Cheongsam", - "vibe_or_details": "No specific details" -} -``` -2025-10-23 13:28:25,126 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:28:26,577 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:28:27,659 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:28:28,798 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:28:39,554 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:29:24,681 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:29:54,405 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:29:54,431 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:29:54,451 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 13:29:54,460 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 13:29:54,475 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 13:29:54,485 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 13:29:58,510 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:29:59,200 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:30:29,611 agent_server.py [line:46] INFO request: {'user_id': 'string', 'num_outfits': 4, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 13:30:29,612 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:30:33,707 agent_server.py [line:52] INFO request_summary: ```json -{ - "occasion": "Special event or celebration", - "style": "Chinese traditional elegance", - "color_preference": "No preference", - "clothing_type": "Cheongsam (qipao), Chinese style", - "vibe_or_details": "Elegant and formal" -} -``` -2025-10-23 13:30:42,522 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:30:57,725 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:31:01,957 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:31:04,104 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:31:16,166 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:31:41,077 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:31:50,086 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:43:46,382 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:43:46,412 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:43:46,427 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 13:43:46,436 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 13:43:46,456 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 13:43:46,466 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 13:43:51,446 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:43:52,394 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 4, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 13:43:52,395 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:43:56,097 agent_server.py [line:53] INFO request_summary: ```json -{ - "occasion": "Not specified", - "style": "Chinese style", - "color_preference": "No preference", - "clothing_type": "Cheongsam", - "vibe_or_details": "Traditional Chinese aesthetics" -} -``` -2025-10-23 13:43:56,098 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:43:56,172 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:43:56,228 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:43:56,283 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:43:58,756 stylist_agent_server.py [line:274] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'dce4e9c0-a5be-4268-adff-9552caddd22f'} -2025-10-23 13:43:58,757 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:43:58,765 stylist_agent_server.py [line:274] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'bc602866-1120-4882-bba3-31bfe684e049'} -2025-10-23 13:43:58,765 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:43:58,770 stylist_agent_server.py [line:274] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '0ceb3eb5-8020-4600-97d3-0f50a5e0983b'} -2025-10-23 13:43:58,771 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:43:58,776 stylist_agent_server.py [line:274] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'b4636bcf-6fe6-4707-90c2-e75857957644'} -2025-10-23 13:43:58,777 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:44:02,849 stylist_agent_server.py [line:364] INFO {'status': 'ok', 'message': '', 'path': '', 'outfit_id': '0ceb3eb5-8020-4600-97d3-0f50a5e0983b'} -2025-10-23 13:44:03,381 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:44:03,415 stylist_agent_server.py [line:364] INFO {'status': 'ok', 'message': '', 'path': '', 'outfit_id': 'bc602866-1120-4882-bba3-31bfe684e049'} -2025-10-23 13:44:03,798 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:44:04,985 stylist_agent_server.py [line:364] INFO {'status': 'ok', 'message': '', 'path': '', 'outfit_id': 'dce4e9c0-a5be-4268-adff-9552caddd22f'} -2025-10-23 13:44:05,342 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:44:05,374 stylist_agent_server.py [line:364] INFO {'status': 'ok', 'message': '', 'path': '', 'outfit_id': 'b4636bcf-6fe6-4707-90c2-e75857957644'} -2025-10-23 13:44:05,835 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:44:11,594 stylist_agent_server.py [line:364] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/bcff7784-855a-4650-a54c-0f08fa0c8c95.jpg', 'outfit_id': 'bc602866-1120-4882-bba3-31bfe684e049'} -2025-10-23 13:44:11,911 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:44:15,744 stylist_agent_server.py [line:364] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/23e31943-ece7-4a62-87c5-b31818a4b811.jpg', 'outfit_id': '0ceb3eb5-8020-4600-97d3-0f50a5e0983b'} -2025-10-23 13:44:16,113 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:44:16,432 stylist_agent_server.py [line:364] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/eff89bcf-15d6-45a9-838f-fc667d664fda.jpg', 'outfit_id': 'b4636bcf-6fe6-4707-90c2-e75857957644'} -2025-10-23 13:44:16,770 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:44:20,357 stylist_agent_server.py [line:341] INFO {'status': 'stop', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/5de155d0-56a6-43e8-a2f1-7538fce86220.jpg', 'outfit_id': 'bc602866-1120-4882-bba3-31bfe684e049'} -2025-10-23 13:44:20,358 stylist_agent_server.py [line:398] INFO {'status': 'stop', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/5de155d0-56a6-43e8-a2f1-7538fce86220.jpg', 'outfit_id': 'bc602866-1120-4882-bba3-31bfe684e049'} -2025-10-23 13:44:25,524 stylist_agent_server.py [line:364] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/a92afc54-a169-4f17-97b1-a347b01f65e5.jpg', 'outfit_id': 'b4636bcf-6fe6-4707-90c2-e75857957644'} -2025-10-23 13:44:25,895 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:44:25,958 stylist_agent_server.py [line:364] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/d8551497-07a3-43aa-8b0e-f7d3fdbaecd3.jpg', 'outfit_id': '0ceb3eb5-8020-4600-97d3-0f50a5e0983b'} -2025-10-23 13:44:26,434 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:44:33,940 stylist_agent_server.py [line:364] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/77998525-5fca-4a9a-abc3-57ab0bd6d906.jpg', 'outfit_id': 'dce4e9c0-a5be-4268-adff-9552caddd22f'} -2025-10-23 13:44:34,274 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:44:41,417 stylist_agent_server.py [line:364] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/bd4e3dae-38c5-46a5-ace1-0981d2a824c0.jpg', 'outfit_id': 'b4636bcf-6fe6-4707-90c2-e75857957644'} -2025-10-23 13:44:41,830 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:44:41,861 stylist_agent_server.py [line:364] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/04c2e2d1-24c7-4770-8501-448624327e13.jpg', 'outfit_id': '0ceb3eb5-8020-4600-97d3-0f50a5e0983b'} -2025-10-23 13:44:42,284 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:44:44,902 stylist_agent_server.py [line:364] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/d4f54181-4f07-4ca1-ad89-45fcea73dc65.jpg', 'outfit_id': 'dce4e9c0-a5be-4268-adff-9552caddd22f'} -2025-10-23 13:44:45,255 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:44:55,768 stylist_agent_server.py [line:364] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/5bd19a7c-2c9e-405b-896b-84f2169c1c3a.jpg', 'outfit_id': 'b4636bcf-6fe6-4707-90c2-e75857957644'} -2025-10-23 13:44:55,768 stylist_agent_server.py [line:385] INFO {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/5bd19a7c-2c9e-405b-896b-84f2169c1c3a.jpg'} -2025-10-23 13:44:55,778 stylist_agent_server.py [line:398] INFO {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/5bd19a7c-2c9e-405b-896b-84f2169c1c3a.jpg'} -2025-10-23 13:44:58,356 stylist_agent_server.py [line:364] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/b329df14-9b79-4ca5-8831-1a306acfed20.jpg', 'outfit_id': 'dce4e9c0-a5be-4268-adff-9552caddd22f'} -2025-10-23 13:44:58,787 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:45:01,119 stylist_agent_server.py [line:341] INFO {'status': 'stop', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/1cd1803c-5f51-4961-a4f2-2acd3e0d8294.jpg', 'outfit_id': '0ceb3eb5-8020-4600-97d3-0f50a5e0983b'} -2025-10-23 13:45:01,120 stylist_agent_server.py [line:398] INFO {'status': 'stop', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/1cd1803c-5f51-4961-a4f2-2acd3e0d8294.jpg', 'outfit_id': '0ceb3eb5-8020-4600-97d3-0f50a5e0983b'} -2025-10-23 13:45:20,358 stylist_agent_server.py [line:364] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/7fed1c7b-9efd-41fa-a335-182c310ea611.jpg', 'outfit_id': 'dce4e9c0-a5be-4268-adff-9552caddd22f'} -2025-10-23 13:45:20,358 stylist_agent_server.py [line:385] INFO {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/7fed1c7b-9efd-41fa-a335-182c310ea611.jpg'} -2025-10-23 13:45:20,359 stylist_agent_server.py [line:398] INFO {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/7fed1c7b-9efd-41fa-a335-182c310ea611.jpg'} -2025-10-23 13:54:25,342 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:54:25,366 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:54:25,388 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 13:54:25,397 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 13:54:25,411 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 13:54:25,420 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 13:54:29,582 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:54:54,573 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 4, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 13:54:54,574 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:54:57,710 agent_server.py [line:53] INFO request_summary: ```json -{ - "occasion": "No preference", - "style": "Chinese style", - "color_preference": "No preference", - "clothing_type": "Cheongsam", - "vibe_or_details": "No preference" -} -``` -2025-10-23 13:54:57,711 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:54:57,767 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:54:57,819 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:54:57,872 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 13:54:57,954 stylist_agent_server.py [line:274] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '6b22e935-0db7-4837-8e0f-6e2b8d1928c8'} -2025-10-23 13:54:57,954 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:54:57,958 stylist_agent_server.py [line:274] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '9a6a2b1a-e04e-491d-83a3-9d2eded56584'} -2025-10-23 13:54:57,959 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:54:57,963 stylist_agent_server.py [line:274] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'fbdba0ee-bf25-4487-a88f-29d00507f248'} -2025-10-23 13:54:57,964 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:54:57,970 stylist_agent_server.py [line:274] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'b1b256ce-0648-44b1-abe4-10c9c96e461b'} -2025-10-23 13:54:57,970 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:05:50,606 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:05:50,606 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:05:50,651 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 14:05:50,651 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 14:05:50,660 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 14:05:50,660 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 14:05:55,033 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:06:00,209 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 4, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 14:06:00,210 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:06:07,708 agent_server.py [line:53] INFO request_summary: ```json -{ - "occasion": "Unspecified", - "style": "Chinese style", - "color_preference": "No preference", - "clothing_type": "Cheongsam", - "vibe_or_details": "No additional details" -} -``` -2025-10-23 14:06:07,709 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:06:07,765 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:06:07,819 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:06:07,872 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:06:07,953 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'eb372841-06de-4441-a156-5d1e53c1203c', 'items': []} -2025-10-23 14:06:07,953 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:06:07,958 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'f9dde999-80c2-46d2-970d-78e28410bd68', 'items': []} -2025-10-23 14:06:07,959 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:06:07,963 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '694d1893-9ee9-48b0-ae4e-5b602c13d82d', 'items': []} -2025-10-23 14:06:07,964 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:06:07,969 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'c6322143-7b86-440f-97a4-d6568e4da393', 'items': []} -2025-10-23 14:06:07,970 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:07:15,894 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:07:43,086 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:08:03,031 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:09:36,436 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:09:36,445 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:09:36,482 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 14:09:36,491 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 14:09:36,492 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 14:09:36,501 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 14:09:41,297 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:09:49,328 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 4, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 14:09:49,329 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:09:53,829 agent_server.py [line:53] INFO request_summary: ```json -{ - "occasion": "No preference", - "style": "Chinese style", - "color_preference": "No preference", - "clothing_type": "Cheongsam (Qipao)", - "vibe_or_details": "Chinese cultural aesthetic" -} -``` -2025-10-23 14:09:53,830 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:09:53,887 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:09:53,940 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:09:53,993 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:09:54,083 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '60416e04-6303-41e7-a086-945e03e5d215', 'items': []} -2025-10-23 14:09:54,083 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:09:54,088 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '650a6975-7f43-489e-964a-8befba246585', 'items': []} -2025-10-23 14:09:54,088 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:09:54,093 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'e6988ddf-410f-407f-a664-107e27004a6d', 'items': []} -2025-10-23 14:09:54,093 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:09:54,098 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '24986e27-f964-4d27-8a13-417d87f3cf9a', 'items': []} -2025-10-23 14:09:54,098 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:10:03,704 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:11:55,714 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:11:55,762 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 14:11:55,763 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:11:55,772 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 14:11:55,809 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 14:11:55,819 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 14:12:00,397 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:12:13,190 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 4, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 14:12:13,191 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:12:17,090 agent_server.py [line:53] INFO request_summary: ```json -{ - "occasion": "Not specified", - "style": "Chinese traditional aesthetic", - "color_preference": "No preference", - "clothing_type": "Cheongsam", - "vibe_or_details": "Chinese style" -} -``` -2025-10-23 14:12:17,090 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:12:17,146 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:12:17,201 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:12:17,256 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:12:17,409 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '109380f4-2492-4d00-ac1b-95a58d732df7', 'items': []} -2025-10-23 14:12:17,409 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:12:17,414 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'f3721f46-c549-4189-a7a4-280d7317e557', 'items': []} -2025-10-23 14:12:17,414 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:12:17,419 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'd2204d6e-cbfa-4afd-b210-a7ae5b608916', 'items': []} -2025-10-23 14:12:17,420 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:12:17,426 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'ef5d6386-1f0d-4384-b190-16eb78872153', 'items': []} -2025-10-23 14:12:17,426 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:12:38,274 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:12:56,300 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:13:03,927 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:13:10,972 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:13:13,194 stylist_agent_server.py [line:356] INFO {'status': 'stop', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/9dd7568b-75e5-48e0-8f6f-588b49dd607f.jpg', 'outfit_id': 'd2204d6e-cbfa-4afd-b210-a7ae5b608916', 'items': ['EKO522']} -2025-10-23 14:13:13,194 stylist_agent_server.py [line:357] INFO [{'item_id': 'EKO522', 'category': 'Dresses', 'gpt_description': 'Slim-fit cheongsam dress in a vibrant red silk blend, featuring intricate gold and emerald floral embroidery that evokes a traditional Chinese aesthetic. The dress has a classic mandarin collar and short sleeves, serving as the central piece and primary pattern for the outfit.', 'description': "Add an edgy urban touch to your wardrobe with this pre-styled dress from alexanderwang which can be worn as a dress when closed or as a blazer when open. It is intentionally tucked at the yoke to evoke a layered look, underscoring this collection's theme of morphed tailoring, a study in the evolution of the garment.", 'image_path': 'EKO522.jpg'}] -2025-10-23 14:13:22,047 stylist_agent_server.py [line:356] INFO {'status': 'stop', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/f69e6a38-6230-4398-ac81-7d3fbcc7d314.jpg', 'outfit_id': 'f3721f46-c549-4189-a7a4-280d7317e557', 'items': ['EKO522']} -2025-10-23 14:13:22,047 stylist_agent_server.py [line:357] INFO [{'item_id': 'EKO522', 'category': 'Dresses', 'gpt_description': "A slim-fit, floor-length Cheongsam dress in a rich sapphire blue silk, featuring an intricate traditional Chinese floral pattern embroidered in gold and deep red hues. It has a classic mandarin collar, frog button fastenings, and a high side slit for a traditional yet elegant silhouette. This dress serves as the primary garment, embodying the Chinese traditional aesthetic and setting the 'heavy print' foundation for the outfit.", 'description': "Add an edgy urban touch to your wardrobe with this pre-styled dress from alexanderwang which can be worn as a dress when closed or as a blazer when open. It is intentionally tucked at the yoke to evoke a layered look, underscoring this collection's theme of morphed tailoring, a study in the evolution of the garment.", 'image_path': 'EKO522.jpg'}] -2025-10-23 14:13:26,653 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:13:29,495 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:13:47,830 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:13:51,970 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:13:58,496 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:14:02,277 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:14:11,775 stylist_agent_server.py [line:353] INFO {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/e2ff7826-ae7f-4799-a76c-6f9e103759f3.jpg', 'outfit_id': '109380f4-2492-4d00-ac1b-95a58d732df7', 'items': ['EKO522', 'EHJ697', 'EHK161', 'ELH616', 'EJU066']} -2025-10-23 14:14:11,776 stylist_agent_server.py [line:356] INFO {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/e2ff7826-ae7f-4799-a76c-6f9e103759f3.jpg', 'outfit_id': '109380f4-2492-4d00-ac1b-95a58d732df7', 'items': ['EKO522', 'EHJ697', 'EHK161', 'ELH616', 'EJU066']} -2025-10-23 14:14:11,776 stylist_agent_server.py [line:357] INFO [{'item_id': 'EKO522', 'category': 'Dresses', 'gpt_description': 'A long, slim-fit cheongsam dress in a vibrant ruby red silk fabric, featuring an ornate embroidered pattern of traditional Chinese peonies and phoenixes in gold and deep blue threads. It has a high mandarin collar and delicate frog buttons, serving as the central and foundational piece for a Chinese traditional aesthetic outfit.', 'description': "Add an edgy urban touch to your wardrobe with this pre-styled dress from alexanderwang which can be worn as a dress when closed or as a blazer when open. It is intentionally tucked at the yoke to evoke a layered look, underscoring this collection's theme of morphed tailoring, a study in the evolution of the garment.", 'image_path': 'EKO522.jpg'}, {'item_id': 'EHJ697', 'category': 'Shoes', 'gpt_description': 'Solid black leather pointed low heels, designed with a sleek and sharp silhouette to complement the edgy urban aesthetic of the dress. These heels provide a subtle lift and sophisticated finish, grounding the morphed tailoring of the dress while adhering to the pure, solid color principle for shoes.', 'description': 'Thom Browne presents a delightful twist on tweed with these loafers, showcasing a woven texture that exudes charm and character. The classic penny style receives a fresh update through a navy hue and the iconic RWB tab, infusing the shoes with a modern and distinctive allure.', 'image_path': 'EHJ697.jpg'}, {'item_id': 'EHK161', 'category': 'Pants', 'gpt_description': "Dark wash indigo, straight-leg denim pants with a clean finish. These sturdy denim pants will be worn underneath the alexanderwang blazer-dress to introduce a textural contrast and achieve a 'pattern clash' with the dress's unique tailoring, completing the lower body in an edgy-casual manner as per the style guide's preference for denim items.", 'description': 'EENK serves boldness to their collections, showcasing the most unconventional designs like these half shorts that is accented with a lace panel and a lace trim. Adding a spin on a classic pair of white shorts, the exquisite details brings a sense of artistry to your look.', 'image_path': 'EHK161.jpg'}, {'item_id': 'ELH616', 'category': 'Handbags', 'gpt_description': "A structured, medium-sized solid black leather handbag with a sleek, minimalist design. It features a single top handle and an optional detachable shoulder strap, made from smooth, high-quality black leather, possibly with subtle gold-toned hardware. This bag serves as a pure, solid-colored accessory to ground the existing patterned elements of the outfit and aligns with the edgy urban aesthetic, while strictly adhering to the style guide's requirement for solid color leather bags.", 'description': 'The Ola is a soft, versatile and lightweight summer bag that is defined by a flowy, curved silhouette. Accented with a statement donut chain and a removable leather strap, this carryall complements perfectly from your resort-ready edits to your office curations.', 'image_path': 'ELH616.jpg'}, {'item_id': 'EJU066', 'category': 'Jewelry', 'gpt_description': 'A fine gold-toned chain necklace, approximately 18 inches in length, with a small, circular, polished gold pendant. This mandatory accessory adds a subtle touch of metallic warmth to the neckline, adhering to the gold tones preference outlined in the style guide.', 'description': "Explore Constellation collection bracelet where Tateossian blendsnature's beauty with enduring sophistication. This piece features rhodium-plated silver discs, accented by hand-carved moss agate rondelle beads for a touch of natural elegance.", 'image_path': 'EJU066.jpg'}] -2025-10-23 14:14:41,300 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:14:41,300 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:14:41,346 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 14:14:41,346 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 14:14:41,356 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 14:14:41,356 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 14:14:46,546 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:15:46,686 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 4, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 14:15:46,687 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:15:49,764 agent_server.py [line:53] INFO request_summary: ```json -{ - "occasion": "Not specified", - "style": "Not specified", - "color_preference": "No preference", - "clothing_type": "Chinese style cheongsam", - "vibe_or_details": "Not specified" -} -``` -2025-10-23 14:15:49,765 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:15:49,852 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:15:49,906 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:15:49,960 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:15:50,052 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '5f4a835e-b0e5-4932-8875-aa46b7b8dbfd', 'items': []} -2025-10-23 14:15:50,052 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:15:50,056 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '66ddb06a-73ca-4ed9-8dbb-2a99c550d9cf', 'items': []} -2025-10-23 14:15:50,057 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:15:50,062 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '0728807d-69f2-4524-b96e-a5c04455a097', 'items': []} -2025-10-23 14:15:50,062 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:15:50,068 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'bad841e4-ccbf-481a-8406-7c55f170979b', 'items': []} -2025-10-23 14:15:50,068 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:15:54,878 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:15:56,974 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:15:59,060 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:16:00,560 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:16:03,967 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:16:13,889 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:16:14,986 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:16:24,520 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:16:29,136 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:16:33,990 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:16:36,324 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:16:40,688 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:16:46,028 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:16:53,207 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:16:55,538 stylist_agent_server.py [line:353] INFO {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/76cff5dd-8e2d-4f61-8e22-2d64a606984d.jpg', 'outfit_id': '0728807d-69f2-4524-b96e-a5c04455a097', 'items': ['EKO522', 'EIQ863', 'EIJ070', 'EHJ697', 'ELH616']} -2025-10-23 14:16:55,538 stylist_agent_server.py [line:356] INFO {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/76cff5dd-8e2d-4f61-8e22-2d64a606984d.jpg', 'outfit_id': '0728807d-69f2-4524-b96e-a5c04455a097', 'items': ['EKO522', 'EIQ863', 'EIJ070', 'EHJ697', 'ELH616']} -2025-10-23 14:17:01,494 stylist_agent_server.py [line:356] INFO {'status': 'stop', 'message': 'Finish reason: Duplicate item selected.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/c33cd98c-8947-4aef-9e13-1b21a51609fd.jpg', 'outfit_id': '66ddb06a-73ca-4ed9-8dbb-2a99c550d9cf', 'items': ['EKO522', 'EIQ863', 'EIJ070', 'EHJ697']} -2025-10-23 14:17:05,213 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:17:08,524 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:17:22,050 stylist_agent_server.py [line:353] INFO {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/7a8a524a-d5ef-4fc8-b51e-aa8d91badd27.jpg', 'outfit_id': 'bad841e4-ccbf-481a-8406-7c55f170979b', 'items': ['EKO522', 'EIQ863', 'EKR023', 'EHJ697', 'ELH616']} -2025-10-23 14:17:22,050 stylist_agent_server.py [line:356] INFO {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/7a8a524a-d5ef-4fc8-b51e-aa8d91badd27.jpg', 'outfit_id': 'bad841e4-ccbf-481a-8406-7c55f170979b', 'items': ['EKO522', 'EIQ863', 'EKR023', 'EHJ697', 'ELH616']} -2025-10-23 14:17:41,310 stylist_agent_server.py [line:353] INFO {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/3ab49423-776a-4e76-a9ea-48cf524e9081.jpg', 'outfit_id': '5f4a835e-b0e5-4932-8875-aa46b7b8dbfd', 'items': ['EKO522', 'EIJ070', 'EIQ863', 'EHJ697', 'ELH616']} -2025-10-23 14:17:41,311 stylist_agent_server.py [line:356] INFO {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/3ab49423-776a-4e76-a9ea-48cf524e9081.jpg', 'outfit_id': '5f4a835e-b0e5-4932-8875-aa46b7b8dbfd', 'items': ['EKO522', 'EIJ070', 'EIQ863', 'EHJ697', 'ELH616']} -2025-10-23 14:19:32,810 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:19:32,855 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 14:19:32,865 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 14:19:32,884 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:19:32,929 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 14:19:32,938 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 14:19:36,978 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:19:48,353 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 14:19:48,354 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:19:52,353 agent_server.py [line:53] INFO request_summary: ```json -{ - "occasion": "Not specified, looking for input on event type (e.g., special event, celebration)", - "style": "Chinese style (traditional, modern interpretation, elegant, formal, casual, or contemporary yet to be specified)", - "color_preference": "Not specified", - "clothing_type": "Cheongsam (Qipao)", - "vibe_or_details": "Not specified" -} -``` -2025-10-23 14:19:52,354 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:19:52,534 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '254d26ee-e46e-430d-86d7-5b4a3db8fe3d', 'items': []} -2025-10-23 14:19:58,063 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:20:09,717 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:20:45,984 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:21:51,456 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:21:51,501 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 14:21:51,510 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:21:51,511 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 14:21:51,557 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 14:21:51,566 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 14:21:54,332 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:21:55,358 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 14:21:55,359 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:21:58,420 agent_server.py [line:53] INFO request_summary: ```json -{ - "occasion": "Not specified", - "style": "Chinese style", - "color_preference": "No preference", - "clothing_type": "Cheongsam", - "vibe_or_details": "Traditional or modern interpretation, and formality (e.g., elegant and formal, or casual and contemporary) are not specified by the user." -} -``` -2025-10-23 14:21:58,421 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:21:58,505 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '4cbc3a70-8c7e-4cf0-b51d-7319a590cbf9', 'items': []} -2025-10-23 14:22:03,288 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:23:20,291 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:24:23,186 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:24:51,196 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:29:20,659 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:30:25,638 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:30:25,644 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:30:25,685 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 14:30:25,691 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 14:30:25,695 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 14:30:25,701 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 14:30:29,930 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:30:35,161 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 14:30:35,162 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:30:40,034 agent_server.py [line:53] INFO request_summary: ```json -{ - "occasion": null, - "style": "Chinese style", - "color_preference": null, - "clothing_type": "Cheongsam", - "vibe_or_details": null -} -``` -2025-10-23 14:30:40,035 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:30:40,269 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '15dfc4ba-51b8-49b2-b80f-a3cd4b652d4b', 'items': []} -2025-10-23 14:30:43,567 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:30:55,219 stylist_agent_server.py [line:356] INFO {'status': 'ok', 'message': '', 'path': '', 'outfit_id': '15dfc4ba-51b8-49b2-b80f-a3cd4b652d4b', 'items': ['EHV371']} -2025-10-23 14:30:57,189 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:31:02,866 stylist_agent_server.py [line:356] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/bfe16c02-3704-4518-b08d-c4d056f09a52.jpg', 'outfit_id': '15dfc4ba-51b8-49b2-b80f-a3cd4b652d4b', 'items': ['EHV371', 'EHJ697']} -2025-10-23 14:31:03,791 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:31:23,222 stylist_agent_server.py [line:356] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/58c99987-4950-44fa-b8c4-44f6a25beb1f.jpg', 'outfit_id': '15dfc4ba-51b8-49b2-b80f-a3cd4b652d4b', 'items': ['EHV371', 'EHJ697', 'EKR023']} -2025-10-23 14:33:38,446 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:33:38,475 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:33:38,491 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 14:33:38,501 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 14:33:38,520 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 14:33:38,530 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 14:33:43,267 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:33:50,298 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 14:33:50,299 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:33:53,466 agent_server.py [line:53] INFO request_summary: ```json -{ - "occasion": "Not specified", - "style": "Chinese style cheongsam", - "color_preference": "No preference", - "clothing_type": "Cheongsam", - "vibe_or_details": "Not specified" -} -``` -2025-10-23 14:33:53,466 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 14:33:53,792 stylist_agent_server.py [line:275] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'f65d857a-9c32-4a21-a06e-bd42d45e9fa2', 'items': []} -2025-10-23 14:33:56,592 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:34:02,957 stylist_agent_server.py [line:358] INFO {'status': 'ok', 'message': '', 'path': '', 'outfit_id': 'f65d857a-9c32-4a21-a06e-bd42d45e9fa2', 'items': ['']} -2025-10-23 14:34:11,915 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:34:20,742 stylist_agent_server.py [line:358] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/63d8af3c-9deb-40b8-aaf4-c97781d7853e.jpg', 'outfit_id': 'f65d857a-9c32-4a21-a06e-bd42d45e9fa2', 'items': ['', 'EKO522']} -2025-10-23 14:34:45,694 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:35:04,692 stylist_agent_server.py [line:358] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/220b7068-39e3-494f-8de5-45e217a4fb4e.jpg', 'outfit_id': 'f65d857a-9c32-4a21-a06e-bd42d45e9fa2', 'items': ['', 'EKO522', 'EIQ863']} -2025-10-23 14:36:10,043 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:36:19,655 stylist_agent_server.py [line:358] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/02f422c4-7c6e-4f5e-bd6b-de0066a1c27b.jpg', 'outfit_id': 'f65d857a-9c32-4a21-a06e-bd42d45e9fa2', 'items': ['', 'EKO522', 'EIQ863', 'ELQ012']} -2025-10-23 14:39:36,149 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 14:40:09,655 stylist_agent_server.py [line:355] INFO {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/99cd8cc0-856a-487d-bb21-5684855ef48f.jpg', 'outfit_id': 'f65d857a-9c32-4a21-a06e-bd42d45e9fa2', 'items': ['', 'EKO522', 'EIQ863', 'ELQ012', 'EHJ697']} -2025-10-23 16:40:40,397 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 16:40:40,442 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 16:40:40,451 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 16:40:40,497 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 16:40:40,544 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 16:40:40,554 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 16:40:44,551 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 16:43:01,722 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 16:43:01,724 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 16:43:04,794 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": "Not specified", - "style": "Chinese style (cheongsam)", - "color_preference": "Not specified", - "clothing_type": "Cheongsam (Qipao)", - "vibe_or_details": "Not specified" -} -``` -2025-10-23 16:43:04,795 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 16:43:04,911 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'd5133691-9bd0-429f-8017-f1499881fd1a', 'items': []} -2025-10-23 16:43:12,513 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 16:43:17,659 stylist_agent_server.py [line:360] INFO {'status': 'ok', 'message': '', 'path': '', 'outfit_id': 'd5133691-9bd0-429f-8017-f1499881fd1a', 'items': []} -2025-10-23 16:43:18,459 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 16:43:28,961 stylist_agent_server.py [line:360] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/46fbafc6-0f91-4234-a736-4668016d663a.jpg', 'outfit_id': 'd5133691-9bd0-429f-8017-f1499881fd1a', 'items': ['EKO522']} -2025-10-23 16:46:07,890 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 16:46:40,576 stylist_agent_server.py [line:360] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/9345d104-509b-4324-8ece-9d0acbc18fd8.jpg', 'outfit_id': 'd5133691-9bd0-429f-8017-f1499881fd1a', 'items': ['EKO522', 'EHJ697']} -2025-10-23 16:51:13,324 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 16:51:13,372 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 16:51:13,372 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 16:51:13,382 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 16:51:13,420 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 16:51:13,430 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 16:51:18,309 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 16:51:40,304 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 2, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 16:51:40,305 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 16:51:44,908 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": null, - "style": null, - "color_preference": "No preference", - "clothing_type": "Chinese style cheongsam (Qipao)", - "vibe_or_details": null -} -``` -2025-10-23 16:51:44,909 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 16:51:44,965 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 16:51:45,051 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '5caa653d-a560-4264-b741-2a38ed4112cf', 'items': []} -2025-10-23 16:51:45,052 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 16:51:45,057 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '24318c76-90b0-42dc-bca3-9456e6e24485', 'items': []} -2025-10-23 16:51:45,057 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 16:51:49,827 stylist_agent_server.py [line:360] INFO {'status': 'ok', 'message': '', 'path': '', 'outfit_id': '24318c76-90b0-42dc-bca3-9456e6e24485', 'items': []} -2025-10-23 16:51:50,776 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 16:51:50,808 stylist_agent_server.py [line:360] INFO {'status': 'ok', 'message': '', 'path': '', 'outfit_id': '5caa653d-a560-4264-b741-2a38ed4112cf', 'items': []} -2025-10-23 16:51:51,588 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 16:52:04,161 stylist_agent_server.py [line:360] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/4f70f3a9-6ef3-46fb-a6e1-a358be3d8796.jpg', 'outfit_id': '5caa653d-a560-4264-b741-2a38ed4112cf', 'items': ['EKO522']} -2025-10-23 16:52:04,898 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 16:52:06,058 stylist_agent_server.py [line:360] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/8786f9c9-a0c3-4af4-8f2a-3021e15ab7fd.jpg', 'outfit_id': '24318c76-90b0-42dc-bca3-9456e6e24485', 'items': ['EKO522']} -2025-10-23 16:52:06,750 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 16:52:14,594 stylist_agent_server.py [line:360] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/ae7c1c0a-35a7-4085-9c3c-4202158dcd54.jpg', 'outfit_id': '5caa653d-a560-4264-b741-2a38ed4112cf', 'items': ['EKO522', 'EIQ863']} -2025-10-23 16:52:15,398 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 16:52:25,260 stylist_agent_server.py [line:360] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/f36b3707-e1d8-43f3-8e26-82c4306a9a5f.jpg', 'outfit_id': '5caa653d-a560-4264-b741-2a38ed4112cf', 'items': ['EKO522', 'EIQ863', 'EHJ697']} -2025-10-23 16:52:26,080 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 16:52:48,902 stylist_agent_server.py [line:357] INFO {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/4dbc7823-d60d-4656-bb6c-5524540424ec.jpg', 'outfit_id': '5caa653d-a560-4264-b741-2a38ed4112cf', 'items': ['EKO522', 'EIQ863', 'EHJ697', 'ELH616']} -2025-10-23 16:52:53,045 stylist_agent_server.py [line:360] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/28a1f36c-843c-4693-b647-f937dd976ca7.jpg', 'outfit_id': '24318c76-90b0-42dc-bca3-9456e6e24485', 'items': ['EKO522', 'EIQ863']} -2025-10-23 16:52:54,270 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 16:53:12,852 stylist_agent_server.py [line:360] INFO {'status': 'ok', 'message': '', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/afe6ec1d-bb9e-4d9d-be95-b916452d4bfe.jpg', 'outfit_id': '24318c76-90b0-42dc-bca3-9456e6e24485', 'items': ['EKO522', 'EIQ863', 'EKI586']} -2025-10-23 16:53:14,082 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 16:53:31,388 stylist_agent_server.py [line:357] INFO {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/38d5bcb4-5c39-46bd-9710-55135bef1957.jpg', 'outfit_id': '24318c76-90b0-42dc-bca3-9456e6e24485', 'items': ['EKO522', 'EIQ863', 'EKI586', 'EHJ697']} -2025-10-23 16:53:31,389 agent_server.py [line:69] INFO ---- Final Recommendation Results --- -2025-10-23 16:53:31,389 agent_server.py [line:71] INFO ✅ Outfit 1 saved to: {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/4dbc7823-d60d-4656-bb6c-5524540424ec.jpg', 'outfit_id': '5caa653d-a560-4264-b741-2a38ed4112cf', 'items': ['EKO522', 'EIQ863', 'EHJ697', 'ELH616']} -2025-10-23 16:53:31,389 agent_server.py [line:71] INFO ✅ Outfit 2 saved to: {'status': 'stop', 'message': 'Finish reason: Reached max outfit length.', 'path': 'lanecarford/lc_stylist_agent_outfit_items/string/38d5bcb4-5c39-46bd-9710-55135bef1957.jpg', 'outfit_id': '24318c76-90b0-42dc-bca3-9456e6e24485', 'items': ['EKO522', 'EIQ863', 'EKI586', 'EHJ697']} -2025-10-23 21:42:34,087 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 21:42:34,092 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 21:42:34,138 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 21:42:34,140 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 21:42:34,148 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 21:42:34,149 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 21:42:40,056 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 21:43:04,101 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 21:43:04,103 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 21:43:04,108 base_events.py [line:1758] ERROR Task exception was never retrieved -future: exception=DefaultCredentialsError('Gemini API call failed: File /app/request.json was not found.')> -Traceback (most recent call last): - File "/workspace/lc_stylist_agent/app/core/llm_interface.py", line 45, in generate_response - response = await self.gemini_client.aio.models.generate_content( - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/models.py", line 6757, in generate_content - response = await self._generate_content( - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/models.py", line 5592, in _generate_content - response = await self._api_client.async_request( - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/_api_client.py", line 1341, in async_request - result = await self._async_request( - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/_api_client.py", line 1286, in _async_request - return await self._async_retry( # type: ignore[no-any-return] - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/tenacity/_asyncio.py", line 58, in __call__ - do = await self.iter(retry_state=retry_state) - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/tenacity/_asyncio.py", line 110, in iter - result = await action(retry_state) - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/tenacity/_asyncio.py", line 78, in inner - return fn(*args, **kwargs) - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/tenacity/__init__.py", line 410, in exc_check - raise retry_exc.reraise() - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/tenacity/__init__.py", line 183, in reraise - raise self.last_attempt.result() - File "/home/user/miniconda3/envs/test/lib/python3.10/concurrent/futures/_base.py", line 451, in result - return self.__get_result() - File "/home/user/miniconda3/envs/test/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result - raise self._exception - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/tenacity/_asyncio.py", line 61, in __call__ - result = await fn(*args, **kwargs) - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/_api_client.py", line 1153, in _async_request_once - f'Bearer {await self._async_access_token()}' - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/_api_client.py", line 970, in _async_access_token - self._credentials, project = await asyncio.to_thread( - File "/home/user/miniconda3/envs/test/lib/python3.10/asyncio/threads.py", line 25, in to_thread - return await loop.run_in_executor(None, func_call) - File "/home/user/miniconda3/envs/test/lib/python3.10/concurrent/futures/thread.py", line 58, in run - result = self.fn(*self.args, **self.kwargs) - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/_api_client.py", line 184, in load_auth - credentials, loaded_project_id = google.auth.default( # type: ignore[no-untyped-call] - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/auth/_default.py", line 705, in default - credentials, project_id = checker() - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/auth/_default.py", line 698, in - lambda: _get_explicit_environ_credentials(quota_project_id=quota_project_id), - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/auth/_default.py", line 346, in _get_explicit_environ_credentials - credentials, project_id = load_credentials_from_file( - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/auth/_default.py", line 173, in load_credentials_from_file - raise exceptions.DefaultCredentialsError( -google.auth.exceptions.DefaultCredentialsError: File /app/request.json was not found. - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/workspace/lc_stylist_agent/app/server/ChatbotAgent/agent_server.py", line 59, in background_run - request_summary = await self.get_conversation_summary(request.user_id) - File "/workspace/lc_stylist_agent/app/server/ChatbotAgent/agent_server.py", line 84, in get_conversation_summary - summary = await self.llm.generate_response(history=[Message(role=Role.USER, content=input_message)], system_prompt=SUMMARY_PROMPT) - File "/workspace/lc_stylist_agent/app/core/llm_interface.py", line 55, in generate_response - raise type(e)(f"Gemini API call failed: {e}") -google.auth.exceptions.DefaultCredentialsError: Gemini API call failed: File /app/request.json was not found. -2025-10-23 21:43:39,693 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 21:43:39,695 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 21:43:39,697 base_events.py [line:1758] ERROR Task exception was never retrieved -future: exception=DefaultCredentialsError('Gemini API call failed: File /app/request.json was not found.')> -Traceback (most recent call last): - File "/workspace/lc_stylist_agent/app/core/llm_interface.py", line 45, in generate_response - response = await self.gemini_client.aio.models.generate_content( - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/models.py", line 6757, in generate_content - response = await self._generate_content( - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/models.py", line 5592, in _generate_content - response = await self._api_client.async_request( - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/_api_client.py", line 1341, in async_request - result = await self._async_request( - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/_api_client.py", line 1286, in _async_request - return await self._async_retry( # type: ignore[no-any-return] - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/tenacity/_asyncio.py", line 58, in __call__ - do = await self.iter(retry_state=retry_state) - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/tenacity/_asyncio.py", line 110, in iter - result = await action(retry_state) - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/tenacity/_asyncio.py", line 78, in inner - return fn(*args, **kwargs) - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/tenacity/__init__.py", line 410, in exc_check - raise retry_exc.reraise() - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/tenacity/__init__.py", line 183, in reraise - raise self.last_attempt.result() - File "/home/user/miniconda3/envs/test/lib/python3.10/concurrent/futures/_base.py", line 451, in result - return self.__get_result() - File "/home/user/miniconda3/envs/test/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result - raise self._exception - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/tenacity/_asyncio.py", line 61, in __call__ - result = await fn(*args, **kwargs) - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/_api_client.py", line 1153, in _async_request_once - f'Bearer {await self._async_access_token()}' - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/_api_client.py", line 970, in _async_access_token - self._credentials, project = await asyncio.to_thread( - File "/home/user/miniconda3/envs/test/lib/python3.10/asyncio/threads.py", line 25, in to_thread - return await loop.run_in_executor(None, func_call) - File "/home/user/miniconda3/envs/test/lib/python3.10/concurrent/futures/thread.py", line 58, in run - result = self.fn(*self.args, **self.kwargs) - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/genai/_api_client.py", line 184, in load_auth - credentials, loaded_project_id = google.auth.default( # type: ignore[no-untyped-call] - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/auth/_default.py", line 705, in default - credentials, project_id = checker() - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/auth/_default.py", line 698, in - lambda: _get_explicit_environ_credentials(quota_project_id=quota_project_id), - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/auth/_default.py", line 346, in _get_explicit_environ_credentials - credentials, project_id = load_credentials_from_file( - File "/home/user/miniconda3/envs/test/lib/python3.10/site-packages/google/auth/_default.py", line 173, in load_credentials_from_file - raise exceptions.DefaultCredentialsError( -google.auth.exceptions.DefaultCredentialsError: File /app/request.json was not found. - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/workspace/lc_stylist_agent/app/server/ChatbotAgent/agent_server.py", line 59, in background_run - request_summary = await self.get_conversation_summary(request.user_id) - File "/workspace/lc_stylist_agent/app/server/ChatbotAgent/agent_server.py", line 84, in get_conversation_summary - summary = await self.llm.generate_response(history=[Message(role=Role.USER, content=input_message)], system_prompt=SUMMARY_PROMPT) - File "/workspace/lc_stylist_agent/app/core/llm_interface.py", line 55, in generate_response - raise type(e)(f"Gemini API call failed: {e}") -google.auth.exceptions.DefaultCredentialsError: Gemini API call failed: File /app/request.json was not found. -2025-10-23 21:43:51,564 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 21:43:51,588 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 21:43:51,614 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 21:43:51,624 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 21:43:51,638 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 21:43:51,647 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 21:43:54,228 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 21:43:56,123 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 21:43:56,124 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 21:44:02,240 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": null, - "style": null, - "color_preference": null, - "clothing_type": null, - "vibe_or_details": null -} -``` -2025-10-23 21:44:02,240 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 21:44:02,412 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'f94f38e7-61eb-4b4f-8ef2-498f12e681b3', 'items': []} -2025-10-23 21:44:04,657 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 21:44:09,079 agent_server.py [line:69] INFO ---- Final Recommendation Results --- -2025-10-23 21:44:09,080 agent_server.py [line:73] ERROR ❌ Failed: 'NoneType' object has no attribute 'get' -2025-10-23 21:44:22,671 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 21:44:22,675 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 21:44:27,004 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": null, - "style": null, - "color_preference": null, - "clothing_type": null, - "vibe_or_details": null -} -``` -2025-10-23 21:44:27,005 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 21:44:27,086 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '942e711a-fc22-4b41-9bef-403cb0686627', 'items': []} -2025-10-23 21:44:30,097 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 09:59:19,870 agent_server.py [line:69] INFO ---- Final Recommendation Results --- -2025-10-24 09:59:19,870 agent_server.py [line:73] ERROR ❌ Failed: 'NoneType' object has no attribute 'get' -2025-10-24 09:59:22,964 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-24 09:59:22,966 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 09:59:26,743 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": "Summer casual outing or brunch", - "style": "Flowy, chic, comfortable, and a bit feminine", - "color_preference": "['Pastel pink', 'Lavender', 'Sky blue']", - "clothing_type": "Lightweight maxi dress", - "vibe_or_details": "Needs to be breathable for warm weather, no bold prints, preferably subtle floral or abstract patterns" -} -``` -2025-10-24 09:59:26,743 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 09:59:26,878 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '431d7a98-6c85-4ef1-a8ef-c098de87c02f', 'items': []} -2025-10-24 09:59:30,525 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 09:59:51,130 agent_server.py [line:69] INFO ---- Final Recommendation Results --- -2025-10-24 09:59:51,131 agent_server.py [line:73] ERROR ❌ Failed: 'NoneType' object has no attribute 'get' -2025-10-24 10:00:07,136 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-24 10:00:07,138 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:00:14,257 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": "Romantic date dinner", - "style": "Classic elegance", - "color_preference": [ - "Cream", - "Pale Blue" - ], - "clothing_type": "Lightweight maxi dress", - "vibe_or_details": "Needs to be comfortable and breathable" -} -``` -2025-10-24 10:00:14,258 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:00:14,345 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'b87da12a-79f2-4adf-a491-7b994870a5cf', 'items': []} -2025-10-24 10:01:00,039 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:07:09,739 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:07:09,743 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:07:09,789 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:07:09,792 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:07:09,799 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:07:09,802 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:07:12,032 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:07:12,465 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-24 10:07:12,467 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:07:13,949 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-24 10:07:13,951 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:07:16,137 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": "No occasion specified", - "style": "No style specified", - "color_preference": "No preference", - "clothing_type": "No clothing type specified", - "vibe_or_details": "No specific vibe or details mentioned" -} -``` -2025-10-24 10:07:16,137 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:07:16,265 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'dfba5285-2630-4d18-95a7-cf3175fc2f4b', 'items': []} -2025-10-24 10:07:20,487 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:10:08,824 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:10:08,828 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:10:08,873 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:10:08,878 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:10:08,883 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:10:08,887 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:10:12,797 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:10:18,230 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-24 10:10:18,232 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:10:28,104 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": "Romantic date dinner", - "style": "Classic elegance", - "color_preference": [ - "Cream", - "Pale Blue" - ], - "clothing_type": "Lightweight maxi dress", - "vibe_or_details": "Needs to be comfortable and breathable" -} -``` -2025-10-24 10:10:28,104 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:10:28,201 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '85f8e5a2-1624-4236-b1c8-7db683fd6648', 'items': []} -2025-10-24 10:10:29,874 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:12:46,788 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:12:46,788 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:12:46,837 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:12:46,837 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:12:46,847 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:12:46,848 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:12:49,941 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:12:50,663 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-24 10:12:50,665 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:12:58,806 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": null, - "style": null, - "color_preference": null, - "clothing_type": null, - "vibe_or_details": null -} -``` -2025-10-24 10:12:58,807 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:12:58,901 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '0efb9179-bfc2-4700-9960-45605bb98dd6', 'items': []} -2025-10-24 10:13:01,149 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:15:04,724 agent_server.py [line:69] INFO ---- Final Recommendation Results --- -2025-10-24 10:15:04,724 agent_server.py [line:73] ERROR ❌ Failed: 'NoneType' object has no attribute 'get' -2025-10-24 10:15:07,518 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-24 10:15:07,520 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:15:11,829 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": "No information provided", - "style": "No information provided", - "color_preference": "No information provided", - "clothing_type": "No information provided", - "vibe_or_details": "No information provided" -} -``` -2025-10-24 10:15:11,829 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:15:11,920 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '56b368f3-ab4a-46d7-941a-1381ddc4b95a', 'items': []} -2025-10-24 10:15:11,944 base_events.py [line:1758] ERROR Unclosed client session -client_session: -2025-10-24 10:15:13,379 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:16:37,818 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:16:37,866 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:16:37,876 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:16:37,897 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:16:37,947 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:16:37,957 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:16:43,885 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:16:48,608 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-24 10:16:48,610 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:16:59,374 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": null, - "style": null, - "color_preference": null, - "clothing_type": null, - "vibe_or_details": null -} -``` -2025-10-24 10:16:59,375 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:16:59,467 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'fb79695c-2983-4e38-b33c-69998d8d5dbf', 'items': []} -2025-10-24 10:17:03,349 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:17:47,933 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:17:47,940 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:17:47,981 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:17:47,988 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:17:47,991 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:17:47,998 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:18:25,700 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:19:02,062 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-24 10:19:02,063 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:19:02,300 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-24 10:19:02,301 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:19:05,047 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": "Not specified", - "style": "Not specified", - "color_preference": "Not specified", - "clothing_type": "Not specified", - "vibe_or_details": "Not specified" -} -``` -2025-10-24 10:19:05,047 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:19:05,166 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'a777dd3d-0a39-4fbc-bff8-e355cd75a77d', 'items': []} -2025-10-24 10:19:05,166 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:19:06,831 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": "No preference", - "style": "No preference", - "color_preference": "No preference", - "clothing_type": "No preference", - "vibe_or_details": "No preference" -} -``` -2025-10-24 10:19:06,841 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:19:06,904 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '2fb95743-9a9b-40cc-9a44-6ebbd88c0b69', 'items': []} -2025-10-24 10:19:06,905 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:23:28,612 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:23:28,625 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:23:28,661 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:23:28,672 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:23:28,673 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:23:28,684 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:23:36,979 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:23:50,732 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-24 10:23:50,734 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:23:56,262 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": "not specified", - "style": "not specified", - "color_preference": "no preference", - "clothing_type": "not specified", - "vibe_or_details": "not specified" -} -``` -2025-10-24 10:23:56,262 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:23:56,361 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'b998cf99-b788-42c7-9611-e709a9d44798', 'items': []} -2025-10-24 10:23:56,361 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:25:05,020 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:25:05,020 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:25:05,069 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:25:05,069 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:25:05,080 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:25:05,080 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:25:09,676 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:25:37,283 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-24 10:25:37,285 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:25:43,698 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": "Not specified", - "style": "Not specified", - "color_preference": "No preference", - "clothing_type": "Not specified", - "vibe_or_details": "Not specified" -} -``` -2025-10-24 10:25:43,699 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:25:43,792 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '680745ec-c95d-43a5-9989-3abedd329557', 'items': []} -2025-10-24 10:25:43,793 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:26:28,264 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:26:28,279 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:26:28,314 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:26:28,325 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:26:28,329 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:26:28,340 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:26:32,981 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:26:55,486 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-24 10:26:55,488 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:26:57,563 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": "Summer casual outing or picnic", - "style": "Comfortable, stylish, and suitable for warm weather", - "color_preference": "['light colors', 'pastel shades']", - "clothing_type": "['dress', 'skirt', 'blouse', 'flowy top']", - "vibe_or_details": "Breathable fabrics like linen or cotton, needs to be suitable for warm weather, no specific exclusions on patterns or prints" -} -``` -2025-10-24 10:26:57,564 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:26:57,683 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '311e6d51-19b6-4e41-8c90-e4d97817ef94', 'items': []} -2025-10-24 10:26:57,683 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:36:15,330 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:36:15,334 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:36:15,381 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:36:15,382 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:36:15,391 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:36:15,392 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:36:19,375 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:36:34,842 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-24 10:36:34,844 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:36:37,898 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": null, - "style": null, - "color_preference": null, - "clothing_type": null, - "vibe_or_details": null -} -``` -2025-10-24 10:36:37,899 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-24 10:36:38,006 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '0142e8b4-6d2c-4c40-8b23-69ad049c3edb', 'items': []} -2025-10-24 10:36:38,006 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. diff --git a/app/server/ChatbotAgent/agent_server.py b/app/server/ChatbotAgent/agent_server.py index 3e2c5fd..8dd9ee7 100644 --- a/app/server/ChatbotAgent/agent_server.py +++ b/app/server/ChatbotAgent/agent_server.py @@ -34,7 +34,7 @@ class LCAgent(ls.LitAPI): key_prefix=settings.REDIS_HISTORY_KEY_PREFIX ) self.vector_db = VectorDatabase( - vector_db_dir=os.getenv('VECTOR_DB_DIR', '/app/app/db'), + vector_db_dir=settings.VECTOR_DB_DIR, collection_name=settings.COLLECTION_NAME, embedding_model_name=settings.EMBEDDING_MODEL_NAME ) @@ -43,6 +43,7 @@ class LCAgent(ls.LitAPI): 'max_len': 5, 'gemini_model_name': settings.LLM_MODEL_NAME } + self.outfit_ids = [] async def decode_request(self, request: AgentRequestModel): """ @@ -59,8 +60,11 @@ class LCAgent(ls.LitAPI): return request async def predict(self, request): + + self.outfit_ids = [str(uuid.uuid4()) for _ in range(request.num_outfits)] + asyncio.create_task(self.background_run(request)) - return {"status": "Task initiated in background."} + return {"status": "Task initiated in background.", "outfit_ids": self.outfit_ids} async def encode_response(self, output): return output @@ -108,7 +112,8 @@ class LCAgent(ls.LitAPI): if start_outfit is None: start_outfit = [] tasks = [] - for _ in range(num_outfits): + for i in range(num_outfits): + self.stylist_agent_kwages['outfit_id'] = self.outfit_ids[i] agent = AsyncStylistAgent(**self.stylist_agent_kwages) task = agent.run_styling_process( request_summary=request_summary, diff --git a/app/server/ChatbotAgent/chatbot_server.py b/app/server/ChatbotAgent/chatbot_server.py index 47fbf4d..2dd6293 100644 --- a/app/server/ChatbotAgent/chatbot_server.py +++ b/app/server/ChatbotAgent/chatbot_server.py @@ -12,7 +12,7 @@ from app.core.data_structure import Role, Message from app.core.llm_interface import AsyncGeminiLLM from app.core.redis_manager import RedisManager from app.core.stylist_agent import AsyncStylistAgent -from app.core.system_prompt import BASIC_PROMPT, SUMMARY_PROMPT +from app.core.system_prompt import BASIC_PROMPT, SUMMARY_PROMPT, MEN_BASIC_PROMPT, WOMEN_BASIC_PROMPT from app.core.vector_database import VectorDatabase from google.genai import types @@ -22,6 +22,7 @@ logger = logging.getLogger(__name__) class PredictRequest(BaseModel): user_id: str # 用戶ID user_message: str # 用戶輸入 + gender: str # 服装类型 class LCChatBot(ls.LitAPI): @@ -60,6 +61,10 @@ class LCChatBot(ls.LitAPI): user_msg = Message(role=Role.USER, content=user_message) chat_history = self.redis.get_history(user_id) chat_history.append(user_msg) + if request.gender == 'male': + BASIC_PROMPT = MEN_BASIC_PROMPT + else: + BASIC_PROMPT = WOMEN_BASIC_PROMPT contents = [] @@ -103,86 +108,3 @@ class LCChatBot(ls.LitAPI): # The for-loop must have async keyword here since output is an AsyncGenerator async for out in output: yield {"output": out} - - async def process_query(self, user_id: str, user_message: str) -> str: - """ - 处理用户的最新输入,调用 LLM, 并更新历史记录。 - """ - - # 添加用户消息到历史 - user_msg = Message(role=Role.USER, content=user_message) - chat_history = self.redis.get_history(user_id) - chat_history.append(user_msg) - - # 生成 LLM 回复 - try: - response_text = await self.llm.generate_response(chat_history, system_prompt=BASIC_PROMPT) - except Exception as e: - logger("\n--- Final Recommendation Results ---") - - logger.error(f"LLM 调用失败: {e}") - response_text = "抱歉,系统暂时无法响应,请稍后再试。" - - # 添加助手消息到历史 - if response_text: - assistant_msg = Message(role=Role.ASSISTANT, content=response_text) - else: - assistant_msg = Message(role=Role.ASSISTANT, content="No response generated. Try again later.") - - self.redis.save_message(user_id, user_msg) - self.redis.save_message(user_id, assistant_msg) - - return response_text - - async def get_conversation_summary(self, user_id: str) -> str: - """ - 分析用户的完整会话历史,并打包成一个简洁的需求总结。 - - 这个总结可以直接作为输入 Prompt 传递给 Stylist Agent。` - """ - history_messages = self.redis.get_history(user_id) - input_message = "\n".join([f"{msg.role.value}: {msg.content}" for msg in history_messages]) - - # 临时调用 LLM 或使用本地逻辑生成总结 - summary = await self.llm.generate_response(history=[Message(role=Role.USER, content=input_message)], system_prompt=SUMMARY_PROMPT) - - return summary - - async def recommend_outfit(self, request_summary: str, stylist_name: str, start_outfit=None, num_outfits: int = 1): - """ - 基于用户的对话历史和需求,推荐一套搭配。 - - Args: - request_summary: 用户的request - start_outfit: 可选的初始搭配列表,每个元素包含 'item_id' 和 'category'。 - """ - if start_outfit is None: - start_outfit = [] - tasks = [] - for _ in range(num_outfits): - agent = AsyncStylistAgent(**self.stylist_agent_kwages) - task = agent.run_styling_process(request_summary, stylist_name, start_outfit) - tasks.append(task) - logger.info(f"--- Starting {num_outfits} concurrent outfit generation tasks. ---") - - try: - results = await asyncio.gather(*tasks, return_exceptions=True) - - successful_outfits = [] - failed_outfits = [] - for result in results: - if isinstance(result, Exception): - # 任务执行中发生异常 - failed_outfits.append(f"Failed: {result}") - else: - # 任务成功,result 是 run_styling_process 返回的图片路径 - successful_outfits.append(result) - - return { - "successful_outfits": successful_outfits, - "failed_outfits": failed_outfits - } - - except Exception as e: - logger.error(f"An unexpected error occurred during concurrent recommendation: {e}") - return {"error": str(e)} diff --git a/logs/debug.log b/logs/debug.log deleted file mode 100644 index 2cd4f7d..0000000 --- a/logs/debug.log +++ /dev/null @@ -1,554 +0,0 @@ -2025-10-23 17:37:26,690 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 17:37:26,690 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 17:37:26,697 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 17:37:26,697 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 17:41:56,921 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 17:41:56,921 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 17:41:56,928 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 17:41:56,928 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 12:38:03,207 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 12:38:03,207 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 12:38:03,216 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 12:38:03,216 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 12:38:46,495 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 12:38:46,495 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 12:38:46,504 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 12:38:46,504 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 12:40:54,138 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 12:40:54,138 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 12:40:54,147 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 12:40:54,147 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 12:42:28,155 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 12:42:28,157 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 12:42:40,052 base_events.py [line:1758] ERROR Task exception was never retrieved -future: exception=DefaultCredentialsError('Gemini API call failed: Your default credentials were not found. To set up Application Default Credentials, see https://cloud.google.com/docs/authentication/external/set-up-adc for more information.')> -Traceback (most recent call last): - File "/app/app/core/llm_interface.py", line 45, in generate_response - response = await self.gemini_client.aio.models.generate_content( - File "/usr/local/lib/python3.10/dist-packages/google/genai/models.py", line 6757, in generate_content - response = await self._generate_content( - File "/usr/local/lib/python3.10/dist-packages/google/genai/models.py", line 5592, in _generate_content - response = await self._api_client.async_request( - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 1341, in async_request - result = await self._async_request( - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 1286, in _async_request - return await self._async_retry( # type: ignore[no-any-return] - File "/usr/local/lib/python3.10/dist-packages/tenacity/asyncio/__init__.py", line 111, in __call__ - do = await self.iter(retry_state=retry_state) - File "/usr/local/lib/python3.10/dist-packages/tenacity/asyncio/__init__.py", line 153, in iter - result = await action(retry_state) - File "/usr/local/lib/python3.10/dist-packages/tenacity/_utils.py", line 99, in inner - return call(*args, **kwargs) - File "/usr/local/lib/python3.10/dist-packages/tenacity/__init__.py", line 420, in exc_check - raise retry_exc.reraise() - File "/usr/local/lib/python3.10/dist-packages/tenacity/__init__.py", line 187, in reraise - raise self.last_attempt.result() - File "/usr/lib/python3.10/concurrent/futures/_base.py", line 451, in result - return self.__get_result() - File "/usr/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result - raise self._exception - File "/usr/local/lib/python3.10/dist-packages/tenacity/asyncio/__init__.py", line 114, in __call__ - result = await fn(*args, **kwargs) - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 1153, in _async_request_once - f'Bearer {await self._async_access_token()}' - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 970, in _async_access_token - self._credentials, project = await asyncio.to_thread( - File "/usr/lib/python3.10/asyncio/threads.py", line 25, in to_thread - return await loop.run_in_executor(None, func_call) - File "/usr/lib/python3.10/concurrent/futures/thread.py", line 58, in run - result = self.fn(*self.args, **self.kwargs) - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 184, in load_auth - credentials, loaded_project_id = google.auth.default( # type: ignore[no-untyped-call] - File "/usr/local/lib/python3.10/dist-packages/google/auth/_default.py", line 739, in default - raise exceptions.DefaultCredentialsError(_CLOUD_SDK_MISSING_CREDENTIALS) -google.auth.exceptions.DefaultCredentialsError: Your default credentials were not found. To set up Application Default Credentials, see https://cloud.google.com/docs/authentication/external/set-up-adc for more information. - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/app/app/server/ChatbotAgent/agent_server.py", line 59, in background_run - request_summary = await self.get_conversation_summary(request.user_id) - File "/app/app/server/ChatbotAgent/agent_server.py", line 84, in get_conversation_summary - summary = await self.llm.generate_response(history=[Message(role=Role.USER, content=input_message)], system_prompt=SUMMARY_PROMPT) - File "/app/app/core/llm_interface.py", line 55, in generate_response - raise type(e)(f"Gemini API call failed: {e}") -google.auth.exceptions.DefaultCredentialsError: Gemini API call failed: Your default credentials were not found. To set up Application Default Credentials, see https://cloud.google.com/docs/authentication/external/set-up-adc for more information. -2025-10-23 12:45:35,306 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 12:45:35,306 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 12:45:35,372 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 12:45:35,372 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 12:45:35,381 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 12:45:35,381 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 12:45:48,288 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 12:45:52,803 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 12:45:52,805 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 12:45:52,806 base_events.py [line:1758] ERROR Task exception was never retrieved -future: exception=DefaultCredentialsError('Gemini API call failed: File /workspace/lc_stylist_agent/request.json was not found.')> -Traceback (most recent call last): - File "/app/app/core/llm_interface.py", line 45, in generate_response - response = await self.gemini_client.aio.models.generate_content( - File "/usr/local/lib/python3.10/dist-packages/google/genai/models.py", line 6757, in generate_content - response = await self._generate_content( - File "/usr/local/lib/python3.10/dist-packages/google/genai/models.py", line 5592, in _generate_content - response = await self._api_client.async_request( - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 1341, in async_request - result = await self._async_request( - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 1286, in _async_request - return await self._async_retry( # type: ignore[no-any-return] - File "/usr/local/lib/python3.10/dist-packages/tenacity/asyncio/__init__.py", line 111, in __call__ - do = await self.iter(retry_state=retry_state) - File "/usr/local/lib/python3.10/dist-packages/tenacity/asyncio/__init__.py", line 153, in iter - result = await action(retry_state) - File "/usr/local/lib/python3.10/dist-packages/tenacity/_utils.py", line 99, in inner - return call(*args, **kwargs) - File "/usr/local/lib/python3.10/dist-packages/tenacity/__init__.py", line 420, in exc_check - raise retry_exc.reraise() - File "/usr/local/lib/python3.10/dist-packages/tenacity/__init__.py", line 187, in reraise - raise self.last_attempt.result() - File "/usr/lib/python3.10/concurrent/futures/_base.py", line 451, in result - return self.__get_result() - File "/usr/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result - raise self._exception - File "/usr/local/lib/python3.10/dist-packages/tenacity/asyncio/__init__.py", line 114, in __call__ - result = await fn(*args, **kwargs) - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 1153, in _async_request_once - f'Bearer {await self._async_access_token()}' - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 970, in _async_access_token - self._credentials, project = await asyncio.to_thread( - File "/usr/lib/python3.10/asyncio/threads.py", line 25, in to_thread - return await loop.run_in_executor(None, func_call) - File "/usr/lib/python3.10/concurrent/futures/thread.py", line 58, in run - result = self.fn(*self.args, **self.kwargs) - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 184, in load_auth - credentials, loaded_project_id = google.auth.default( # type: ignore[no-untyped-call] - File "/usr/local/lib/python3.10/dist-packages/google/auth/_default.py", line 705, in default - credentials, project_id = checker() - File "/usr/local/lib/python3.10/dist-packages/google/auth/_default.py", line 698, in - lambda: _get_explicit_environ_credentials(quota_project_id=quota_project_id), - File "/usr/local/lib/python3.10/dist-packages/google/auth/_default.py", line 346, in _get_explicit_environ_credentials - credentials, project_id = load_credentials_from_file( - File "/usr/local/lib/python3.10/dist-packages/google/auth/_default.py", line 173, in load_credentials_from_file - raise exceptions.DefaultCredentialsError( -google.auth.exceptions.DefaultCredentialsError: File /workspace/lc_stylist_agent/request.json was not found. - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/app/app/server/ChatbotAgent/agent_server.py", line 59, in background_run - request_summary = await self.get_conversation_summary(request.user_id) - File "/app/app/server/ChatbotAgent/agent_server.py", line 84, in get_conversation_summary - summary = await self.llm.generate_response(history=[Message(role=Role.USER, content=input_message)], system_prompt=SUMMARY_PROMPT) - File "/app/app/core/llm_interface.py", line 55, in generate_response - raise type(e)(f"Gemini API call failed: {e}") -google.auth.exceptions.DefaultCredentialsError: Gemini API call failed: File /workspace/lc_stylist_agent/request.json was not found. -2025-10-23 12:49:03,747 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 12:49:03,747 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 12:49:03,814 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 12:49:03,814 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 12:49:03,823 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 12:49:03,823 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 12:49:22,244 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 12:49:29,263 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 12:49:29,264 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 12:49:29,266 base_events.py [line:1758] ERROR Task exception was never retrieved -future: exception=DefaultCredentialsError('Gemini API call failed: File /app/app/request.json was not found.')> -Traceback (most recent call last): - File "/app/app/core/llm_interface.py", line 45, in generate_response - response = await self.gemini_client.aio.models.generate_content( - File "/usr/local/lib/python3.10/dist-packages/google/genai/models.py", line 6757, in generate_content - response = await self._generate_content( - File "/usr/local/lib/python3.10/dist-packages/google/genai/models.py", line 5592, in _generate_content - response = await self._api_client.async_request( - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 1341, in async_request - result = await self._async_request( - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 1286, in _async_request - return await self._async_retry( # type: ignore[no-any-return] - File "/usr/local/lib/python3.10/dist-packages/tenacity/asyncio/__init__.py", line 111, in __call__ - do = await self.iter(retry_state=retry_state) - File "/usr/local/lib/python3.10/dist-packages/tenacity/asyncio/__init__.py", line 153, in iter - result = await action(retry_state) - File "/usr/local/lib/python3.10/dist-packages/tenacity/_utils.py", line 99, in inner - return call(*args, **kwargs) - File "/usr/local/lib/python3.10/dist-packages/tenacity/__init__.py", line 420, in exc_check - raise retry_exc.reraise() - File "/usr/local/lib/python3.10/dist-packages/tenacity/__init__.py", line 187, in reraise - raise self.last_attempt.result() - File "/usr/lib/python3.10/concurrent/futures/_base.py", line 451, in result - return self.__get_result() - File "/usr/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result - raise self._exception - File "/usr/local/lib/python3.10/dist-packages/tenacity/asyncio/__init__.py", line 114, in __call__ - result = await fn(*args, **kwargs) - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 1153, in _async_request_once - f'Bearer {await self._async_access_token()}' - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 970, in _async_access_token - self._credentials, project = await asyncio.to_thread( - File "/usr/lib/python3.10/asyncio/threads.py", line 25, in to_thread - return await loop.run_in_executor(None, func_call) - File "/usr/lib/python3.10/concurrent/futures/thread.py", line 58, in run - result = self.fn(*self.args, **self.kwargs) - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 184, in load_auth - credentials, loaded_project_id = google.auth.default( # type: ignore[no-untyped-call] - File "/usr/local/lib/python3.10/dist-packages/google/auth/_default.py", line 705, in default - credentials, project_id = checker() - File "/usr/local/lib/python3.10/dist-packages/google/auth/_default.py", line 698, in - lambda: _get_explicit_environ_credentials(quota_project_id=quota_project_id), - File "/usr/local/lib/python3.10/dist-packages/google/auth/_default.py", line 346, in _get_explicit_environ_credentials - credentials, project_id = load_credentials_from_file( - File "/usr/local/lib/python3.10/dist-packages/google/auth/_default.py", line 173, in load_credentials_from_file - raise exceptions.DefaultCredentialsError( -google.auth.exceptions.DefaultCredentialsError: File /app/app/request.json was not found. - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/app/app/server/ChatbotAgent/agent_server.py", line 59, in background_run - request_summary = await self.get_conversation_summary(request.user_id) - File "/app/app/server/ChatbotAgent/agent_server.py", line 84, in get_conversation_summary - summary = await self.llm.generate_response(history=[Message(role=Role.USER, content=input_message)], system_prompt=SUMMARY_PROMPT) - File "/app/app/core/llm_interface.py", line 55, in generate_response - raise type(e)(f"Gemini API call failed: {e}") -google.auth.exceptions.DefaultCredentialsError: Gemini API call failed: File /app/app/request.json was not found. -2025-10-23 12:50:15,661 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 12:50:15,662 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 12:50:15,728 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 12:50:15,728 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 12:50:15,736 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 12:50:15,736 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 12:50:32,193 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 12:51:03,012 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 12:51:03,014 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 12:51:11,954 _client.py [line:1740] INFO HTTP Request: POST https://us-central1-aiplatform.googleapis.com/v1beta1/projects/aida-461108/locations/us-central1/publishers/google/models/gemini-2.5-flash:generateContent "HTTP/1.1 200 OK" -2025-10-23 12:51:11,961 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": "Outdoor garden wedding", - "style": "Elegant bohemian, flowy", - "color_preference": "['Pale Blue', 'Mint Green'] (soft pastels preferred), avoid bright reds and oranges", - "clothing_type": "Flowy, light, and airy maxi dress", - "vibe_or_details": "Comfortable for walking" -} -``` -2025-10-23 12:51:11,962 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 12:51:11,997 base_events.py [line:1758] ERROR Task exception was never retrieved -future: exception=RuntimeError("Failed to load credentials from file /workspace/lc_stylist_agent/request.json: [Errno 2] No such file or directory: '/workspace/lc_stylist_agent/request.json'")> -Traceback (most recent call last): - File "/app/app/core/stylist_agent_server.py", line 38, in __init__ - self.credentials = service_account.Credentials.from_service_account_file('/workspace/lc_stylist_agent/request.json') - File "/usr/local/lib/python3.10/dist-packages/google/oauth2/service_account.py", line 264, in from_service_account_file - info, signer = _service_account_info.from_filename( - File "/usr/local/lib/python3.10/dist-packages/google/auth/_service_account_info.py", line 78, in from_filename - with io.open(filename, "r", encoding="utf-8") as json_file: -FileNotFoundError: [Errno 2] No such file or directory: '/workspace/lc_stylist_agent/request.json' - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/app/app/server/ChatbotAgent/agent_server.py", line 63, in background_run - recommendation_results = await self.recommend_outfit(request_summary=request_summary, - File "/app/app/server/ChatbotAgent/agent_server.py", line 99, in recommend_outfit - agent = AsyncStylistAgent(**self.stylist_agent_kwages) - File "/app/app/core/stylist_agent_server.py", line 41, in __init__ - raise RuntimeError(f"Failed to load credentials from file {'/workspace/lc_stylist_agent/request.json'}: {e}") -RuntimeError: Failed to load credentials from file /workspace/lc_stylist_agent/request.json: [Errno 2] No such file or directory: '/workspace/lc_stylist_agent/request.json' -2025-10-23 12:55:03,968 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 12:55:03,976 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 12:55:03,992 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 12:55:04,000 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 12:55:30,861 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 12:55:30,863 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 12:55:42,692 base_events.py [line:1758] ERROR Task exception was never retrieved -future: exception=DefaultCredentialsError('Gemini API call failed: Your default credentials were not found. To set up Application Default Credentials, see https://cloud.google.com/docs/authentication/external/set-up-adc for more information.')> -Traceback (most recent call last): - File "/app/app/core/llm_interface.py", line 45, in generate_response - response = await self.gemini_client.aio.models.generate_content( - File "/usr/local/lib/python3.10/dist-packages/google/genai/models.py", line 6757, in generate_content - response = await self._generate_content( - File "/usr/local/lib/python3.10/dist-packages/google/genai/models.py", line 5592, in _generate_content - response = await self._api_client.async_request( - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 1341, in async_request - result = await self._async_request( - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 1286, in _async_request - return await self._async_retry( # type: ignore[no-any-return] - File "/usr/local/lib/python3.10/dist-packages/tenacity/asyncio/__init__.py", line 111, in __call__ - do = await self.iter(retry_state=retry_state) - File "/usr/local/lib/python3.10/dist-packages/tenacity/asyncio/__init__.py", line 153, in iter - result = await action(retry_state) - File "/usr/local/lib/python3.10/dist-packages/tenacity/_utils.py", line 99, in inner - return call(*args, **kwargs) - File "/usr/local/lib/python3.10/dist-packages/tenacity/__init__.py", line 420, in exc_check - raise retry_exc.reraise() - File "/usr/local/lib/python3.10/dist-packages/tenacity/__init__.py", line 187, in reraise - raise self.last_attempt.result() - File "/usr/lib/python3.10/concurrent/futures/_base.py", line 451, in result - return self.__get_result() - File "/usr/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result - raise self._exception - File "/usr/local/lib/python3.10/dist-packages/tenacity/asyncio/__init__.py", line 114, in __call__ - result = await fn(*args, **kwargs) - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 1153, in _async_request_once - f'Bearer {await self._async_access_token()}' - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 970, in _async_access_token - self._credentials, project = await asyncio.to_thread( - File "/usr/lib/python3.10/asyncio/threads.py", line 25, in to_thread - return await loop.run_in_executor(None, func_call) - File "/usr/lib/python3.10/concurrent/futures/thread.py", line 58, in run - result = self.fn(*self.args, **self.kwargs) - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 184, in load_auth - credentials, loaded_project_id = google.auth.default( # type: ignore[no-untyped-call] - File "/usr/local/lib/python3.10/dist-packages/google/auth/_default.py", line 739, in default - raise exceptions.DefaultCredentialsError(_CLOUD_SDK_MISSING_CREDENTIALS) -google.auth.exceptions.DefaultCredentialsError: Your default credentials were not found. To set up Application Default Credentials, see https://cloud.google.com/docs/authentication/external/set-up-adc for more information. - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/app/app/server/ChatbotAgent/agent_server.py", line 59, in background_run - request_summary = await self.get_conversation_summary(request.user_id) - File "/app/app/server/ChatbotAgent/agent_server.py", line 84, in get_conversation_summary - summary = await self.llm.generate_response(history=[Message(role=Role.USER, content=input_message)], system_prompt=SUMMARY_PROMPT) - File "/app/app/core/llm_interface.py", line 55, in generate_response - raise type(e)(f"Gemini API call failed: {e}") -google.auth.exceptions.DefaultCredentialsError: Gemini API call failed: Your default credentials were not found. To set up Application Default Credentials, see https://cloud.google.com/docs/authentication/external/set-up-adc for more information. -2025-10-23 12:59:02,989 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 12:59:02,990 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 12:59:03,003 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 12:59:03,003 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 12:59:20,848 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 12:59:20,849 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 12:59:28,106 _client.py [line:1740] INFO HTTP Request: POST https://us-central1-aiplatform.googleapis.com/v1beta1/projects/aida-461108/locations/us-central1/publishers/google/models/gemini-2.5-flash:generateContent "HTTP/1.1 200 OK" -2025-10-23 12:59:28,114 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": "", - "style": "No preference", - "color_preference": "No preference", - "clothing_type": "No preference", - "vibe_or_details": "No preference" -} -``` -2025-10-23 12:59:28,150 base_events.py [line:1758] ERROR Task exception was never retrieved -future: exception=RuntimeError("Failed to load credentials from file /workspace/lc_stylist_agent/request.json: [Errno 2] No such file or directory: '/workspace/lc_stylist_agent/request.json'")> -Traceback (most recent call last): - File "/app/app/core/stylist_agent_server.py", line 38, in __init__ - self.credentials = service_account.Credentials.from_service_account_file('/workspace/lc_stylist_agent/request.json') - File "/usr/local/lib/python3.10/dist-packages/google/oauth2/service_account.py", line 264, in from_service_account_file - info, signer = _service_account_info.from_filename( - File "/usr/local/lib/python3.10/dist-packages/google/auth/_service_account_info.py", line 78, in from_filename - with io.open(filename, "r", encoding="utf-8") as json_file: -FileNotFoundError: [Errno 2] No such file or directory: '/workspace/lc_stylist_agent/request.json' - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/app/app/server/ChatbotAgent/agent_server.py", line 63, in background_run - recommendation_results = await self.recommend_outfit(request_summary=request_summary, - File "/app/app/server/ChatbotAgent/agent_server.py", line 99, in recommend_outfit - agent = AsyncStylistAgent(**self.stylist_agent_kwages) - File "/app/app/core/stylist_agent_server.py", line 41, in __init__ - raise RuntimeError(f"Failed to load credentials from file {'/workspace/lc_stylist_agent/request.json'}: {e}") -RuntimeError: Failed to load credentials from file /workspace/lc_stylist_agent/request.json: [Errno 2] No such file or directory: '/workspace/lc_stylist_agent/request.json' -2025-10-23 13:01:05,230 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 13:01:05,230 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 13:01:05,238 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 13:01:05,238 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 13:01:31,178 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 13:01:31,178 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 13:01:31,187 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 13:01:31,187 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 13:02:07,048 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 13:02:07,049 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:02:14,759 _client.py [line:1740] INFO HTTP Request: POST https://us-central1-aiplatform.googleapis.com/v1beta1/projects/aida-461108/locations/us-central1/publishers/google/models/gemini-2.5-flash:generateContent "HTTP/1.1 200 OK" -2025-10-23 13:02:14,766 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": "Romantic date dinner", - "style": "Classic elegance", - "color_preference": [ - "Cream", - "Pale Blue" - ], - "clothing_type": "Lightweight maxi dress", - "vibe_or_details": "Needs to be comfortable and breathable" -} -``` -2025-10-23 13:02:14,806 base_events.py [line:1758] ERROR Task exception was never retrieved -future: exception=RuntimeError("Failed to load credentials from file /workspace/lc_stylist_agent/request.json: [Errno 2] No such file or directory: '/workspace/lc_stylist_agent/request.json'")> -Traceback (most recent call last): - File "/app/app/core/stylist_agent_server.py", line 38, in __init__ - self.credentials = service_account.Credentials.from_service_account_file('/workspace/lc_stylist_agent/request.json') - File "/usr/local/lib/python3.10/dist-packages/google/oauth2/service_account.py", line 264, in from_service_account_file - info, signer = _service_account_info.from_filename( - File "/usr/local/lib/python3.10/dist-packages/google/auth/_service_account_info.py", line 78, in from_filename - with io.open(filename, "r", encoding="utf-8") as json_file: -FileNotFoundError: [Errno 2] No such file or directory: '/workspace/lc_stylist_agent/request.json' - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/app/app/server/ChatbotAgent/agent_server.py", line 63, in background_run - recommendation_results = await self.recommend_outfit(request_summary=request_summary, - File "/app/app/server/ChatbotAgent/agent_server.py", line 99, in recommend_outfit - agent = AsyncStylistAgent(**self.stylist_agent_kwages) - File "/app/app/core/stylist_agent_server.py", line 41, in __init__ - raise RuntimeError(f"Failed to load credentials from file {'/workspace/lc_stylist_agent/request.json'}: {e}") -RuntimeError: Failed to load credentials from file /workspace/lc_stylist_agent/request.json: [Errno 2] No such file or directory: '/workspace/lc_stylist_agent/request.json' -2025-10-23 13:04:34,790 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 13:04:34,798 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 13:04:34,822 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 13:04:34,831 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 13:04:49,159 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 13:04:49,161 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:04:52,924 _client.py [line:1740] INFO HTTP Request: POST https://us-central1-aiplatform.googleapis.com/v1beta1/projects/aida-461108/locations/us-central1/publishers/google/models/gemini-2.5-flash:generateContent "HTTP/1.1 200 OK" -2025-10-23 13:04:52,930 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": "Outdoor summer wedding", - "style": "Elegant and comfortable", - "color_preference": "Light, pastel colors", - "clothing_type": "Lightweight maxi dress", - "vibe_or_details": "Needs to be breathable for hot weather, not too formal but elegant enough for a wedding, no specific pattern preference but open to subtle designs." -} -``` -2025-10-23 13:04:53,112 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'd62c593f-ddcb-491d-ad83-6a1080dc4c35', 'items': []} -2025-10-23 13:04:53,115 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:04:57,361 _client.py [line:1740] INFO HTTP Request: POST https://us-central1-aiplatform.googleapis.com/v1beta1/projects/aida-461108/locations/us-central1/publishers/google/models/gemini-2.5-flash:generateContent "HTTP/1.1 200 OK" -2025-10-23 13:04:57,425 agent_server.py [line:69] INFO ---- Final Recommendation Results --- -2025-10-23 13:04:57,425 agent_server.py [line:73] ERROR ❌ Failed: 'NoneType' object has no attribute 'get' -2025-10-23 13:08:18,434 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 13:08:18,434 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 13:08:18,442 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 13:08:18,442 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 13:08:59,356 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 13:08:59,357 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:09:11,912 _client.py [line:1740] INFO HTTP Request: POST https://us-central1-aiplatform.googleapis.com/v1beta1/projects/aida-461108/locations/us-central1/publishers/google/models/gemini-2.5-flash:generateContent "HTTP/1.1 200 OK" -2025-10-23 13:09:11,919 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": "", - "style": "", - "color_preference": "No preference", - "clothing_type": "", - "vibe_or_details": "" -} -``` -2025-10-23 13:09:12,017 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '4249f4c2-e7e1-432a-9f00-917cab8c3697', 'items': []} -2025-10-23 13:09:12,017 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:09:15,082 _client.py [line:1740] INFO HTTP Request: POST https://us-central1-aiplatform.googleapis.com/v1beta1/projects/aida-461108/locations/us-central1/publishers/google/models/gemini-2.5-flash:generateContent "HTTP/1.1 200 OK" -2025-10-23 13:09:15,866 agent_server.py [line:69] INFO ---- Final Recommendation Results --- -2025-10-23 13:09:15,866 agent_server.py [line:73] ERROR ❌ Failed: 'NoneType' object has no attribute 'get' -2025-10-24 10:22:10,296 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:22:10,297 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:22:10,305 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:22:10,305 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:22:16,926 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-24 10:22:16,928 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:22:29,130 base_events.py [line:1758] ERROR Task exception was never retrieved -future: exception=DefaultCredentialsError('Gemini API call failed: Your default credentials were not found. To set up Application Default Credentials, see https://cloud.google.com/docs/authentication/external/set-up-adc for more information.')> -Traceback (most recent call last): - File "/workspace/lc_stylist_agent/app/core/llm_interface.py", line 45, in generate_response - response = await self.gemini_client.aio.models.generate_content( - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/google/genai/models.py", line 6757, in generate_content - response = await self._generate_content( - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/google/genai/models.py", line 5592, in _generate_content - response = await self._api_client.async_request( - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/google/genai/_api_client.py", line 1341, in async_request - result = await self._async_request( - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/google/genai/_api_client.py", line 1286, in _async_request - return await self._async_retry( # type: ignore[no-any-return] - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/tenacity/_asyncio.py", line 58, in __call__ - do = await self.iter(retry_state=retry_state) - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/tenacity/_asyncio.py", line 110, in iter - result = await action(retry_state) - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/tenacity/_asyncio.py", line 78, in inner - return fn(*args, **kwargs) - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/tenacity/__init__.py", line 410, in exc_check - raise retry_exc.reraise() - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/tenacity/__init__.py", line 183, in reraise - raise self.last_attempt.result() - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/concurrent/futures/_base.py", line 451, in result - return self.__get_result() - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result - raise self._exception - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/tenacity/_asyncio.py", line 61, in __call__ - result = await fn(*args, **kwargs) - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/google/genai/_api_client.py", line 1153, in _async_request_once - f'Bearer {await self._async_access_token()}' - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/google/genai/_api_client.py", line 970, in _async_access_token - self._credentials, project = await asyncio.to_thread( - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/asyncio/threads.py", line 25, in to_thread - return await loop.run_in_executor(None, func_call) - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/concurrent/futures/thread.py", line 58, in run - result = self.fn(*self.args, **self.kwargs) - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/google/genai/_api_client.py", line 184, in load_auth - credentials, loaded_project_id = google.auth.default( # type: ignore[no-untyped-call] - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/google/auth/_default.py", line 739, in default - raise exceptions.DefaultCredentialsError(_CLOUD_SDK_MISSING_CREDENTIALS) -google.auth.exceptions.DefaultCredentialsError: Your default credentials were not found. To set up Application Default Credentials, see https://cloud.google.com/docs/authentication/external/set-up-adc for more information. - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/workspace/lc_stylist_agent/app/server/ChatbotAgent/agent_server.py", line 59, in background_run - request_summary = await self.get_conversation_summary(request.user_id) - File "/workspace/lc_stylist_agent/app/server/ChatbotAgent/agent_server.py", line 84, in get_conversation_summary - summary = await self.llm.generate_response(history=[Message(role=Role.USER, content=input_message)], system_prompt=SUMMARY_PROMPT) - File "/workspace/lc_stylist_agent/app/core/llm_interface.py", line 55, in generate_response - raise type(e)(f"Gemini API call failed: {e}") -google.auth.exceptions.DefaultCredentialsError: Gemini API call failed: Your default credentials were not found. To set up Application Default Credentials, see https://cloud.google.com/docs/authentication/external/set-up-adc for more information. -2025-10-24 10:35:27,496 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:35:27,500 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:35:27,503 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:35:27,507 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:35:32,549 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-24 10:35:32,550 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:35:44,514 base_events.py [line:1758] ERROR Task exception was never retrieved -future: exception=DefaultCredentialsError('Gemini API call failed: Your default credentials were not found. To set up Application Default Credentials, see https://cloud.google.com/docs/authentication/external/set-up-adc for more information.')> -Traceback (most recent call last): - File "/workspace/lc_stylist_agent/app/core/llm_interface.py", line 45, in generate_response - response = await self.gemini_client.aio.models.generate_content( - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/google/genai/models.py", line 6757, in generate_content - response = await self._generate_content( - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/google/genai/models.py", line 5592, in _generate_content - response = await self._api_client.async_request( - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/google/genai/_api_client.py", line 1341, in async_request - result = await self._async_request( - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/google/genai/_api_client.py", line 1286, in _async_request - return await self._async_retry( # type: ignore[no-any-return] - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/tenacity/_asyncio.py", line 58, in __call__ - do = await self.iter(retry_state=retry_state) - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/tenacity/_asyncio.py", line 110, in iter - result = await action(retry_state) - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/tenacity/_asyncio.py", line 78, in inner - return fn(*args, **kwargs) - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/tenacity/__init__.py", line 410, in exc_check - raise retry_exc.reraise() - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/tenacity/__init__.py", line 183, in reraise - raise self.last_attempt.result() - File "/home/user/miniconda3/envs/test2/lib/python3.10/concurrent/futures/_base.py", line 451, in result - return self.__get_result() - File "/home/user/miniconda3/envs/test2/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result - raise self._exception - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/tenacity/_asyncio.py", line 61, in __call__ - result = await fn(*args, **kwargs) - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/google/genai/_api_client.py", line 1153, in _async_request_once - f'Bearer {await self._async_access_token()}' - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/google/genai/_api_client.py", line 970, in _async_access_token - self._credentials, project = await asyncio.to_thread( - File "/home/user/miniconda3/envs/test2/lib/python3.10/asyncio/threads.py", line 25, in to_thread - return await loop.run_in_executor(None, func_call) - File "/home/user/miniconda3/envs/test2/lib/python3.10/concurrent/futures/thread.py", line 58, in run - result = self.fn(*self.args, **self.kwargs) - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/google/genai/_api_client.py", line 184, in load_auth - credentials, loaded_project_id = google.auth.default( # type: ignore[no-untyped-call] - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/google/auth/_default.py", line 739, in default - raise exceptions.DefaultCredentialsError(_CLOUD_SDK_MISSING_CREDENTIALS) -google.auth.exceptions.DefaultCredentialsError: Your default credentials were not found. To set up Application Default Credentials, see https://cloud.google.com/docs/authentication/external/set-up-adc for more information. - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/workspace/lc_stylist_agent/app/server/ChatbotAgent/agent_server.py", line 59, in background_run - request_summary = await self.get_conversation_summary(request.user_id) - File "/workspace/lc_stylist_agent/app/server/ChatbotAgent/agent_server.py", line 84, in get_conversation_summary - summary = await self.llm.generate_response(history=[Message(role=Role.USER, content=input_message)], system_prompt=SUMMARY_PROMPT) - File "/workspace/lc_stylist_agent/app/core/llm_interface.py", line 55, in generate_response - raise type(e)(f"Gemini API call failed: {e}") -google.auth.exceptions.DefaultCredentialsError: Gemini API call failed: Your default credentials were not found. To set up Application Default Credentials, see https://cloud.google.com/docs/authentication/external/set-up-adc for more information. diff --git a/logs/error.log b/logs/error.log deleted file mode 100644 index 091c516..0000000 --- a/logs/error.log +++ /dev/null @@ -1,395 +0,0 @@ -2025-10-23 12:42:40,052 base_events.py [line:1758] ERROR Task exception was never retrieved -future: exception=DefaultCredentialsError('Gemini API call failed: Your default credentials were not found. To set up Application Default Credentials, see https://cloud.google.com/docs/authentication/external/set-up-adc for more information.')> -Traceback (most recent call last): - File "/app/app/core/llm_interface.py", line 45, in generate_response - response = await self.gemini_client.aio.models.generate_content( - File "/usr/local/lib/python3.10/dist-packages/google/genai/models.py", line 6757, in generate_content - response = await self._generate_content( - File "/usr/local/lib/python3.10/dist-packages/google/genai/models.py", line 5592, in _generate_content - response = await self._api_client.async_request( - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 1341, in async_request - result = await self._async_request( - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 1286, in _async_request - return await self._async_retry( # type: ignore[no-any-return] - File "/usr/local/lib/python3.10/dist-packages/tenacity/asyncio/__init__.py", line 111, in __call__ - do = await self.iter(retry_state=retry_state) - File "/usr/local/lib/python3.10/dist-packages/tenacity/asyncio/__init__.py", line 153, in iter - result = await action(retry_state) - File "/usr/local/lib/python3.10/dist-packages/tenacity/_utils.py", line 99, in inner - return call(*args, **kwargs) - File "/usr/local/lib/python3.10/dist-packages/tenacity/__init__.py", line 420, in exc_check - raise retry_exc.reraise() - File "/usr/local/lib/python3.10/dist-packages/tenacity/__init__.py", line 187, in reraise - raise self.last_attempt.result() - File "/usr/lib/python3.10/concurrent/futures/_base.py", line 451, in result - return self.__get_result() - File "/usr/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result - raise self._exception - File "/usr/local/lib/python3.10/dist-packages/tenacity/asyncio/__init__.py", line 114, in __call__ - result = await fn(*args, **kwargs) - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 1153, in _async_request_once - f'Bearer {await self._async_access_token()}' - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 970, in _async_access_token - self._credentials, project = await asyncio.to_thread( - File "/usr/lib/python3.10/asyncio/threads.py", line 25, in to_thread - return await loop.run_in_executor(None, func_call) - File "/usr/lib/python3.10/concurrent/futures/thread.py", line 58, in run - result = self.fn(*self.args, **self.kwargs) - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 184, in load_auth - credentials, loaded_project_id = google.auth.default( # type: ignore[no-untyped-call] - File "/usr/local/lib/python3.10/dist-packages/google/auth/_default.py", line 739, in default - raise exceptions.DefaultCredentialsError(_CLOUD_SDK_MISSING_CREDENTIALS) -google.auth.exceptions.DefaultCredentialsError: Your default credentials were not found. To set up Application Default Credentials, see https://cloud.google.com/docs/authentication/external/set-up-adc for more information. - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/app/app/server/ChatbotAgent/agent_server.py", line 59, in background_run - request_summary = await self.get_conversation_summary(request.user_id) - File "/app/app/server/ChatbotAgent/agent_server.py", line 84, in get_conversation_summary - summary = await self.llm.generate_response(history=[Message(role=Role.USER, content=input_message)], system_prompt=SUMMARY_PROMPT) - File "/app/app/core/llm_interface.py", line 55, in generate_response - raise type(e)(f"Gemini API call failed: {e}") -google.auth.exceptions.DefaultCredentialsError: Gemini API call failed: Your default credentials were not found. To set up Application Default Credentials, see https://cloud.google.com/docs/authentication/external/set-up-adc for more information. -2025-10-23 12:45:52,806 base_events.py [line:1758] ERROR Task exception was never retrieved -future: exception=DefaultCredentialsError('Gemini API call failed: File /workspace/lc_stylist_agent/request.json was not found.')> -Traceback (most recent call last): - File "/app/app/core/llm_interface.py", line 45, in generate_response - response = await self.gemini_client.aio.models.generate_content( - File "/usr/local/lib/python3.10/dist-packages/google/genai/models.py", line 6757, in generate_content - response = await self._generate_content( - File "/usr/local/lib/python3.10/dist-packages/google/genai/models.py", line 5592, in _generate_content - response = await self._api_client.async_request( - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 1341, in async_request - result = await self._async_request( - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 1286, in _async_request - return await self._async_retry( # type: ignore[no-any-return] - File "/usr/local/lib/python3.10/dist-packages/tenacity/asyncio/__init__.py", line 111, in __call__ - do = await self.iter(retry_state=retry_state) - File "/usr/local/lib/python3.10/dist-packages/tenacity/asyncio/__init__.py", line 153, in iter - result = await action(retry_state) - File "/usr/local/lib/python3.10/dist-packages/tenacity/_utils.py", line 99, in inner - return call(*args, **kwargs) - File "/usr/local/lib/python3.10/dist-packages/tenacity/__init__.py", line 420, in exc_check - raise retry_exc.reraise() - File "/usr/local/lib/python3.10/dist-packages/tenacity/__init__.py", line 187, in reraise - raise self.last_attempt.result() - File "/usr/lib/python3.10/concurrent/futures/_base.py", line 451, in result - return self.__get_result() - File "/usr/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result - raise self._exception - File "/usr/local/lib/python3.10/dist-packages/tenacity/asyncio/__init__.py", line 114, in __call__ - result = await fn(*args, **kwargs) - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 1153, in _async_request_once - f'Bearer {await self._async_access_token()}' - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 970, in _async_access_token - self._credentials, project = await asyncio.to_thread( - File "/usr/lib/python3.10/asyncio/threads.py", line 25, in to_thread - return await loop.run_in_executor(None, func_call) - File "/usr/lib/python3.10/concurrent/futures/thread.py", line 58, in run - result = self.fn(*self.args, **self.kwargs) - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 184, in load_auth - credentials, loaded_project_id = google.auth.default( # type: ignore[no-untyped-call] - File "/usr/local/lib/python3.10/dist-packages/google/auth/_default.py", line 705, in default - credentials, project_id = checker() - File "/usr/local/lib/python3.10/dist-packages/google/auth/_default.py", line 698, in - lambda: _get_explicit_environ_credentials(quota_project_id=quota_project_id), - File "/usr/local/lib/python3.10/dist-packages/google/auth/_default.py", line 346, in _get_explicit_environ_credentials - credentials, project_id = load_credentials_from_file( - File "/usr/local/lib/python3.10/dist-packages/google/auth/_default.py", line 173, in load_credentials_from_file - raise exceptions.DefaultCredentialsError( -google.auth.exceptions.DefaultCredentialsError: File /workspace/lc_stylist_agent/request.json was not found. - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/app/app/server/ChatbotAgent/agent_server.py", line 59, in background_run - request_summary = await self.get_conversation_summary(request.user_id) - File "/app/app/server/ChatbotAgent/agent_server.py", line 84, in get_conversation_summary - summary = await self.llm.generate_response(history=[Message(role=Role.USER, content=input_message)], system_prompt=SUMMARY_PROMPT) - File "/app/app/core/llm_interface.py", line 55, in generate_response - raise type(e)(f"Gemini API call failed: {e}") -google.auth.exceptions.DefaultCredentialsError: Gemini API call failed: File /workspace/lc_stylist_agent/request.json was not found. -2025-10-23 12:49:29,266 base_events.py [line:1758] ERROR Task exception was never retrieved -future: exception=DefaultCredentialsError('Gemini API call failed: File /app/app/request.json was not found.')> -Traceback (most recent call last): - File "/app/app/core/llm_interface.py", line 45, in generate_response - response = await self.gemini_client.aio.models.generate_content( - File "/usr/local/lib/python3.10/dist-packages/google/genai/models.py", line 6757, in generate_content - response = await self._generate_content( - File "/usr/local/lib/python3.10/dist-packages/google/genai/models.py", line 5592, in _generate_content - response = await self._api_client.async_request( - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 1341, in async_request - result = await self._async_request( - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 1286, in _async_request - return await self._async_retry( # type: ignore[no-any-return] - File "/usr/local/lib/python3.10/dist-packages/tenacity/asyncio/__init__.py", line 111, in __call__ - do = await self.iter(retry_state=retry_state) - File "/usr/local/lib/python3.10/dist-packages/tenacity/asyncio/__init__.py", line 153, in iter - result = await action(retry_state) - File "/usr/local/lib/python3.10/dist-packages/tenacity/_utils.py", line 99, in inner - return call(*args, **kwargs) - File "/usr/local/lib/python3.10/dist-packages/tenacity/__init__.py", line 420, in exc_check - raise retry_exc.reraise() - File "/usr/local/lib/python3.10/dist-packages/tenacity/__init__.py", line 187, in reraise - raise self.last_attempt.result() - File "/usr/lib/python3.10/concurrent/futures/_base.py", line 451, in result - return self.__get_result() - File "/usr/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result - raise self._exception - File "/usr/local/lib/python3.10/dist-packages/tenacity/asyncio/__init__.py", line 114, in __call__ - result = await fn(*args, **kwargs) - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 1153, in _async_request_once - f'Bearer {await self._async_access_token()}' - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 970, in _async_access_token - self._credentials, project = await asyncio.to_thread( - File "/usr/lib/python3.10/asyncio/threads.py", line 25, in to_thread - return await loop.run_in_executor(None, func_call) - File "/usr/lib/python3.10/concurrent/futures/thread.py", line 58, in run - result = self.fn(*self.args, **self.kwargs) - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 184, in load_auth - credentials, loaded_project_id = google.auth.default( # type: ignore[no-untyped-call] - File "/usr/local/lib/python3.10/dist-packages/google/auth/_default.py", line 705, in default - credentials, project_id = checker() - File "/usr/local/lib/python3.10/dist-packages/google/auth/_default.py", line 698, in - lambda: _get_explicit_environ_credentials(quota_project_id=quota_project_id), - File "/usr/local/lib/python3.10/dist-packages/google/auth/_default.py", line 346, in _get_explicit_environ_credentials - credentials, project_id = load_credentials_from_file( - File "/usr/local/lib/python3.10/dist-packages/google/auth/_default.py", line 173, in load_credentials_from_file - raise exceptions.DefaultCredentialsError( -google.auth.exceptions.DefaultCredentialsError: File /app/app/request.json was not found. - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/app/app/server/ChatbotAgent/agent_server.py", line 59, in background_run - request_summary = await self.get_conversation_summary(request.user_id) - File "/app/app/server/ChatbotAgent/agent_server.py", line 84, in get_conversation_summary - summary = await self.llm.generate_response(history=[Message(role=Role.USER, content=input_message)], system_prompt=SUMMARY_PROMPT) - File "/app/app/core/llm_interface.py", line 55, in generate_response - raise type(e)(f"Gemini API call failed: {e}") -google.auth.exceptions.DefaultCredentialsError: Gemini API call failed: File /app/app/request.json was not found. -2025-10-23 12:51:11,997 base_events.py [line:1758] ERROR Task exception was never retrieved -future: exception=RuntimeError("Failed to load credentials from file /workspace/lc_stylist_agent/request.json: [Errno 2] No such file or directory: '/workspace/lc_stylist_agent/request.json'")> -Traceback (most recent call last): - File "/app/app/core/stylist_agent_server.py", line 38, in __init__ - self.credentials = service_account.Credentials.from_service_account_file('/workspace/lc_stylist_agent/request.json') - File "/usr/local/lib/python3.10/dist-packages/google/oauth2/service_account.py", line 264, in from_service_account_file - info, signer = _service_account_info.from_filename( - File "/usr/local/lib/python3.10/dist-packages/google/auth/_service_account_info.py", line 78, in from_filename - with io.open(filename, "r", encoding="utf-8") as json_file: -FileNotFoundError: [Errno 2] No such file or directory: '/workspace/lc_stylist_agent/request.json' - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/app/app/server/ChatbotAgent/agent_server.py", line 63, in background_run - recommendation_results = await self.recommend_outfit(request_summary=request_summary, - File "/app/app/server/ChatbotAgent/agent_server.py", line 99, in recommend_outfit - agent = AsyncStylistAgent(**self.stylist_agent_kwages) - File "/app/app/core/stylist_agent_server.py", line 41, in __init__ - raise RuntimeError(f"Failed to load credentials from file {'/workspace/lc_stylist_agent/request.json'}: {e}") -RuntimeError: Failed to load credentials from file /workspace/lc_stylist_agent/request.json: [Errno 2] No such file or directory: '/workspace/lc_stylist_agent/request.json' -2025-10-23 12:55:42,692 base_events.py [line:1758] ERROR Task exception was never retrieved -future: exception=DefaultCredentialsError('Gemini API call failed: Your default credentials were not found. To set up Application Default Credentials, see https://cloud.google.com/docs/authentication/external/set-up-adc for more information.')> -Traceback (most recent call last): - File "/app/app/core/llm_interface.py", line 45, in generate_response - response = await self.gemini_client.aio.models.generate_content( - File "/usr/local/lib/python3.10/dist-packages/google/genai/models.py", line 6757, in generate_content - response = await self._generate_content( - File "/usr/local/lib/python3.10/dist-packages/google/genai/models.py", line 5592, in _generate_content - response = await self._api_client.async_request( - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 1341, in async_request - result = await self._async_request( - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 1286, in _async_request - return await self._async_retry( # type: ignore[no-any-return] - File "/usr/local/lib/python3.10/dist-packages/tenacity/asyncio/__init__.py", line 111, in __call__ - do = await self.iter(retry_state=retry_state) - File "/usr/local/lib/python3.10/dist-packages/tenacity/asyncio/__init__.py", line 153, in iter - result = await action(retry_state) - File "/usr/local/lib/python3.10/dist-packages/tenacity/_utils.py", line 99, in inner - return call(*args, **kwargs) - File "/usr/local/lib/python3.10/dist-packages/tenacity/__init__.py", line 420, in exc_check - raise retry_exc.reraise() - File "/usr/local/lib/python3.10/dist-packages/tenacity/__init__.py", line 187, in reraise - raise self.last_attempt.result() - File "/usr/lib/python3.10/concurrent/futures/_base.py", line 451, in result - return self.__get_result() - File "/usr/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result - raise self._exception - File "/usr/local/lib/python3.10/dist-packages/tenacity/asyncio/__init__.py", line 114, in __call__ - result = await fn(*args, **kwargs) - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 1153, in _async_request_once - f'Bearer {await self._async_access_token()}' - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 970, in _async_access_token - self._credentials, project = await asyncio.to_thread( - File "/usr/lib/python3.10/asyncio/threads.py", line 25, in to_thread - return await loop.run_in_executor(None, func_call) - File "/usr/lib/python3.10/concurrent/futures/thread.py", line 58, in run - result = self.fn(*self.args, **self.kwargs) - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 184, in load_auth - credentials, loaded_project_id = google.auth.default( # type: ignore[no-untyped-call] - File "/usr/local/lib/python3.10/dist-packages/google/auth/_default.py", line 739, in default - raise exceptions.DefaultCredentialsError(_CLOUD_SDK_MISSING_CREDENTIALS) -google.auth.exceptions.DefaultCredentialsError: Your default credentials were not found. To set up Application Default Credentials, see https://cloud.google.com/docs/authentication/external/set-up-adc for more information. - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/app/app/server/ChatbotAgent/agent_server.py", line 59, in background_run - request_summary = await self.get_conversation_summary(request.user_id) - File "/app/app/server/ChatbotAgent/agent_server.py", line 84, in get_conversation_summary - summary = await self.llm.generate_response(history=[Message(role=Role.USER, content=input_message)], system_prompt=SUMMARY_PROMPT) - File "/app/app/core/llm_interface.py", line 55, in generate_response - raise type(e)(f"Gemini API call failed: {e}") -google.auth.exceptions.DefaultCredentialsError: Gemini API call failed: Your default credentials were not found. To set up Application Default Credentials, see https://cloud.google.com/docs/authentication/external/set-up-adc for more information. -2025-10-23 12:59:28,150 base_events.py [line:1758] ERROR Task exception was never retrieved -future: exception=RuntimeError("Failed to load credentials from file /workspace/lc_stylist_agent/request.json: [Errno 2] No such file or directory: '/workspace/lc_stylist_agent/request.json'")> -Traceback (most recent call last): - File "/app/app/core/stylist_agent_server.py", line 38, in __init__ - self.credentials = service_account.Credentials.from_service_account_file('/workspace/lc_stylist_agent/request.json') - File "/usr/local/lib/python3.10/dist-packages/google/oauth2/service_account.py", line 264, in from_service_account_file - info, signer = _service_account_info.from_filename( - File "/usr/local/lib/python3.10/dist-packages/google/auth/_service_account_info.py", line 78, in from_filename - with io.open(filename, "r", encoding="utf-8") as json_file: -FileNotFoundError: [Errno 2] No such file or directory: '/workspace/lc_stylist_agent/request.json' - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/app/app/server/ChatbotAgent/agent_server.py", line 63, in background_run - recommendation_results = await self.recommend_outfit(request_summary=request_summary, - File "/app/app/server/ChatbotAgent/agent_server.py", line 99, in recommend_outfit - agent = AsyncStylistAgent(**self.stylist_agent_kwages) - File "/app/app/core/stylist_agent_server.py", line 41, in __init__ - raise RuntimeError(f"Failed to load credentials from file {'/workspace/lc_stylist_agent/request.json'}: {e}") -RuntimeError: Failed to load credentials from file /workspace/lc_stylist_agent/request.json: [Errno 2] No such file or directory: '/workspace/lc_stylist_agent/request.json' -2025-10-23 13:02:14,806 base_events.py [line:1758] ERROR Task exception was never retrieved -future: exception=RuntimeError("Failed to load credentials from file /workspace/lc_stylist_agent/request.json: [Errno 2] No such file or directory: '/workspace/lc_stylist_agent/request.json'")> -Traceback (most recent call last): - File "/app/app/core/stylist_agent_server.py", line 38, in __init__ - self.credentials = service_account.Credentials.from_service_account_file('/workspace/lc_stylist_agent/request.json') - File "/usr/local/lib/python3.10/dist-packages/google/oauth2/service_account.py", line 264, in from_service_account_file - info, signer = _service_account_info.from_filename( - File "/usr/local/lib/python3.10/dist-packages/google/auth/_service_account_info.py", line 78, in from_filename - with io.open(filename, "r", encoding="utf-8") as json_file: -FileNotFoundError: [Errno 2] No such file or directory: '/workspace/lc_stylist_agent/request.json' - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/app/app/server/ChatbotAgent/agent_server.py", line 63, in background_run - recommendation_results = await self.recommend_outfit(request_summary=request_summary, - File "/app/app/server/ChatbotAgent/agent_server.py", line 99, in recommend_outfit - agent = AsyncStylistAgent(**self.stylist_agent_kwages) - File "/app/app/core/stylist_agent_server.py", line 41, in __init__ - raise RuntimeError(f"Failed to load credentials from file {'/workspace/lc_stylist_agent/request.json'}: {e}") -RuntimeError: Failed to load credentials from file /workspace/lc_stylist_agent/request.json: [Errno 2] No such file or directory: '/workspace/lc_stylist_agent/request.json' -2025-10-23 13:04:57,425 agent_server.py [line:73] ERROR ❌ Failed: 'NoneType' object has no attribute 'get' -2025-10-23 13:09:15,866 agent_server.py [line:73] ERROR ❌ Failed: 'NoneType' object has no attribute 'get' -2025-10-24 10:22:29,130 base_events.py [line:1758] ERROR Task exception was never retrieved -future: exception=DefaultCredentialsError('Gemini API call failed: Your default credentials were not found. To set up Application Default Credentials, see https://cloud.google.com/docs/authentication/external/set-up-adc for more information.')> -Traceback (most recent call last): - File "/workspace/lc_stylist_agent/app/core/llm_interface.py", line 45, in generate_response - response = await self.gemini_client.aio.models.generate_content( - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/google/genai/models.py", line 6757, in generate_content - response = await self._generate_content( - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/google/genai/models.py", line 5592, in _generate_content - response = await self._api_client.async_request( - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/google/genai/_api_client.py", line 1341, in async_request - result = await self._async_request( - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/google/genai/_api_client.py", line 1286, in _async_request - return await self._async_retry( # type: ignore[no-any-return] - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/tenacity/_asyncio.py", line 58, in __call__ - do = await self.iter(retry_state=retry_state) - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/tenacity/_asyncio.py", line 110, in iter - result = await action(retry_state) - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/tenacity/_asyncio.py", line 78, in inner - return fn(*args, **kwargs) - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/tenacity/__init__.py", line 410, in exc_check - raise retry_exc.reraise() - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/tenacity/__init__.py", line 183, in reraise - raise self.last_attempt.result() - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/concurrent/futures/_base.py", line 451, in result - return self.__get_result() - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result - raise self._exception - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/tenacity/_asyncio.py", line 61, in __call__ - result = await fn(*args, **kwargs) - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/google/genai/_api_client.py", line 1153, in _async_request_once - f'Bearer {await self._async_access_token()}' - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/google/genai/_api_client.py", line 970, in _async_access_token - self._credentials, project = await asyncio.to_thread( - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/asyncio/threads.py", line 25, in to_thread - return await loop.run_in_executor(None, func_call) - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/concurrent/futures/thread.py", line 58, in run - result = self.fn(*self.args, **self.kwargs) - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/google/genai/_api_client.py", line 184, in load_auth - credentials, loaded_project_id = google.auth.default( # type: ignore[no-untyped-call] - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/google/auth/_default.py", line 739, in default - raise exceptions.DefaultCredentialsError(_CLOUD_SDK_MISSING_CREDENTIALS) -google.auth.exceptions.DefaultCredentialsError: Your default credentials were not found. To set up Application Default Credentials, see https://cloud.google.com/docs/authentication/external/set-up-adc for more information. - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/workspace/lc_stylist_agent/app/server/ChatbotAgent/agent_server.py", line 59, in background_run - request_summary = await self.get_conversation_summary(request.user_id) - File "/workspace/lc_stylist_agent/app/server/ChatbotAgent/agent_server.py", line 84, in get_conversation_summary - summary = await self.llm.generate_response(history=[Message(role=Role.USER, content=input_message)], system_prompt=SUMMARY_PROMPT) - File "/workspace/lc_stylist_agent/app/core/llm_interface.py", line 55, in generate_response - raise type(e)(f"Gemini API call failed: {e}") -google.auth.exceptions.DefaultCredentialsError: Gemini API call failed: Your default credentials were not found. To set up Application Default Credentials, see https://cloud.google.com/docs/authentication/external/set-up-adc for more information. -2025-10-24 10:35:44,514 base_events.py [line:1758] ERROR Task exception was never retrieved -future: exception=DefaultCredentialsError('Gemini API call failed: Your default credentials were not found. To set up Application Default Credentials, see https://cloud.google.com/docs/authentication/external/set-up-adc for more information.')> -Traceback (most recent call last): - File "/workspace/lc_stylist_agent/app/core/llm_interface.py", line 45, in generate_response - response = await self.gemini_client.aio.models.generate_content( - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/google/genai/models.py", line 6757, in generate_content - response = await self._generate_content( - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/google/genai/models.py", line 5592, in _generate_content - response = await self._api_client.async_request( - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/google/genai/_api_client.py", line 1341, in async_request - result = await self._async_request( - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/google/genai/_api_client.py", line 1286, in _async_request - return await self._async_retry( # type: ignore[no-any-return] - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/tenacity/_asyncio.py", line 58, in __call__ - do = await self.iter(retry_state=retry_state) - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/tenacity/_asyncio.py", line 110, in iter - result = await action(retry_state) - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/tenacity/_asyncio.py", line 78, in inner - return fn(*args, **kwargs) - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/tenacity/__init__.py", line 410, in exc_check - raise retry_exc.reraise() - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/tenacity/__init__.py", line 183, in reraise - raise self.last_attempt.result() - File "/home/user/miniconda3/envs/test2/lib/python3.10/concurrent/futures/_base.py", line 451, in result - return self.__get_result() - File "/home/user/miniconda3/envs/test2/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result - raise self._exception - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/tenacity/_asyncio.py", line 61, in __call__ - result = await fn(*args, **kwargs) - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/google/genai/_api_client.py", line 1153, in _async_request_once - f'Bearer {await self._async_access_token()}' - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/google/genai/_api_client.py", line 970, in _async_access_token - self._credentials, project = await asyncio.to_thread( - File "/home/user/miniconda3/envs/test2/lib/python3.10/asyncio/threads.py", line 25, in to_thread - return await loop.run_in_executor(None, func_call) - File "/home/user/miniconda3/envs/test2/lib/python3.10/concurrent/futures/thread.py", line 58, in run - result = self.fn(*self.args, **self.kwargs) - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/google/genai/_api_client.py", line 184, in load_auth - credentials, loaded_project_id = google.auth.default( # type: ignore[no-untyped-call] - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/google/auth/_default.py", line 739, in default - raise exceptions.DefaultCredentialsError(_CLOUD_SDK_MISSING_CREDENTIALS) -google.auth.exceptions.DefaultCredentialsError: Your default credentials were not found. To set up Application Default Credentials, see https://cloud.google.com/docs/authentication/external/set-up-adc for more information. - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/workspace/lc_stylist_agent/app/server/ChatbotAgent/agent_server.py", line 59, in background_run - request_summary = await self.get_conversation_summary(request.user_id) - File "/workspace/lc_stylist_agent/app/server/ChatbotAgent/agent_server.py", line 84, in get_conversation_summary - summary = await self.llm.generate_response(history=[Message(role=Role.USER, content=input_message)], system_prompt=SUMMARY_PROMPT) - File "/workspace/lc_stylist_agent/app/core/llm_interface.py", line 55, in generate_response - raise type(e)(f"Gemini API call failed: {e}") -google.auth.exceptions.DefaultCredentialsError: Gemini API call failed: Your default credentials were not found. To set up Application Default Credentials, see https://cloud.google.com/docs/authentication/external/set-up-adc for more information. diff --git a/logs/info.log b/logs/info.log deleted file mode 100644 index 2cd4f7d..0000000 --- a/logs/info.log +++ /dev/null @@ -1,554 +0,0 @@ -2025-10-23 17:37:26,690 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 17:37:26,690 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 17:37:26,697 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 17:37:26,697 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 17:41:56,921 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 17:41:56,921 redis_manager.py [line:22] INFO Successfully connected to Redis at localhost:6379 -2025-10-23 17:41:56,928 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 17:41:56,928 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 12:38:03,207 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 12:38:03,207 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 12:38:03,216 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 12:38:03,216 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 12:38:46,495 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 12:38:46,495 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 12:38:46,504 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 12:38:46,504 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 12:40:54,138 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 12:40:54,138 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 12:40:54,147 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 12:40:54,147 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 12:42:28,155 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 12:42:28,157 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 12:42:40,052 base_events.py [line:1758] ERROR Task exception was never retrieved -future: exception=DefaultCredentialsError('Gemini API call failed: Your default credentials were not found. To set up Application Default Credentials, see https://cloud.google.com/docs/authentication/external/set-up-adc for more information.')> -Traceback (most recent call last): - File "/app/app/core/llm_interface.py", line 45, in generate_response - response = await self.gemini_client.aio.models.generate_content( - File "/usr/local/lib/python3.10/dist-packages/google/genai/models.py", line 6757, in generate_content - response = await self._generate_content( - File "/usr/local/lib/python3.10/dist-packages/google/genai/models.py", line 5592, in _generate_content - response = await self._api_client.async_request( - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 1341, in async_request - result = await self._async_request( - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 1286, in _async_request - return await self._async_retry( # type: ignore[no-any-return] - File "/usr/local/lib/python3.10/dist-packages/tenacity/asyncio/__init__.py", line 111, in __call__ - do = await self.iter(retry_state=retry_state) - File "/usr/local/lib/python3.10/dist-packages/tenacity/asyncio/__init__.py", line 153, in iter - result = await action(retry_state) - File "/usr/local/lib/python3.10/dist-packages/tenacity/_utils.py", line 99, in inner - return call(*args, **kwargs) - File "/usr/local/lib/python3.10/dist-packages/tenacity/__init__.py", line 420, in exc_check - raise retry_exc.reraise() - File "/usr/local/lib/python3.10/dist-packages/tenacity/__init__.py", line 187, in reraise - raise self.last_attempt.result() - File "/usr/lib/python3.10/concurrent/futures/_base.py", line 451, in result - return self.__get_result() - File "/usr/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result - raise self._exception - File "/usr/local/lib/python3.10/dist-packages/tenacity/asyncio/__init__.py", line 114, in __call__ - result = await fn(*args, **kwargs) - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 1153, in _async_request_once - f'Bearer {await self._async_access_token()}' - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 970, in _async_access_token - self._credentials, project = await asyncio.to_thread( - File "/usr/lib/python3.10/asyncio/threads.py", line 25, in to_thread - return await loop.run_in_executor(None, func_call) - File "/usr/lib/python3.10/concurrent/futures/thread.py", line 58, in run - result = self.fn(*self.args, **self.kwargs) - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 184, in load_auth - credentials, loaded_project_id = google.auth.default( # type: ignore[no-untyped-call] - File "/usr/local/lib/python3.10/dist-packages/google/auth/_default.py", line 739, in default - raise exceptions.DefaultCredentialsError(_CLOUD_SDK_MISSING_CREDENTIALS) -google.auth.exceptions.DefaultCredentialsError: Your default credentials were not found. To set up Application Default Credentials, see https://cloud.google.com/docs/authentication/external/set-up-adc for more information. - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/app/app/server/ChatbotAgent/agent_server.py", line 59, in background_run - request_summary = await self.get_conversation_summary(request.user_id) - File "/app/app/server/ChatbotAgent/agent_server.py", line 84, in get_conversation_summary - summary = await self.llm.generate_response(history=[Message(role=Role.USER, content=input_message)], system_prompt=SUMMARY_PROMPT) - File "/app/app/core/llm_interface.py", line 55, in generate_response - raise type(e)(f"Gemini API call failed: {e}") -google.auth.exceptions.DefaultCredentialsError: Gemini API call failed: Your default credentials were not found. To set up Application Default Credentials, see https://cloud.google.com/docs/authentication/external/set-up-adc for more information. -2025-10-23 12:45:35,306 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 12:45:35,306 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 12:45:35,372 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 12:45:35,372 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 12:45:35,381 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 12:45:35,381 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 12:45:48,288 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 12:45:52,803 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 12:45:52,805 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 12:45:52,806 base_events.py [line:1758] ERROR Task exception was never retrieved -future: exception=DefaultCredentialsError('Gemini API call failed: File /workspace/lc_stylist_agent/request.json was not found.')> -Traceback (most recent call last): - File "/app/app/core/llm_interface.py", line 45, in generate_response - response = await self.gemini_client.aio.models.generate_content( - File "/usr/local/lib/python3.10/dist-packages/google/genai/models.py", line 6757, in generate_content - response = await self._generate_content( - File "/usr/local/lib/python3.10/dist-packages/google/genai/models.py", line 5592, in _generate_content - response = await self._api_client.async_request( - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 1341, in async_request - result = await self._async_request( - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 1286, in _async_request - return await self._async_retry( # type: ignore[no-any-return] - File "/usr/local/lib/python3.10/dist-packages/tenacity/asyncio/__init__.py", line 111, in __call__ - do = await self.iter(retry_state=retry_state) - File "/usr/local/lib/python3.10/dist-packages/tenacity/asyncio/__init__.py", line 153, in iter - result = await action(retry_state) - File "/usr/local/lib/python3.10/dist-packages/tenacity/_utils.py", line 99, in inner - return call(*args, **kwargs) - File "/usr/local/lib/python3.10/dist-packages/tenacity/__init__.py", line 420, in exc_check - raise retry_exc.reraise() - File "/usr/local/lib/python3.10/dist-packages/tenacity/__init__.py", line 187, in reraise - raise self.last_attempt.result() - File "/usr/lib/python3.10/concurrent/futures/_base.py", line 451, in result - return self.__get_result() - File "/usr/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result - raise self._exception - File "/usr/local/lib/python3.10/dist-packages/tenacity/asyncio/__init__.py", line 114, in __call__ - result = await fn(*args, **kwargs) - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 1153, in _async_request_once - f'Bearer {await self._async_access_token()}' - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 970, in _async_access_token - self._credentials, project = await asyncio.to_thread( - File "/usr/lib/python3.10/asyncio/threads.py", line 25, in to_thread - return await loop.run_in_executor(None, func_call) - File "/usr/lib/python3.10/concurrent/futures/thread.py", line 58, in run - result = self.fn(*self.args, **self.kwargs) - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 184, in load_auth - credentials, loaded_project_id = google.auth.default( # type: ignore[no-untyped-call] - File "/usr/local/lib/python3.10/dist-packages/google/auth/_default.py", line 705, in default - credentials, project_id = checker() - File "/usr/local/lib/python3.10/dist-packages/google/auth/_default.py", line 698, in - lambda: _get_explicit_environ_credentials(quota_project_id=quota_project_id), - File "/usr/local/lib/python3.10/dist-packages/google/auth/_default.py", line 346, in _get_explicit_environ_credentials - credentials, project_id = load_credentials_from_file( - File "/usr/local/lib/python3.10/dist-packages/google/auth/_default.py", line 173, in load_credentials_from_file - raise exceptions.DefaultCredentialsError( -google.auth.exceptions.DefaultCredentialsError: File /workspace/lc_stylist_agent/request.json was not found. - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/app/app/server/ChatbotAgent/agent_server.py", line 59, in background_run - request_summary = await self.get_conversation_summary(request.user_id) - File "/app/app/server/ChatbotAgent/agent_server.py", line 84, in get_conversation_summary - summary = await self.llm.generate_response(history=[Message(role=Role.USER, content=input_message)], system_prompt=SUMMARY_PROMPT) - File "/app/app/core/llm_interface.py", line 55, in generate_response - raise type(e)(f"Gemini API call failed: {e}") -google.auth.exceptions.DefaultCredentialsError: Gemini API call failed: File /workspace/lc_stylist_agent/request.json was not found. -2025-10-23 12:49:03,747 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 12:49:03,747 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 12:49:03,814 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 12:49:03,814 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 12:49:03,823 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 12:49:03,823 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 12:49:22,244 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 12:49:29,263 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 12:49:29,264 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 12:49:29,266 base_events.py [line:1758] ERROR Task exception was never retrieved -future: exception=DefaultCredentialsError('Gemini API call failed: File /app/app/request.json was not found.')> -Traceback (most recent call last): - File "/app/app/core/llm_interface.py", line 45, in generate_response - response = await self.gemini_client.aio.models.generate_content( - File "/usr/local/lib/python3.10/dist-packages/google/genai/models.py", line 6757, in generate_content - response = await self._generate_content( - File "/usr/local/lib/python3.10/dist-packages/google/genai/models.py", line 5592, in _generate_content - response = await self._api_client.async_request( - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 1341, in async_request - result = await self._async_request( - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 1286, in _async_request - return await self._async_retry( # type: ignore[no-any-return] - File "/usr/local/lib/python3.10/dist-packages/tenacity/asyncio/__init__.py", line 111, in __call__ - do = await self.iter(retry_state=retry_state) - File "/usr/local/lib/python3.10/dist-packages/tenacity/asyncio/__init__.py", line 153, in iter - result = await action(retry_state) - File "/usr/local/lib/python3.10/dist-packages/tenacity/_utils.py", line 99, in inner - return call(*args, **kwargs) - File "/usr/local/lib/python3.10/dist-packages/tenacity/__init__.py", line 420, in exc_check - raise retry_exc.reraise() - File "/usr/local/lib/python3.10/dist-packages/tenacity/__init__.py", line 187, in reraise - raise self.last_attempt.result() - File "/usr/lib/python3.10/concurrent/futures/_base.py", line 451, in result - return self.__get_result() - File "/usr/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result - raise self._exception - File "/usr/local/lib/python3.10/dist-packages/tenacity/asyncio/__init__.py", line 114, in __call__ - result = await fn(*args, **kwargs) - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 1153, in _async_request_once - f'Bearer {await self._async_access_token()}' - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 970, in _async_access_token - self._credentials, project = await asyncio.to_thread( - File "/usr/lib/python3.10/asyncio/threads.py", line 25, in to_thread - return await loop.run_in_executor(None, func_call) - File "/usr/lib/python3.10/concurrent/futures/thread.py", line 58, in run - result = self.fn(*self.args, **self.kwargs) - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 184, in load_auth - credentials, loaded_project_id = google.auth.default( # type: ignore[no-untyped-call] - File "/usr/local/lib/python3.10/dist-packages/google/auth/_default.py", line 705, in default - credentials, project_id = checker() - File "/usr/local/lib/python3.10/dist-packages/google/auth/_default.py", line 698, in - lambda: _get_explicit_environ_credentials(quota_project_id=quota_project_id), - File "/usr/local/lib/python3.10/dist-packages/google/auth/_default.py", line 346, in _get_explicit_environ_credentials - credentials, project_id = load_credentials_from_file( - File "/usr/local/lib/python3.10/dist-packages/google/auth/_default.py", line 173, in load_credentials_from_file - raise exceptions.DefaultCredentialsError( -google.auth.exceptions.DefaultCredentialsError: File /app/app/request.json was not found. - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/app/app/server/ChatbotAgent/agent_server.py", line 59, in background_run - request_summary = await self.get_conversation_summary(request.user_id) - File "/app/app/server/ChatbotAgent/agent_server.py", line 84, in get_conversation_summary - summary = await self.llm.generate_response(history=[Message(role=Role.USER, content=input_message)], system_prompt=SUMMARY_PROMPT) - File "/app/app/core/llm_interface.py", line 55, in generate_response - raise type(e)(f"Gemini API call failed: {e}") -google.auth.exceptions.DefaultCredentialsError: Gemini API call failed: File /app/app/request.json was not found. -2025-10-23 12:50:15,661 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 12:50:15,662 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 12:50:15,728 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 12:50:15,728 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 12:50:15,736 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 12:50:15,736 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 12:50:32,193 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 12:51:03,012 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 12:51:03,014 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 12:51:11,954 _client.py [line:1740] INFO HTTP Request: POST https://us-central1-aiplatform.googleapis.com/v1beta1/projects/aida-461108/locations/us-central1/publishers/google/models/gemini-2.5-flash:generateContent "HTTP/1.1 200 OK" -2025-10-23 12:51:11,961 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": "Outdoor garden wedding", - "style": "Elegant bohemian, flowy", - "color_preference": "['Pale Blue', 'Mint Green'] (soft pastels preferred), avoid bright reds and oranges", - "clothing_type": "Flowy, light, and airy maxi dress", - "vibe_or_details": "Comfortable for walking" -} -``` -2025-10-23 12:51:11,962 _api_client.py [line:619] INFO The user provided project/location will take precedence over the Vertex AI API key from the environment variable. -2025-10-23 12:51:11,997 base_events.py [line:1758] ERROR Task exception was never retrieved -future: exception=RuntimeError("Failed to load credentials from file /workspace/lc_stylist_agent/request.json: [Errno 2] No such file or directory: '/workspace/lc_stylist_agent/request.json'")> -Traceback (most recent call last): - File "/app/app/core/stylist_agent_server.py", line 38, in __init__ - self.credentials = service_account.Credentials.from_service_account_file('/workspace/lc_stylist_agent/request.json') - File "/usr/local/lib/python3.10/dist-packages/google/oauth2/service_account.py", line 264, in from_service_account_file - info, signer = _service_account_info.from_filename( - File "/usr/local/lib/python3.10/dist-packages/google/auth/_service_account_info.py", line 78, in from_filename - with io.open(filename, "r", encoding="utf-8") as json_file: -FileNotFoundError: [Errno 2] No such file or directory: '/workspace/lc_stylist_agent/request.json' - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/app/app/server/ChatbotAgent/agent_server.py", line 63, in background_run - recommendation_results = await self.recommend_outfit(request_summary=request_summary, - File "/app/app/server/ChatbotAgent/agent_server.py", line 99, in recommend_outfit - agent = AsyncStylistAgent(**self.stylist_agent_kwages) - File "/app/app/core/stylist_agent_server.py", line 41, in __init__ - raise RuntimeError(f"Failed to load credentials from file {'/workspace/lc_stylist_agent/request.json'}: {e}") -RuntimeError: Failed to load credentials from file /workspace/lc_stylist_agent/request.json: [Errno 2] No such file or directory: '/workspace/lc_stylist_agent/request.json' -2025-10-23 12:55:03,968 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 12:55:03,976 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 12:55:03,992 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 12:55:04,000 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 12:55:30,861 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 12:55:30,863 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 12:55:42,692 base_events.py [line:1758] ERROR Task exception was never retrieved -future: exception=DefaultCredentialsError('Gemini API call failed: Your default credentials were not found. To set up Application Default Credentials, see https://cloud.google.com/docs/authentication/external/set-up-adc for more information.')> -Traceback (most recent call last): - File "/app/app/core/llm_interface.py", line 45, in generate_response - response = await self.gemini_client.aio.models.generate_content( - File "/usr/local/lib/python3.10/dist-packages/google/genai/models.py", line 6757, in generate_content - response = await self._generate_content( - File "/usr/local/lib/python3.10/dist-packages/google/genai/models.py", line 5592, in _generate_content - response = await self._api_client.async_request( - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 1341, in async_request - result = await self._async_request( - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 1286, in _async_request - return await self._async_retry( # type: ignore[no-any-return] - File "/usr/local/lib/python3.10/dist-packages/tenacity/asyncio/__init__.py", line 111, in __call__ - do = await self.iter(retry_state=retry_state) - File "/usr/local/lib/python3.10/dist-packages/tenacity/asyncio/__init__.py", line 153, in iter - result = await action(retry_state) - File "/usr/local/lib/python3.10/dist-packages/tenacity/_utils.py", line 99, in inner - return call(*args, **kwargs) - File "/usr/local/lib/python3.10/dist-packages/tenacity/__init__.py", line 420, in exc_check - raise retry_exc.reraise() - File "/usr/local/lib/python3.10/dist-packages/tenacity/__init__.py", line 187, in reraise - raise self.last_attempt.result() - File "/usr/lib/python3.10/concurrent/futures/_base.py", line 451, in result - return self.__get_result() - File "/usr/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result - raise self._exception - File "/usr/local/lib/python3.10/dist-packages/tenacity/asyncio/__init__.py", line 114, in __call__ - result = await fn(*args, **kwargs) - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 1153, in _async_request_once - f'Bearer {await self._async_access_token()}' - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 970, in _async_access_token - self._credentials, project = await asyncio.to_thread( - File "/usr/lib/python3.10/asyncio/threads.py", line 25, in to_thread - return await loop.run_in_executor(None, func_call) - File "/usr/lib/python3.10/concurrent/futures/thread.py", line 58, in run - result = self.fn(*self.args, **self.kwargs) - File "/usr/local/lib/python3.10/dist-packages/google/genai/_api_client.py", line 184, in load_auth - credentials, loaded_project_id = google.auth.default( # type: ignore[no-untyped-call] - File "/usr/local/lib/python3.10/dist-packages/google/auth/_default.py", line 739, in default - raise exceptions.DefaultCredentialsError(_CLOUD_SDK_MISSING_CREDENTIALS) -google.auth.exceptions.DefaultCredentialsError: Your default credentials were not found. To set up Application Default Credentials, see https://cloud.google.com/docs/authentication/external/set-up-adc for more information. - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/app/app/server/ChatbotAgent/agent_server.py", line 59, in background_run - request_summary = await self.get_conversation_summary(request.user_id) - File "/app/app/server/ChatbotAgent/agent_server.py", line 84, in get_conversation_summary - summary = await self.llm.generate_response(history=[Message(role=Role.USER, content=input_message)], system_prompt=SUMMARY_PROMPT) - File "/app/app/core/llm_interface.py", line 55, in generate_response - raise type(e)(f"Gemini API call failed: {e}") -google.auth.exceptions.DefaultCredentialsError: Gemini API call failed: Your default credentials were not found. To set up Application Default Credentials, see https://cloud.google.com/docs/authentication/external/set-up-adc for more information. -2025-10-23 12:59:02,989 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 12:59:02,990 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 12:59:03,003 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 12:59:03,003 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 12:59:20,848 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 12:59:20,849 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 12:59:28,106 _client.py [line:1740] INFO HTTP Request: POST https://us-central1-aiplatform.googleapis.com/v1beta1/projects/aida-461108/locations/us-central1/publishers/google/models/gemini-2.5-flash:generateContent "HTTP/1.1 200 OK" -2025-10-23 12:59:28,114 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": "", - "style": "No preference", - "color_preference": "No preference", - "clothing_type": "No preference", - "vibe_or_details": "No preference" -} -``` -2025-10-23 12:59:28,150 base_events.py [line:1758] ERROR Task exception was never retrieved -future: exception=RuntimeError("Failed to load credentials from file /workspace/lc_stylist_agent/request.json: [Errno 2] No such file or directory: '/workspace/lc_stylist_agent/request.json'")> -Traceback (most recent call last): - File "/app/app/core/stylist_agent_server.py", line 38, in __init__ - self.credentials = service_account.Credentials.from_service_account_file('/workspace/lc_stylist_agent/request.json') - File "/usr/local/lib/python3.10/dist-packages/google/oauth2/service_account.py", line 264, in from_service_account_file - info, signer = _service_account_info.from_filename( - File "/usr/local/lib/python3.10/dist-packages/google/auth/_service_account_info.py", line 78, in from_filename - with io.open(filename, "r", encoding="utf-8") as json_file: -FileNotFoundError: [Errno 2] No such file or directory: '/workspace/lc_stylist_agent/request.json' - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/app/app/server/ChatbotAgent/agent_server.py", line 63, in background_run - recommendation_results = await self.recommend_outfit(request_summary=request_summary, - File "/app/app/server/ChatbotAgent/agent_server.py", line 99, in recommend_outfit - agent = AsyncStylistAgent(**self.stylist_agent_kwages) - File "/app/app/core/stylist_agent_server.py", line 41, in __init__ - raise RuntimeError(f"Failed to load credentials from file {'/workspace/lc_stylist_agent/request.json'}: {e}") -RuntimeError: Failed to load credentials from file /workspace/lc_stylist_agent/request.json: [Errno 2] No such file or directory: '/workspace/lc_stylist_agent/request.json' -2025-10-23 13:01:05,230 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 13:01:05,230 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 13:01:05,238 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 13:01:05,238 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 13:01:31,178 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 13:01:31,178 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 13:01:31,187 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 13:01:31,187 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 13:02:07,048 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 13:02:07,049 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:02:14,759 _client.py [line:1740] INFO HTTP Request: POST https://us-central1-aiplatform.googleapis.com/v1beta1/projects/aida-461108/locations/us-central1/publishers/google/models/gemini-2.5-flash:generateContent "HTTP/1.1 200 OK" -2025-10-23 13:02:14,766 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": "Romantic date dinner", - "style": "Classic elegance", - "color_preference": [ - "Cream", - "Pale Blue" - ], - "clothing_type": "Lightweight maxi dress", - "vibe_or_details": "Needs to be comfortable and breathable" -} -``` -2025-10-23 13:02:14,806 base_events.py [line:1758] ERROR Task exception was never retrieved -future: exception=RuntimeError("Failed to load credentials from file /workspace/lc_stylist_agent/request.json: [Errno 2] No such file or directory: '/workspace/lc_stylist_agent/request.json'")> -Traceback (most recent call last): - File "/app/app/core/stylist_agent_server.py", line 38, in __init__ - self.credentials = service_account.Credentials.from_service_account_file('/workspace/lc_stylist_agent/request.json') - File "/usr/local/lib/python3.10/dist-packages/google/oauth2/service_account.py", line 264, in from_service_account_file - info, signer = _service_account_info.from_filename( - File "/usr/local/lib/python3.10/dist-packages/google/auth/_service_account_info.py", line 78, in from_filename - with io.open(filename, "r", encoding="utf-8") as json_file: -FileNotFoundError: [Errno 2] No such file or directory: '/workspace/lc_stylist_agent/request.json' - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/app/app/server/ChatbotAgent/agent_server.py", line 63, in background_run - recommendation_results = await self.recommend_outfit(request_summary=request_summary, - File "/app/app/server/ChatbotAgent/agent_server.py", line 99, in recommend_outfit - agent = AsyncStylistAgent(**self.stylist_agent_kwages) - File "/app/app/core/stylist_agent_server.py", line 41, in __init__ - raise RuntimeError(f"Failed to load credentials from file {'/workspace/lc_stylist_agent/request.json'}: {e}") -RuntimeError: Failed to load credentials from file /workspace/lc_stylist_agent/request.json: [Errno 2] No such file or directory: '/workspace/lc_stylist_agent/request.json' -2025-10-23 13:04:34,790 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 13:04:34,798 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 13:04:34,822 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 13:04:34,831 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 13:04:49,159 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 13:04:49,161 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:04:52,924 _client.py [line:1740] INFO HTTP Request: POST https://us-central1-aiplatform.googleapis.com/v1beta1/projects/aida-461108/locations/us-central1/publishers/google/models/gemini-2.5-flash:generateContent "HTTP/1.1 200 OK" -2025-10-23 13:04:52,930 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": "Outdoor summer wedding", - "style": "Elegant and comfortable", - "color_preference": "Light, pastel colors", - "clothing_type": "Lightweight maxi dress", - "vibe_or_details": "Needs to be breathable for hot weather, not too formal but elegant enough for a wedding, no specific pattern preference but open to subtle designs." -} -``` -2025-10-23 13:04:53,112 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': 'd62c593f-ddcb-491d-ad83-6a1080dc4c35', 'items': []} -2025-10-23 13:04:53,115 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:04:57,361 _client.py [line:1740] INFO HTTP Request: POST https://us-central1-aiplatform.googleapis.com/v1beta1/projects/aida-461108/locations/us-central1/publishers/google/models/gemini-2.5-flash:generateContent "HTTP/1.1 200 OK" -2025-10-23 13:04:57,425 agent_server.py [line:69] INFO ---- Final Recommendation Results --- -2025-10-23 13:04:57,425 agent_server.py [line:73] ERROR ❌ Failed: 'NoneType' object has no attribute 'get' -2025-10-23 13:08:18,434 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 13:08:18,434 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-23 13:08:18,442 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 13:08:18,442 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-23 13:08:59,356 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-23 13:08:59,357 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:09:11,912 _client.py [line:1740] INFO HTTP Request: POST https://us-central1-aiplatform.googleapis.com/v1beta1/projects/aida-461108/locations/us-central1/publishers/google/models/gemini-2.5-flash:generateContent "HTTP/1.1 200 OK" -2025-10-23 13:09:11,919 agent_server.py [line:60] INFO request_summary: ```json -{ - "occasion": "", - "style": "", - "color_preference": "No preference", - "clothing_type": "", - "vibe_or_details": "" -} -``` -2025-10-23 13:09:12,017 stylist_agent_server.py [line:276] INFO {'status': '', 'message': '', 'path': '', 'outfit_id': '4249f4c2-e7e1-432a-9f00-917cab8c3697', 'items': []} -2025-10-23 13:09:12,017 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-23 13:09:15,082 _client.py [line:1740] INFO HTTP Request: POST https://us-central1-aiplatform.googleapis.com/v1beta1/projects/aida-461108/locations/us-central1/publishers/google/models/gemini-2.5-flash:generateContent "HTTP/1.1 200 OK" -2025-10-23 13:09:15,866 agent_server.py [line:69] INFO ---- Final Recommendation Results --- -2025-10-23 13:09:15,866 agent_server.py [line:73] ERROR ❌ Failed: 'NoneType' object has no attribute 'get' -2025-10-24 10:22:10,296 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:22:10,297 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:22:10,305 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:22:10,305 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:22:16,926 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-24 10:22:16,928 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:22:29,130 base_events.py [line:1758] ERROR Task exception was never retrieved -future: exception=DefaultCredentialsError('Gemini API call failed: Your default credentials were not found. To set up Application Default Credentials, see https://cloud.google.com/docs/authentication/external/set-up-adc for more information.')> -Traceback (most recent call last): - File "/workspace/lc_stylist_agent/app/core/llm_interface.py", line 45, in generate_response - response = await self.gemini_client.aio.models.generate_content( - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/google/genai/models.py", line 6757, in generate_content - response = await self._generate_content( - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/google/genai/models.py", line 5592, in _generate_content - response = await self._api_client.async_request( - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/google/genai/_api_client.py", line 1341, in async_request - result = await self._async_request( - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/google/genai/_api_client.py", line 1286, in _async_request - return await self._async_retry( # type: ignore[no-any-return] - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/tenacity/_asyncio.py", line 58, in __call__ - do = await self.iter(retry_state=retry_state) - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/tenacity/_asyncio.py", line 110, in iter - result = await action(retry_state) - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/tenacity/_asyncio.py", line 78, in inner - return fn(*args, **kwargs) - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/tenacity/__init__.py", line 410, in exc_check - raise retry_exc.reraise() - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/tenacity/__init__.py", line 183, in reraise - raise self.last_attempt.result() - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/concurrent/futures/_base.py", line 451, in result - return self.__get_result() - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result - raise self._exception - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/tenacity/_asyncio.py", line 61, in __call__ - result = await fn(*args, **kwargs) - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/google/genai/_api_client.py", line 1153, in _async_request_once - f'Bearer {await self._async_access_token()}' - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/google/genai/_api_client.py", line 970, in _async_access_token - self._credentials, project = await asyncio.to_thread( - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/asyncio/threads.py", line 25, in to_thread - return await loop.run_in_executor(None, func_call) - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/concurrent/futures/thread.py", line 58, in run - result = self.fn(*self.args, **self.kwargs) - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/google/genai/_api_client.py", line 184, in load_auth - credentials, loaded_project_id = google.auth.default( # type: ignore[no-untyped-call] - File "/home/user/miniconda3/envs/lc_stylist_agent/lib/python3.10/site-packages/google/auth/_default.py", line 739, in default - raise exceptions.DefaultCredentialsError(_CLOUD_SDK_MISSING_CREDENTIALS) -google.auth.exceptions.DefaultCredentialsError: Your default credentials were not found. To set up Application Default Credentials, see https://cloud.google.com/docs/authentication/external/set-up-adc for more information. - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/workspace/lc_stylist_agent/app/server/ChatbotAgent/agent_server.py", line 59, in background_run - request_summary = await self.get_conversation_summary(request.user_id) - File "/workspace/lc_stylist_agent/app/server/ChatbotAgent/agent_server.py", line 84, in get_conversation_summary - summary = await self.llm.generate_response(history=[Message(role=Role.USER, content=input_message)], system_prompt=SUMMARY_PROMPT) - File "/workspace/lc_stylist_agent/app/core/llm_interface.py", line 55, in generate_response - raise type(e)(f"Gemini API call failed: {e}") -google.auth.exceptions.DefaultCredentialsError: Gemini API call failed: Your default credentials were not found. To set up Application Default Credentials, see https://cloud.google.com/docs/authentication/external/set-up-adc for more information. -2025-10-24 10:35:27,496 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:35:27,500 redis_manager.py [line:22] INFO Successfully connected to Redis at 10.1.1.240:6379 -2025-10-24 10:35:27,503 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:35:27,507 posthog.py [line:22] INFO Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information. -2025-10-24 10:35:32,549 agent_server.py [line:47] INFO request: {'user_id': 'string', 'num_outfits': 1, 'stylist_path': 'lanecarford/stylist_guide/crystal_en.md'} -2025-10-24 10:35:32,550 models.py [line:6751] INFO AFC is enabled with max remote calls: 10. -2025-10-24 10:35:44,514 base_events.py [line:1758] ERROR Task exception was never retrieved -future: exception=DefaultCredentialsError('Gemini API call failed: Your default credentials were not found. To set up Application Default Credentials, see https://cloud.google.com/docs/authentication/external/set-up-adc for more information.')> -Traceback (most recent call last): - File "/workspace/lc_stylist_agent/app/core/llm_interface.py", line 45, in generate_response - response = await self.gemini_client.aio.models.generate_content( - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/google/genai/models.py", line 6757, in generate_content - response = await self._generate_content( - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/google/genai/models.py", line 5592, in _generate_content - response = await self._api_client.async_request( - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/google/genai/_api_client.py", line 1341, in async_request - result = await self._async_request( - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/google/genai/_api_client.py", line 1286, in _async_request - return await self._async_retry( # type: ignore[no-any-return] - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/tenacity/_asyncio.py", line 58, in __call__ - do = await self.iter(retry_state=retry_state) - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/tenacity/_asyncio.py", line 110, in iter - result = await action(retry_state) - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/tenacity/_asyncio.py", line 78, in inner - return fn(*args, **kwargs) - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/tenacity/__init__.py", line 410, in exc_check - raise retry_exc.reraise() - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/tenacity/__init__.py", line 183, in reraise - raise self.last_attempt.result() - File "/home/user/miniconda3/envs/test2/lib/python3.10/concurrent/futures/_base.py", line 451, in result - return self.__get_result() - File "/home/user/miniconda3/envs/test2/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result - raise self._exception - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/tenacity/_asyncio.py", line 61, in __call__ - result = await fn(*args, **kwargs) - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/google/genai/_api_client.py", line 1153, in _async_request_once - f'Bearer {await self._async_access_token()}' - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/google/genai/_api_client.py", line 970, in _async_access_token - self._credentials, project = await asyncio.to_thread( - File "/home/user/miniconda3/envs/test2/lib/python3.10/asyncio/threads.py", line 25, in to_thread - return await loop.run_in_executor(None, func_call) - File "/home/user/miniconda3/envs/test2/lib/python3.10/concurrent/futures/thread.py", line 58, in run - result = self.fn(*self.args, **self.kwargs) - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/google/genai/_api_client.py", line 184, in load_auth - credentials, loaded_project_id = google.auth.default( # type: ignore[no-untyped-call] - File "/home/user/miniconda3/envs/test2/lib/python3.10/site-packages/google/auth/_default.py", line 739, in default - raise exceptions.DefaultCredentialsError(_CLOUD_SDK_MISSING_CREDENTIALS) -google.auth.exceptions.DefaultCredentialsError: Your default credentials were not found. To set up Application Default Credentials, see https://cloud.google.com/docs/authentication/external/set-up-adc for more information. - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/workspace/lc_stylist_agent/app/server/ChatbotAgent/agent_server.py", line 59, in background_run - request_summary = await self.get_conversation_summary(request.user_id) - File "/workspace/lc_stylist_agent/app/server/ChatbotAgent/agent_server.py", line 84, in get_conversation_summary - summary = await self.llm.generate_response(history=[Message(role=Role.USER, content=input_message)], system_prompt=SUMMARY_PROMPT) - File "/workspace/lc_stylist_agent/app/core/llm_interface.py", line 55, in generate_response - raise type(e)(f"Gemini API call failed: {e}") -google.auth.exceptions.DefaultCredentialsError: Gemini API call failed: Your default credentials were not found. To set up Application Default Credentials, see https://cloud.google.com/docs/authentication/external/set-up-adc for more information. diff --git a/requirements.txt b/requirements.txt index 8b080f7..9a3c816 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,12 +8,12 @@ google-cloud-storage==2.19.0 minio==7.2.18 chromadb==1.1.1 transformers==4.41.1 -torch==2.2.1 +#torch==2.2.1 torch-fidelity==0.3.0 torchmetrics==1.4.0.post0 -torchvision==0.17.1 +#torchvision==0.17.1 pytorch-fid==0.3.0 open-clip-torch==2.24.0 pytorch-fid==0.3.0 - +litserve # pip install git+https://github.com/openai/CLIP.git \ No newline at end of file