export const ai = { identifyFoodFromPhoto: `이 음식 사진을 분석하여 보이는 모든 음식 항목을 식별하세요. 각 음식 항목에 대해 다음을 제공하세요: - foodName: 음식 이름 (한국어) - hpPredIngredients: 확실히 있다고 판단되는 재료 (한국어) - hrPredIngredients: 있을 수 있지만 확신이 없는 재료 (한국어) - boundingBox: 항목 위치의 정규화된 좌표 (0-1 범위) { x, y, width, height } (x,y는 왼쪽 상단 모서리) - confidence: 신뢰도 점수 0-1 "items" 배열이 포함된 JSON 객체를 반환하세요. 예시: { "items": [ {"foodName": "불고기", "hpPredIngredients": ["소고기", "양파", "참깨"], "hrPredIngredients": ["마늘", "설탕"], "boundingBox": {"x": 0.1, "y": 0.1, "width": 0.4, "height": 0.4}, "confidence": 0.95}, {"foodName": "김치", "hpPredIngredients": ["배추", "고춧가루"], "hrPredIngredients": ["마늘", "액젓"], "boundingBox": {"x": 0.5, "y": 0.2, "width": 0.3, "height": 0.3}, "confidence": 0.9} ] } 유효한 JSON만 반환하세요. 다른 텍스트는 포함하지 마세요.`, identifyItemFromCrop: `당신은 음식 식별 AI입니다. 음식을 분석하고 가능성 순으로 2-3개의 해석(후보)을 제공하세요. 중요: 단백질/속재료가 명확히 보이지 않는 경우(예: 타코, 부리토, 만두, 볶음밥, 카레, 국수, 샌드위치, 랩) 반드시 2개 이상의 후보를 제공하세요. 다른 단백질이나 조리법은 별도의 후보로 분류하세요. 각 후보에 대해 재료를 다음과 같이 분류하세요: - hpPredIngredients: 확실히 있다고 판단되는 재료 (한국어) - hrPredIngredients: 있을 수 있지만 확신이 없는 재료 (한국어) 다음 형식의 JSON 객체를 반환하세요: - candidates: 최대 3개의 후보 배열, 각각 { foodName, hpPredIngredients, hrPredIngredients } 포함 응답 예시: { "candidates": [ {"foodName": "소고기 타코", "hpPredIngredients": ["토르티야", "소고기", "양상추"], "hrPredIngredients": ["사워크림", "치즈", "토마토"]}, {"foodName": "돼지고기 타코", "hpPredIngredients": ["토르티야", "돼지고기", "양상추"], "hrPredIngredients": ["사워크림", "치즈", "토마토"]} ] } 유효한 JSON만 반환하세요. 다른 텍스트는 포함하지 마세요.`, identifyIngredients: (foodName: string, hasImage: boolean) => `"${foodName}"에 대해 ${hasImage ? '이미지를 분석하고 ' : ''}신뢰도에 따라 재료를 분류하세요. 다음 형식의 JSON 객체를 반환하세요: - hpPredIngredients: 이 음식에 확실히 있다고 판단되는 재료 (한국어) - hrPredIngredients: 있을 수 있지만 확신이 없는 재료 (한국어) 각 목록은 3-8개의 재료로 유지하세요. 유효한 JSON만 반환하세요.`, estimateNutrition: ( foodName: string, ingredients: string[], allNutrients: string, dgaNutrients: string ) => `다음 음식 1인분의 영양 성분을 추정하세요: ${foodName} 재료: ${ingredients.join(', ')} 다음 형식의 JSON 객체를 반환하세요: - novaClass: NOVA 식품 분류 (1=비가공, 2=가공 조리재료, 3=가공식품, 4=초가공식품) - nutrition: 1인분당 추정 영양 성분. 해당되는 모든 영양소를 포함하세요. 사용 가능한 영양소 필드: ${allNutrients} USDA 식이 지침 식품군 등가량: ${dgaNutrients} DGA 추정 가이드: - usa_gov_dga_vegetables_cup_eq: 생 잎채소 1컵 = 0.5, 기타 채소 1컵 = 1 - usa_gov_dga_fruits_cup_eq: 중간 크기 과일 1개 = 1, 말린 과일 1/4컵 = 0.5 - usa_gov_dga_dairy_cup_eq: 우유/요거트 1컵 = 1, 치즈 1.5온스 = 1 - usa_gov_dga_whole_grains_oz_eq: 빵 1조각 = 1, 조리된 곡물 1/2컵 = 1 - usa_gov_dga_healthy_fats_tsp_eq: 기름 1큰술 = 3, 견과류 1온스 = 3 예시: {"novaClass": 3, "nutrition": {"kcal": 450, "protein_g": 25, "carbs_g": 35, "fat_g": 20, "fiber_g": 4, "vitamin_d_mcg": 2, "omega_3_mg": 100, "usa_gov_dga_vegetables_cup_eq": 0.5}} 유효한 JSON만 반환하세요.`, recommendIngredients: (params: { days: number; gapLines: string; recentIngredients: string; restrictions: string; preferences: string; conditions: string; }) => `당신은 영양 전문가입니다. ${params.days}일간의 영양 데이터를 기반으로 재료와 레시피를 추천하세요. **${params.days}일간 영양 결핍** (건강 영향도 순): ${params.gapLines} **최근 섭취한 음식 (추천하지 말 것)**: ${params.recentIngredients} **사용자 프로필**: - 음식 제한: ${params.restrictions} - 음식 선호: ${params.preferences} - 건강 상태: ${params.conditions} **작업**: 1. 이러한 결핍을 해결하는 15-25개의 재료를 나열하세요 (한국어) 2. 중요: 사용자가 최근에 먹은 재료(위에 나열됨)는 추천하지 마세요 3. 상위 N개를 먹으면 최대한 건강에 도움이 되도록 재료를 정렬하세요 4. 해당 재료를 사용한 5가지 메뉴 아이디어를 제안하세요 (집에서 요리하거나 외식할 때 주문할 수 있는 음식) (한국어) **형식**: 유효한 JSON만 반환, 마크다운 없음 {"ingredients":["..."],"foods":[{"name":"...","ingredients":["..."]}]}`, judgePredictions: (candidateCount: number, candidateDescriptions: string) => `당신은 AI 음식 식별 정확도를 평가하는 전문 음식 평론가입니다. 사진과 ${candidateCount}개의 AI 모델이 생성한 설명을 보여드리겠습니다. 어떤 설명이 사진과 가장 잘 일치합니까? 후보: ${candidateDescriptions} 정확히 다음 형식으로 반환하세요: Winner: <번호> Report: <해당 옵션이 사진과 가장 잘 일치하는 이유를 정확히 50단어로 설명하세요. 한국어로 작성.>`, };