fix(api): constrain shopping suggestion enums
This commit is contained in:
parent
cebea2ac86
commit
5d9d18bd05
2 changed files with 17 additions and 4 deletions
|
|
@ -255,12 +255,12 @@ class InventoryUpdate(SQLModel):
|
||||||
|
|
||||||
|
|
||||||
class ProductSuggestion(PydanticBase):
|
class ProductSuggestion(PydanticBase):
|
||||||
category: str
|
category: ProductCategory
|
||||||
product_type: str
|
product_type: str
|
||||||
key_ingredients: list[str]
|
key_ingredients: list[str]
|
||||||
target_concerns: list[str]
|
target_concerns: list[str]
|
||||||
why_needed: str
|
why_needed: str
|
||||||
recommended_time: str
|
recommended_time: DayTime
|
||||||
frequency: str
|
frequency: str
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -274,12 +274,12 @@ class ShoppingSuggestionResponse(PydanticBase):
|
||||||
|
|
||||||
|
|
||||||
class _ProductSuggestionOut(PydanticBase):
|
class _ProductSuggestionOut(PydanticBase):
|
||||||
category: str
|
category: ProductCategory
|
||||||
product_type: str
|
product_type: str
|
||||||
key_ingredients: list[str]
|
key_ingredients: list[str]
|
||||||
target_concerns: list[str]
|
target_concerns: list[str]
|
||||||
why_needed: str
|
why_needed: str
|
||||||
recommended_time: str
|
recommended_time: DayTime
|
||||||
frequency: str
|
frequency: str
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -981,6 +981,11 @@ ZASADY:
|
||||||
7. Jeśli użytkownik ma uszkodzoną barierę, unikaj silnych eksfoliantów i retinoidów
|
7. Jeśli użytkownik ma uszkodzoną barierę, unikaj silnych eksfoliantów i retinoidów
|
||||||
8. Zwracaj uwagę na ewentualne konflikty polecanych składników z tymi, które użytkownik już posiada (np. nie polecaj peptydów miedziowych jeśli użytkownik nadużywa kwasów)
|
8. Zwracaj uwagę na ewentualne konflikty polecanych składników z tymi, które użytkownik już posiada (np. nie polecaj peptydów miedziowych jeśli użytkownik nadużywa kwasów)
|
||||||
9. Odpowiadaj w języku polskim
|
9. Odpowiadaj w języku polskim
|
||||||
|
10. Używaj wyłącznie dozwolonych wartości enumów poniżej - nie twórz synonimów typu "night", "evening" ani "treatment"
|
||||||
|
|
||||||
|
DOZWOLONE WARTOŚCI ENUMÓW:
|
||||||
|
- category: "cleanser" | "toner" | "essence" | "serum" | "moisturizer" | "spf" | "mask" | "exfoliant" | "hair_treatment" | "tool" | "spot_treatment" | "oil"
|
||||||
|
- recommended_time: "am" | "pm" | "both"
|
||||||
|
|
||||||
Format odpowiedzi - zwróć wyłącznie JSON zgodny z podanym schematem."""
|
Format odpowiedzi - zwróć wyłącznie JSON zgodny z podanym schematem."""
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -121,6 +121,14 @@ def test_suggest_shopping(client, session):
|
||||||
assert data["reasoning"] == "Test shopping"
|
assert data["reasoning"] == "Test shopping"
|
||||||
kwargs = mock_gemini.call_args.kwargs
|
kwargs = mock_gemini.call_args.kwargs
|
||||||
assert "USER PROFILE:" in kwargs["contents"]
|
assert "USER PROFILE:" in kwargs["contents"]
|
||||||
|
assert (
|
||||||
|
'category: "cleanser" | "toner" | "essence"'
|
||||||
|
in kwargs["config"].system_instruction
|
||||||
|
)
|
||||||
|
assert (
|
||||||
|
'recommended_time: "am" | "pm" | "both"'
|
||||||
|
in kwargs["config"].system_instruction
|
||||||
|
)
|
||||||
assert "function_handlers" in kwargs
|
assert "function_handlers" in kwargs
|
||||||
assert "get_product_details" in kwargs["function_handlers"]
|
assert "get_product_details" in kwargs["function_handlers"]
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue