diff --git a/lib/services/gemini_service.dart b/lib/services/gemini_service.dart index 21f54c1..d53858f 100644 --- a/lib/services/gemini_service.dart +++ b/lib/services/gemini_service.dart @@ -23,25 +23,36 @@ class GeminiService { Future analyzeSakeLabel(List imagePaths, {bool forceRefresh = false}) async { // クライアント側プロンプトでスキーマの一貫性を保証 const prompt = ''' -【絶対ルール】ラベルに印刷されている文字を一字一句そのまま読み取ること。 -あなたの学習データ・知識でラベルの銘柄名や蔵元名を補完・変更・推測することは厳禁。 -例: ラベルに「東魁」とだけ書かれていれば "name" は「東魁」(「東魁盛」ではない) -例: ラベルに「白鹿」とあれば「白鹿」(「灘菊」など類似銘柄に変えない) +あなたは「ラベルの文字を読むだけ」の光学文字認識(OCR)システムです。 +日本酒の知識・データベース・推測は一切使わないでください。 ---- +## nameとbrandの絶対ルール +- ラベルに印刷されている文字を「写真に写っている通り」に出力する +- 文字の補完・完成・訂正は禁止(例: ラベルに「東魁」→ name は「東魁」、「東魁盛」に変えてはいけない) +- ラベルに「白鹿」→「白鹿」(「白鹿本醸造」などに変えない) +- ラベルに「久保田」→「久保田」(「久保田 千寿」などに変えない) +- 「もしかして○○のことかな」という判断は禁止。見えた文字だけ。 -あなたは日本酒の専門家(ソムリエ)です。 -添付の画像(日本酒のラベル)を解析し、以下のJSON形式で情報を返してください。 +## prefectureのルール +- ラベルに都道府県名が書かれていれば、その文字をそのまま出力する +- 書かれていない場合は null(銘柄名から推測して埋めることは禁止) +## description・tasteStats・flavorTagsのルール +- これらはラベルに書かれている情報と、type(特定名称)から推定してよい +- ただし nameで読み取った銘柄名の「知名度・評判・産地イメージ」は参照しないこと +- tasteStatsは1〜5の整数(ラベルに根拠がなければ中間値の3を使う) + +## 出力形式 +以下のJSONのみ返す(説明文不要): { - "name": "ラベルに書かれた銘柄名をそのまま(変更・補完禁止)", - "brand": "ラベルに書かれた蔵元名をそのまま(変更・補完禁止)", - "prefecture": "都道府県名", - "type": "特定名称(純米大吟醸など)", - "description": "味や特徴の魅力的な説明文(100文字程度)", - "catchCopy": "短いキャッチコピー(20文字以内)", + "name": "ラベルに写っている銘柄名の文字(一字一句そのまま)", + "brand": "ラベルに写っている蔵元名の文字(一字一句そのまま)", + "prefecture": "ラベルに書かれた都道府県名(なければnull)", + "type": "特定名称(ラベルから読む。なければnull)", + "description": "ラベルの情報とtypeから推定した説明文(100文字程度)", + "catchCopy": "20文字以内のキャッチコピー", "confidenceScore": 80, - "flavorTags": ["フルーティー", "辛口", "華やか"], + "flavorTags": ["フルーティー", "辛口"], "tasteStats": {"aroma":3,"sweetness":3,"acidity":3,"bitterness":3,"body":3}, "alcoholContent": 15.0, "polishingRatio": 50, @@ -50,11 +61,6 @@ class GeminiService { "yeast": "きょうかい9号", "manufacturingYearMonth": "2023.10" } - -★必須ルール(再掲): -- "name"と"brand"はラベルから目視で読んだ文字のみ。知識での変更は絶対禁止。 -- tasteStatsは必ず1〜5の整数で埋めること。 -- 不明な値は null または合理的な推測値。 '''; return _callProxyApi( diff --git a/pubspec.yaml b/pubspec.yaml index a991e35..9b4ae1d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. -version: 1.0.35+42 +version: 1.0.36+43 environment: sdk: ^3.10.1