diff --git a/app/server/ChatbotAgent/agent_server.py b/app/server/ChatbotAgent/agent_server.py index 31415fe..4675f75 100644 --- a/app/server/ChatbotAgent/agent_server.py +++ b/app/server/ChatbotAgent/agent_server.py @@ -329,16 +329,16 @@ if __name__ == "__main__": request_data = json.load(f) tasks_with_metadata = [] - for test_content in request_data[0:10]: + for test_content in request_data[0:1]: occasions = test_content['occasions'] request_summary = test_content['request_summary'] - for stylist_name in ["quincy"]: + for stylist_name in ["vera", "edi"]: stylist_agent_kwages['outfit_id'] = test_content['test_case_id'] + "_" + "_".join(occasions) + f"_{stylist_name}" stylist_agent_kwages['stylist_name'] = stylist_name stylist_agent_kwages['gender'] = "female" agent = AsyncStylistAgent(**stylist_agent_kwages) - # coro = agent.run_iterative_styling( - coro = agent.run_quick_batch_styling( + coro = agent.run_iterative_styling( + # coro = agent.run_quick_batch_styling( request_summary=request_summary, occasions=occasions, start_outfit=[], diff --git a/app/server/ChatbotAgent/core/prompt.py b/app/server/ChatbotAgent/core/prompt.py index 0090b7c..79dbf34 100644 --- a/app/server/ChatbotAgent/core/prompt.py +++ b/app/server/ChatbotAgent/core/prompt.py @@ -38,17 +38,25 @@ You are a professional fashion stylist Agent, specialized in creating complete, Your task is to **create a cohesive and complete outfit**, strictly adhering to **BOTH** the user's explicit **Request Summary** and the **Outfit Style Guide**. You must decide the next logical item to add to the outfit based on the current stage and constraints. Descriptions of current outfit combination is listed in user's message. +## RULE HIERARCHY (Priority Order): +1. **STYLIST CORE RULES**: Adhere to the specific logic provided in the Stylist Guide. +2. **GENERAL COORDINATION RULES**: + - Limit outfit to **three main colors** within the **same color tone**. + - Preferred composition: **Two neutrals and one accent color**. + - **Silhouette Balance**: Loose top with fitted bottom, OR fitted top with loose bottom. + - **Pants Logic**: Strictly NO mid-calf length pants. Cropped pants MUST be paired with loafers or ankle boots. + --- ## Request from the User: {{request_summary}} -## Core Guidance Document: Outfit Style Guide +## Core Guidance Document: Stylist Guide {{stylist_guide}} --- ## Your Workflow and Constraints -1. **Style Adherence**: You must strictly observe all rules in the Style Guide concerning **color palette, fit, layering principles, pattern restrictions , shoe coordination**. +1. **Style Adherence**: You must follow the Rule Hierarchy. If a rule in the Stylist Guide conflicts with the General Rules, the Stylist Guide takes precedence. You should strictly consider all rules in the Style Guide and general rules concerning **color palette, fit, layering principles, pattern restrictions , shoe coordination**. 2. **Uniqueness Mandate**: Every item must follow the **absolute no-repeat rule for subcategories** within its stage. Each subcategory from the allowed list can appear **exactly once** in the entire outfit. Furthermore, the categories 'dresses' and 'pants' and 'skirts' are mutually exclusive; they NORMALLY cannot be included in the same outfit. 3. **Step Planning**: The styling sequence must follow a logical approach (e.g., top-down, inside-out for clothing). Prioritize unused subcategories from the allowed list to avoid repetition. 4. **Structured Output**: Your output MUST be a valid JSON object. The strict JSON structure and field requirements are provided separately via the API schema. @@ -94,11 +102,22 @@ You are a professional fashion stylist Agent, specialized in creating complete, Your final task is to **select the perfect set of accessories** to complete the given outfit. You must strictly adhere to **BOTH** the user's **Request Summary** and the **ACCESSORIES Style Guide**. The **full description of the existing outfit** is provided in the user's message. +## RULE HIERARCHY (Priority Order): +1. **ABSOLUTE PROHIBITION (Highest Priority)**: + - **NO WATCHES**. + - **NO HATS**. + - **NO SOCKS**. + - Do not recommend these subcategories under any circumstances, even if requested or implied. +2. **STYLIST CORE RULES**: Follow specific accessory preferences in the [Stylist's Accessories Guide]. +3. **GENERAL COORDINATION RULES**: + - Accessories must fit within the **three main colors** and **same color tone** established by the clothing. + - Maintain the **two neutrals and one accent color** balance. + --- ## CONTEXT [User Request]: {{request_summary}} -[Accessories Style Guide]: +[Stylist's Accessories Guide]: {{stylist_guide}} --- @@ -120,6 +139,15 @@ You are a professional fashion stylist Agent, specialized in creating complete, You must create a cohesive look that includes **Clothing, Shoes, Bags, and Accessories**. You must strictly adhere to **BOTH** the user's **Request Summary** and the **Combined Style Guide**. +## RULE HIERARCHY (Priority Order): +1. **ABSOLUTE PROHIBITION**: Strictly NO hats or watches or socks. +2. **STYLIST CORE RULES**: Adhere to the specific logic provided in the Stylist Guide. +3. **GENERAL COORDINATION RULES**: + - Limit outfit to **three main colors** within the **same color tone**. + - Preferred composition: **Two neutrals and one accent color**. + - **Silhouette Balance**: Loose top with fitted bottom, OR fitted top with loose bottom. + - **Pants Logic**: Strictly NO mid-calf length pants. Cropped pants MUST be paired with loafers or ankle boots. + --- ## Request from the User: {{request_summary}} @@ -130,29 +158,28 @@ You must create a cohesive look that includes **Clothing, Shoes, Bags, and Acces ## GENERATION WORKFLOW & RULES -1. **Holistic Styling**: You are NOT recommending items step-by-step. You must visualize the final look and output **ALL** necessary items (Clothing, Shoes, Bags, Accessories) in a **single JSON response** using the `recommended_items` list. +1. **Single Batch Output**: Visualize the final look and output **ALL** items in a single JSON response using the `recommended_items` list. -2. **Outfit Composition Rules (Mandatory)**: - * **CLOTHING**: Ensure **full body coverage**. You must include either [Top + Bottom] OR [One-piece (e.g., Dress/Jumpsuit)]. 'Dresses' and 'Skirts/Pants' are mutually exclusive. - * **SHOES**: **Exactly one (1) pair** of shoes is MANDATORY. - * **BAGS**: Recommend **0 or 1 bag**. Skip the bag only if the occasion or Style Guide explicitly suggests it (e.g., home wear, yoga). - * **ACCESSORIES**: Recommend a set of accessories (typically 1-3 items) that complement the clothing. Follow metal/material constraints in the guide. - Number of items in outfit must not exceed {{max_len}}. +2. **Full Body Coverage & Composition (Mandatory)**: + * **Clothing**: You MUST ensure **full body coverage**. This requires including either [Top + Bottom] OR [a One-piece item like a Dress/Jumpsuit]. + * **Mutual Exclusivity**: 'Dresses' and 'Skirts/Pants' are mutually exclusive; do not recommend both in one outfit. + * **Shoes**: Exactly **one (1) pair** of shoes is MANDATORY for every outfit. + * **Bags**: Recommend **0 or 1 bag**. + * **Accessories**: Recommend a set of accessories (e.g., jewelry, eyewear). -3. **Uniqueness Mandate**: - * Each **subcategory** belonging to CLOTHING (e.g., 't-shirts', 'sweaters', 'jacket') can appear **EXACTLY ONCE** in the entire list. - * But **subcategory** belonging to ACCESSORIES can repeat. +3. **Strict Uniqueness Mandate (No Repeats)**: + * Each **subcategory** (e.g., 'sunglasses', 'earrings', 't-shirts') can appear **EXACTLY ONCE** in the entire outfit. + * DO NOT recommend two items from the same subcategory (e.g., do not recommend two different necklaces or two pairs of sunglasses). -4. **Exclusion List**: - * The following subcategories are **STRICTLY FORBIDDEN**: ({IGNORE_SUBCATEGORY}). Do not include them in your recommendation. +4. **Style Adherence**: + - **Proportions**: Explicitly describe the fit (Loose vs. Fitted) to show the required silhouette balance. + - **Color Harmony**: Ensure the combined colors of clothing, shoes, bags, and accessories stay within the 3-color tone limit. -5. **Style Adherence**: - * Ensure all items coordinate in **color, fit, and material**. - * Strictly observe the layering principles and color palette defined in the Style Guide. +5. **Exclusion List**: + - The following subcategories are **STRICTLY FORBIDDEN**: ({IGNORE_SUBCATEGORY}). -6. **Description Quality**: - * The `description` field for every item must be **extremely detailed and precise** for high-accuracy vector search. - * It MUST include: **Color, Fit/Silhouette, Material/Detail, and Role in the Outfit.** +6. **Description Quality**: + - Each `description` MUST include: **Color, Fit/Silhouette, Material/Detail, and Role in the Outfit.** ## OUTPUT FORMAT Output a valid JSON object matching the provided API schema. The `recommended_items` array must contain all the items for this outfit. diff --git a/app/taxonomy.py b/app/taxonomy.py index 35b6f15..24fc5da 100644 --- a/app/taxonomy.py +++ b/app/taxonomy.py @@ -91,7 +91,7 @@ FASHION_TAXONOMY = { CATEGORY_LIST = list(FASHION_TAXONOMY.keys()) ALL_SUBCATEGORY_LIST = sum(FASHION_TAXONOMY.values(), []) -IGNORE_SUBCATEGORY = ['socks'] +IGNORE_SUBCATEGORY = ['socks', 'watches', 'hats'] BRAND_WHITELIST = [ "ALAÏA", diff --git a/stylist_guide/quincy_acc.md b/stylist_guide/quincy_acc.md deleted file mode 100644 index c268ddb..0000000 --- a/stylist_guide/quincy_acc.md +++ /dev/null @@ -1,4 +0,0 @@ -# Accessory Guide -## Prohibitions -1. Watches: No watches are permitted in any outfit. -2. Hats: The use of hats is strictly prohibited. \ No newline at end of file diff --git a/stylist_guide/quincy_en.md b/stylist_guide/quincy_en.md deleted file mode 100644 index 5917d8a..0000000 --- a/stylist_guide/quincy_en.md +++ /dev/null @@ -1,7 +0,0 @@ -# Outfit Style Guide -1. Limit outfit in three main colours with same colour tone -2. Could be two neutrals and one accent colour -3. Do not show any mid-calf length pants -4. Cropped pants pair with loafers, or ankle boots -5. Loose on top pair with fitted bottom -6. Fitted top pair with loose bottom \ No newline at end of file