冷蔵庫の食材画像から料理を提案するWebアプリをGeminiで作るレシピ
を試す
既にAPIキーは取得済み
pip install google-generativeai
でインストール
モデルを指定してgenerate_content関数にプロンプトを与えることでtext to textの生成結果を取得できる
import google.generativeai as genai
# APIKEY
key = ""
genai.configure(api_key=key)
model = genai.GenerativeModel('gemini-1.5-flash')
# res = model.generate_content("こんにちは、今日の天気は?")
# # print(res)
# print(res.text)
prompt = "日本のラーメンについて語ってください"
response = model.generate_content(prompt)
print(response.text)
で実験
実行結果は
python gemini_text1.py
の結果
日本のラーメンは、単なる食べ物ではなく、日本の食文化を代表する存在と言えるでしょう。その歴史は長く、中国から伝わった麺料理が、日本の風土や食文化と融合し、多様な地域性と個性豊かな一杯へと進化を遂げてきました。 まず、その**スープ**はラーメンの命と言えるでしょう。豚骨、鶏ガラ、魚介、醤油、味噌など、ベースとなるスープの種類は多岐にわたり、それぞれのスープに合わせた独特の製法と材料の組み合わせが、奥深い味わいを生み出しています。豚骨スープの濃厚なコク、鶏ガラのあっさりとした上品さ、魚介の繊細な旨味など、スープだけでも多様な体験が可能です。 **麺**も重要な要素です。細麺、中太麺、太麺など、スープとのバランスや食感の組み合わせが綿密に考えられています。小麦粉の種類や製法によって、食感や風味も変化し、それぞれのラーメンに最適な麺が選ばれています。ツルツルとした喉越し、コシの強さ、小麦の香りなど、麺だけでも多くのバリエーションがあります。 **具材**もラーメンの魅力を高める重要な要素です。チャーシュー、メンマ、ネギ、海苔、味玉など、定番の具材に加え、地域独特の食材や季節感を取り入れたものなど、多様な組み合わせが可能です。それぞれの具材がスープや麺と調和し、全体的なバランスを考慮した構成となっています。 そして忘れてならないのが、**地域性**です。北海道の味噌ラーメン、東京の醤油ラーメン、九州の豚骨ラーメンなど、地域によってスープの種類や麺、具材、味付けなどが異なり、まさにラーメンは日本の食文化の縮図と言えます。同じ豚骨ラーメンでも、地域によって濃厚さや油の量、風味などが大きく異なるため、食べ比べる楽しみも尽きません。 さらに近年では、**創作ラーメン**と呼ばれる新しいタイプのラーメンも数多く登場しています。伝統的なラーメンをベースに、斬新なアイデアや食材を取り入れた、独創的な一杯が次々と生み出されています。 一口に「日本のラーメン」と言っても、そのバリエーションは無限と言えるほど広大です。それぞれのラーメンに込められた作り手の情熱と、地域ごとの文化や歴史を感じながら、一杯のラーメンを味わうことは、日本の食文化に触れる貴重な体験となるでしょう。 ぜひ、様々なラーメンを味わって、あなたのお気に入りの一杯を見つけてみてください。 WARNING: All log messages before absl::InitializeLog() is called are written to STDERR E0000 00:00:1738680923.836079 3266497 init.cc:232] grpc_wait_for_shutdown_with_timeout() timed out.
つまり
generate_content()
に
プロンプトを渡せばOK
変数にして入れても、そのまま直打ちしてもOK
send_message関数を使えばマルチターンのチャットにも対応
既存のチャットの内容を反映した返信を返してくれます。
初期化したい場合はstart_chat(history=[])を実行
例として
chat = model.start_chat(history=[])
response = chat.send_message(
'しりとりしましょう。りんご')
print(response.text)
#response
#んご、ですね!では、 **ごりら** はどうでしょう?
response = chat.send_message(
'ラッパ')
print(response.text)
#response
#ぱ、ですね!では**パンダ** はどうでしょう?
image to textは以下のようにupload_file関数を使います。
pathに読み込みたい画像のファイルパスを与えます
upload_file = genai.upload_file(path="/image.jpg",
display_name="image")
image to textの場合はgenerate_content関数の第一引数に先ほどのupload_file を与えます。第二引数にpromptを与えます。
upload_file = genai.upload_file(path="./image.jpg",
display_name="image")
prompt = "日本語で内容を簡潔にまとめてください"
# Prompt the model with text and the previously uploaded image.
response = model.generate_content([upload_file, prompt ])
print(response.text)
とすれば
python gemini_text1.py
を実行すると
白い背景に、オレンジ色の毛並みの小さな猫が写っています。猫はカメラの方を見ていますが、少しうつむき加減です。 かわいらしい表情をしています。 WARNING: All log messages before absl::InitializeLog() is called are written to STDERR E0000 00:00:1738681425.059689 3274804 init.cc:232] grpc_wait_for_shutdown_with_timeout() timed out.
というように写真の説明が出る
なおプロンプトを要約する
にした場合
MP3などの音声ファイルやPDFでも要約可能
とりあえず色々できるようなので
要約には使えるかもしれない
とりあえずそれは置いておき、冷蔵庫の画像から食材の認識を進める
pip install streamlit pillow google-generativeai
で必要なライブラリをインストール
touch ingredients.py
でファイルを作成
import streamlit as st from PIL import Image import io import google.generativeai as genai
でライブラリインポート
PIL: 画像の操作に使用されるライブラリで、ユーザーがアップロードした画像を扱います。 io: バイトデータを扱うために使用され、画像をバイト形式に変換するために利用します。 google.generativeai: Googleの生成AIを利用して、食材認識とレシピ生成を行うために使用
key = ""
genai.configure(api_key=key)
model = genai.GenerativeModel('gemini-1.5-flash')
で
geminiの認証
st.title('AI料理研究家')
st.write("冷蔵庫の中身の写真をアップロードすると、レシピを提案します!")
st.title: Webアプリのタイトルとして「AI料理研究家」を表示します。
st.write: 説明文として「冷蔵庫の中身の写真をアップロードすると、レシピを提案します!」を表示
uploaded_image = st.file_uploader("冷蔵庫の中身の写真を選択してください", type=["jpg", "png", "jpeg"])
で
ユーザーが画像ファイルをアップロードできるインターフェースを作成
def recognize_ingredients(input_file):
response = model.generate_content([input_file, "日本語で写っている食材を詳細に説明してください"])
return response.text
recognize_ingredients: 画像から食材を認識するための関数
input_fileとして画像をGoogle Generative AIに送り、「日本語で写っている食材を説明してください」というプロンプトを追加
generate_content: モデルを使用して指定されたプロンプトに基づき、食材を認識します。返されるのは食材のリストやテキストになる
次にレシピ提案メソッドの作成
def suggest_recipes(ingredients):
prompt = f"以下の食材だけを使った料理とそのレシピをいくつか提案してください: " + ingredients
response = model.generate_content(prompt)
suggest_recipes: 認識された食材に基づいてレシピを生成する関数
ngredientsに基づいてプロンプトを作成し、AIに「これらの食材だけを使った料理とレシピを提案してください」と指示
再度、generate_contentを使用して、レシピを生成
if response:
return response.text
else:
st.error("レシピの生成に失敗しました")
return None
レスポンスが正常に返ってきた場合、その内容を返し
何らかのエラーが発生した場合には、Streamlitを使ってエラーメッセージを表示
if uploaded_image is not None:
image = Image.open(uploaded_image)
st.image(image, caption="Uploaded Image", use_column_width=True)
画像がアップロードされた場合、その画像を開き、Streamlitのインターフェースに表示
captionとして「Uploaded Image」を設定し、画像を表示させる領域の幅に合わせてリサイズ
img_byte_arr = io.BytesIO()
image.save(img_byte_arr, format='PNG')
img_byte_arr = img_byte_arr.getvalue()
アップロードされた画像をバイトデータに変換
BytesIO()を使って、画像データをバイト形式に保存し、それをimg_byte_arrに取得
with open("uploaded_fridge_image.png", "wb") as f:
f.write(img_byte_arr)
input_file = genai.upload_file(path=r"<pythonファイルが置かれたフォルダパス>\uploaded_fridge_image.png",
display_name="image")
MacOSの場合は以下のよう
input_file = genai.upload_file(path="/Users/test/python/uploaded_fridge_image.png",
display_name="image")
変換した画像をwrite関数でローカルに保存します。ファイル名は「uploaded_fridge_image.png」
genai.upload_file: Google Generative AIのために画像をアップロード
このために
パスと表示名を指定
Pythonファイルを保存しているフォルダのパスで置き換える
一度手順6のコマンドでStreamlitを実行し(途中でエラーになりますが画像は保存されます)、画像を保存してからその画像をVScodeで右クリックしてパスをコピーすると楽
with st.spinner('食材を認識中...'):
ingredients = recognize_ingredients(input_file)
画像から食材を認識している間、st.spinnerで「食材を認識中…」というローディングメッセージを表示
recognize_ingredients関数を呼び出して、食材を認識
if ingredients:
st.write("認識された食材:")
st.write(ingredients)
食材が正常に認識された場合、「認識された食材:」というメッセージを表示し、具体的にどの食材が認識されたかをリスト形式で表示
with st.spinner('レシピを提案中...'):
recipes = suggest_recipes(ingredients)
認識された食材に基づいてレシピを生成する際に、「レシピを提案中…」というローディングメッセージを表示します。 suggest_recipes関数を呼び出し、レシピを提案
if recipes:
st.write("こちらがいくつかのレシピ提案です:")
st.write(recipes)
else:
st.error("レシピが見つかりませんでした。")
提案されたレシピがあれば、「こちらがいくつかのレシピ提案です:」というメッセージを表示し、生成されたレシピをリストとして表示
レシピが生成されなかった場合にはエラーメッセージを表示
input_file = genai.upload_file(path="/Users/snowpool/aw10s/gemini/uploaded_fridge_image.png",
display_name="image")
の部分は出力先なので
この設定にした
で実行
streamlit run ingredients.py
You can now view your Streamlit app in your browser.
Local URL: http://localhost:8501
Network URL: http://192.168.1.17:8501
For better performance, install the Watchdog module:
$ xcode-select --install
$ pip install watchdog
2025-02-08 05:04:21.476 Uncaught app execution
Traceback (most recent call last):
File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/streamlit/runtime/scriptrunner/exec_code.py", line 88, in exec_func_with_error_handling
result = func()
^^^^^^
File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/streamlit/runtime/scriptrunner/script_runner.py", line 579, in code_to_exec
exec(code, module.__dict__)
File "/Users/snowpool/aw10s/gemini/ingredients.py", line 43, in <module>
input_file = genai.upload_file(path="/Users/snowpool/aw10s/gemini/uploaded_fridge_image.png",
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/google/generativeai/files.py", line 85, in upload_file
response = client.create_file(
^^^^^^^^^^^^^^^^^^^
File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/google/generativeai/client.py", line 114, in create_file
media = googleapiclient.http.MediaFileUpload(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/googleapiclient/_helpers.py", line 130, in positional_wrapper
return wrapped(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/googleapiclient/http.py", line 594, in __init__
self._fd = open(self._filename, "rb")
^^^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: '/Users/snowpool/aw10s/gemini/uploaded_fridge_image.png'
2025-02-08 05:05:16.750 The `use_column_width` parameter has been deprecated and will be removed in a future release. Please utilize the `use_container_width` parameter instead.
2025-02-08 05:05:19.701 Uncaught app execution
Traceback (most recent call last):
File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/streamlit/runtime/scriptrunner/exec_code.py", line 88, in exec_func_with_error_handling
result = func()
^^^^^^
File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/streamlit/runtime/scriptrunner/script_runner.py", line 579, in code_to_exec
exec(code, module.__dict__)
File "/Users/snowpool/aw10s/gemini/ingredients.py", line 43, in <module>
input_file = genai.upload_file(path="/Users/snowpool/aw10s/gemini/uploaded_fridge_image.png",
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/google/generativeai/files.py", line 85, in upload_file
response = client.create_file(
^^^^^^^^^^^^^^^^^^^
File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/google/generativeai/client.py", line 114, in create_file
media = googleapiclient.http.MediaFileUpload(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/googleapiclient/_helpers.py", line 130, in positional_wrapper
return wrapped(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/googleapiclient/http.py", line 594, in __init__
self._fd = open(self._filename, "rb")
^^^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: '/Users/snowpool/aw10s/gemini/uploaded_fridge_image.png'
2025-02-08 05:05:30.335 The `use_column_width` parameter has been deprecated and will be removed in a future release. Please utilize the `use_container_width` parameter instead.
2025-02-08 05:05:31.820 Uncaught app execution
Traceback (most recent call last):
File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/streamlit/runtime/scriptrunner/exec_code.py", line 88, in exec_func_with_error_handling
result = func()
^^^^^^
File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/streamlit/runtime/scriptrunner/script_runner.py", line 579, in code_to_exec
exec(code, module.__dict__)
File "/Users/snowpool/aw10s/gemini/ingredients.py", line 43, in <module>
input_file = genai.upload_file(path="/Users/snowpool/aw10s/gemini/uploaded_fridge_image.png",
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/google/generativeai/files.py", line 85, in upload_file
response = client.create_file(
^^^^^^^^^^^^^^^^^^^
File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/google/generativeai/client.py", line 114, in create_file
media = googleapiclient.http.MediaFileUpload(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/googleapiclient/_helpers.py", line 130, in positional_wrapper
return wrapped(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/googleapiclient/http.py", line 594, in __init__
self._fd = open(self._filename, "rb")
^^^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: '/Users/snowpool/aw10s/gemini/uploaded_fridge_image.png'
となった
ファイルが存在しないとなるので
mv ~/Downloads/PXL_20250205_220637199.jpg ./uploaded_fridge_image.png
で撮影した写真を
Downloadsフォルダにある PXL_20250205_220637199.jpg を mv コマンドでカレントディレクトリに uploaded_fridge_image.png にリネームして移動
再度実行したら
streamlit run ingredients.py
You can now view your Streamlit app in your browser.
Local URL: http://localhost:8501
Network URL: http://192.168.1.17:8501
For better performance, install the Watchdog module:
$ xcode-select --install
$ pip install watchdog
2025-02-08 05:15:18.391 The `use_column_width` parameter has been deprecated and will be removed in a future release. Please utilize the `use_container_width` parameter instead.
2025-02-08 05:15:30.390 Uncaught app execution
Traceback (most recent call last):
File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/streamlit/runtime/scriptrunner/exec_code.py", line 88, in exec_func_with_error_handling
result = func()
^^^^^^
File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/streamlit/runtime/scriptrunner/script_runner.py", line 579, in code_to_exec
exec(code, module.__dict__)
File "/Users/snowpool/aw10s/gemini/ingredients.py", line 47, in <module>
ingredients = recognize_ingredients(input_file)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/snowpool/aw10s/gemini/ingredients.py", line 19, in recognize_ingredients
response = model.generate_content([input_file, "日本語で写っている食材を詳細に説明してください"])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/google/generativeai/generative_models.py", line 331, in generate_content
response = self._client.generate_content(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/google/ai/generativelanguage_v1beta/services/generative_service/client.py", line 830, in generate_content
response = rpc(
^^^^
File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/google/api_core/gapic_v1/method.py", line 131, in __call__
return wrapped_func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/google/api_core/retry/retry_unary.py", line 293, in retry_wrapped_func
return retry_target(
^^^^^^^^^^^^^
File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/google/api_core/retry/retry_unary.py", line 153, in retry_target
_retry_error_helper(
File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/google/api_core/retry/retry_base.py", line 212, in _retry_error_helper
raise final_exc from source_exc
File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/google/api_core/retry/retry_unary.py", line 144, in retry_target
result = target()
^^^^^^^^
File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/google/api_core/timeout.py", line 120, in func_with_timeout
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/Users/snowpool/.pyenv/versions/3.11.0/lib/python3.11/site-packages/google/api_core/grpc_helpers.py", line 78, in error_remapped_callable
raise exceptions.from_grpc_error(exc) from exc
google.api_core.exceptions.ResourceExhausted: 429 Resource has been exhausted (e.g. check quota).
となった
今度は
google.api_core.exceptions.ResourceExhausted: 429 Resource has been exhausted (e.g. check quota).
の部分から
Google の API(この場合は Generative AI の API)で利用できるリソースやクォータが使い果たされた、もしくは上限に達しているのが原因
無料プランなので
1分以上経過すればリソースが回復するので
再度実行したらできた
実行結果は
認識された食材:
はい、冷蔵庫の中身にある日本語で書かれた食材を詳細に説明します。
上段:
* 卵: パックに入った鶏卵。個数は不明ですが、少なくとも数個入っています。
* パン粉、または何かしら粉状のもの: 透明なビニール袋に入っています。内容物の特定は難しいです。
* 様々な食品: 複数の袋やパッケージに入った食品が詰め込まれており、個々の商品の特定は困難です。日本語のラベルが見えますが、商品名は判読できません。
* 雪印スノーブランドバター: ピンク色のパッケージのバター。
2段目:
* BIOブランドヨーグルト: 少なくとも2個のヨーグルト。プレーン味と、おそらく加糖味があります。
* その他ヨーグルト: いくつかのヨーグルト容器が見えますが、ブランドや味は不明です。
* その他食品: 複数の小さな容器やパックに入った食品があり、内容物は判別できません。
* 野菜や漬物など: 青色のプラスチック容器に入った野菜、おそらく漬物類が入っています。
3段目:
* 生みそ: 「生みそ」と大きく書かれた容器に入った味噌。中甘口のようです。
* その他食品: いくつかの小さな容器やパックに入った食品が確認できますが、詳細は不明です。
* クリームチーズ: クラフトのクリームチーズと思われる容器が見えます。
* ご飯: 透明なプラスチック容器に入ったご飯が、少なくとも2つあります。
* 調理済みの料理: ラップで覆われたお皿に料理が残っています。内容は不明です。
4段目:
* 赤い鍋: 蓋付きの赤い鍋が、中に何か入っている状態で置かれています。
* バナナ: ラップで覆われたお皿に、バナナが1本入っています。
* その他食品: いくつかの小さな容器やパックに入った食品が見えますが、詳細は不明です。
* 豚肉の塊: 透明なプラスチック容器に入った、生の豚肉の塊と思われるものがあります。
下段:
* 牛乳: 明治の牛乳。900mlパック。
* ジュース: コープブランドのアップルジュースとグレープジュースのパック。他にもいくつかジュースのパックが見えますが、味は不明です。
全体的に、冷蔵庫は様々な食品でかなりいっぱい詰まっており、整理整頓されていない状態です。多くの食品の内容物が判別できないのが現状です。
こちらがいくつかのレシピ提案です:
冷蔵庫の中身が不明瞭な部分が多いので、確実にできる料理と、可能性のある料理を分けて提案します。
確実に作れる料理 (材料の特定が可能なもの):
1. 豚みそ炒めご飯:
* 材料: 豚肉、生みそ、ご飯、雪印スノーブランドバター、卵(あれば)、冷蔵庫にある野菜(漬物でも可、刻んで使用)。
* レシピ: 豚肉を一口大に切り、バターで炒め、味噌を溶き入れ、ご飯を加えて炒め合わせる。卵を割り入れて混ぜても良い。野菜や漬物を加えて炒め、塩胡椒で味を調える。
2. ヨーグルト和風ドレッシングの豚しゃぶサラダ風:
* 材料: 豚肉、BIOブランドヨーグルト(プレーン)、冷蔵庫にある野菜(漬物でも可、細かく刻む)、ご飯(少量)、雪印スノーブランドバター(少量、風味付け)。
* レシピ: 豚肉をしゃぶしゃぶ風に軽く茹でる。ヨーグルトをベースに、塩、醤油、少しのバターで和風ドレッシングを作る。茹でた豚肉と野菜、ご飯をドレッシングで和える。
可能性のある料理 (材料の推測が必要なもの):
1. パン粉を使った揚げ物: 粉状のものがパン粉なら、豚肉をパン粉で揚げることができます。卵を溶いて衣に混ぜると美味しくなります。野菜があれば一緒に揚げても良いでしょう。しかし、油がないので、バターで焼くか、少量の油で揚げる必要があります。
2. クリームチーズを使った何か: クリームチーズとヨーグルト、パン粉(もしパン粉なら)、卵で何か作れる可能性があります。例えば、クリームチーズとヨーグルトを混ぜて、パン粉を混ぜて焼いたり、卵と混ぜて焼いたり。詳細は不明なため、レシピは提示できませんが、可能性はあります。
3. 冷蔵庫の残り物を使ったスープ: 冷蔵庫にある調理済み料理と、野菜、牛乳、ヨーグルトなどを活用して、雑炊風スープを作ることができます。味見をして、塩や味噌で味を調える必要があります。
重要な注意点:
* 多くの食材が不明なため、上記のレシピはあくまで推測に基づいています。
* 食材の賞味期限を確認し、安全な食材のみを使用してください。
* 冷蔵庫の中身を整理して、食材を把握してから料理を作る方が効率的です。
冷蔵庫の整理と食材の特定ができれば、もっと多くの料理のバリエーションを提案できます。 写真があれば、より正確な提案が可能になります。