材料リストからレシピを生成するOpenAI「Recipe generator」にレシピを考えてもらった – 日本一詳しいOpenAI入門

Microsoft Ignite 2021の基調講演で発表された「Azure OpenAI Service」。公式ページにある通り OpenAI  でOpenAI APIを発行してもらったのでExpamplesにある49個のアプリから「Recipe generator」をPythonから実行して試行錯誤します。

OpenAIのExpamplesにあるRecipe generatorとは

公式の説明では「Create a recipe from a list of ingredients.」とあり、“材料のリストからレシピを作成”となります。

面白いのが「材料から何ができる?」というものではなく「この材料があってこの料理を作りたい」とすることで、作り方を教えてくれます。

公式のタグでは「Generation」1つが付与されています。

プログラムを見るとエンジンは「davinci-instruct-beta」という、「davinci-instruct」というエンジンのβ版となっております。

また、レシピが返ってくるのでmaxtokenは120と比較的多めの数字が設定されています。(maxtoken=OpenAIから返ってくるデータの最大の長さ)

サンプルコードでは最初に「Write a recipe based on these ingredients and instructions:(これらの材料と説明書をもとに、レシピを書いてみましょう。)」とあり、作るものと用意してある材料から作り方を教えてくれるようです。

早速使ってみた

公式にあるコードを参考に、好きな文章を入れられるように str という変数に会話を入れて実行できるようにします。

1Python Code 
2
3‘’’ 
4
5import os 
6
7import openai 
8
9 
10
11openai.api_key = os.getenv("OPENAI_API_KEY") 
12
13str = """ Write a recipe based on these ingredients and instructions: 
14
15 
16
17Frito Pie 
18
19 
20
21Ingredients: 
22
23Fritos 
24
25Chili 
26
27Shredded cheddar cheese 
28
29Sweet white or red onions, diced small 
30
31Sour cream 
32
33 
34
35Directions: """ 
36
37 
38
39response = openai.Completion.create( 
40
41  engine="davinci-instruct-beta", 
42
43  prompt=str, 
44
45  temperature=0, 
46
47  max_tokens=120, 
48
49  top_p=1.0, 
50
51  frequency_penalty=0.0, 
52
53  presence_penalty=0.0 
54
55) 
56
57 
58
59print(response["choices"][0]["text"]) 
60
61‘’’

作り方を教えてくれる

サンプルでは、

「これらの材料と説明書をもとに、レシピを書いてみましょう。

フリットパイ

材料

フリトス

チリ

細切りのチェダーチーズ

白または赤の甘い玉ねぎ(小口切り

サワークリーム

作り方:」

となっており、フリートパイの作り方を聞いています。

実行すると、

「1. Heat the chili in a pot on the stove.

1. Place a layer of Fritos in the bottom of a bowl.

2. Top with chili, shredded cheese, diced onions, and sour cream.

3. Repeat until the bowl is full.」

となりました。

「1. チリを鍋に入れてストーブで加熱する。

  1. ボウルの底にフリトスを敷き詰める。
  2. チリ、シュレッドチーズ、さいの目に切った玉ねぎ、サワークリームをのせる。
  3. ボウルがいっぱいになるまで繰り返す。」といった感じでフリートパイの作り方を教えてくれます。

フリートパイ自体初耳だったので調べてみたところ、教えてくれたレシピのイメージ通りの画像がたくさんヒットしました。

(画像  )

材料を変えても適した作り方を返してくれる

材料のチリの部分をトマトケチャップに変えてサワークリームをなくすと

「1. ボウルにフリトスを入れる。

  1. トマトケチャップと細切りのチェダーチーズを加える。
  2. 小さく切ったホワイトオニオンまたはレッドオニオンを加える。
  3. よく混ぜる。」

のように新たに材料に合わせた作り方を教えてくれます。

無茶なレシピでも考えてくれる

材料を変えずに作る料理を「ポップコーン」にしてみました。

「1. コーンを弾く。

  1. 大きなボウルにポップコーンを入れる。
  2. フリトス、トマトケチャップ、細切りチェダーチーズ、角切りタマネギを加える。
  3. よく混ぜる。
  4. 盛り付けます。」

のように材料にないはずのコーンが追加され、ポップコーンとパイの材料を混ぜたサラダのようなレシピが作られました。

「寿司」でやってみると

「1. 簀の子の上に海苔を一枚置く。

  1. 海苔の上にご飯を薄くのせる。
  2. フリトスをご飯の上に置く。
  3. チーズの層を作る。
  4. 玉ねぎの薄い層を加える。
  5. 寿司をしっかりと巻く。
  6. 一口サイズに切る。」

のようになり、用意した材料を巻く寿司の作り方を教えてくれました。

材料も教えてくれる

試しに入力する文章を材料の前までに変えてみました。

「Write a recipe based on these ingredients and instructions:

Sushi

Ingredients:」

実行すると、「ご飯、お酢、砂糖、塩、わさび、魚、野菜、のり」のように必要な材料を教えてくれました。

どんなときに使えるのか?

冷蔵庫にある材料から作れるレシピを教えてくれるようなサイトはありますが、材料と作りたいものを入れることで作り方を教えてくれるのは珍しいと思います。どの材料がどの程度必要や調理時間といった数値的なものまでは表示されませんが、作り方としては十分だと思います。

材料と食べたいものを決めるだけで作り方を教えてくれるので、色々な材料があるからカレー等でなく、幅広い選択肢があるのがいいですね。

この記事を書いた人

azure-recipe-user