🤖

GoogleのVertex-AIに,URLからレシピ情報抽出をさせて"みよう"とする

2024/04/28に公開

はじめに

  • 料理サイト(DELISH KITCHENやCookPad等.※NHK「きょうの料理」のサイトでは取得できる.)では,材料や作り方の情報を取得できる無料のAPIが存在しません.
  • また,Youtubeの料理動画では,概要欄に材料や作り方を記載されている投稿者の方もいらっしゃいますが,それだけを取得できるAPIがありません.
  • そこで,Googleの生成AIを使ってサクッと情報を取れたらいいなぁと思い,やってみました.

Pythonバージョンと環境構築

  • Python 3.11.7
  • OS:Mac OS
  • ※venvで仮想環境を用意して行ってます

セットアップ方法

https://cloud.google.com/vertex-ai/docs/start/client-libraries?authuser=3&hl=ja

上記の記事を参考に環境構築を行う.その際,プロジェクトIDと認証情報を含むJSONファイルを取得しておく.

  • プロジェクトIDは,pythonコードで必要となる.
  • JSON ファイルは,次の環境変数GOOGLE_APPLICATION_CREDENTIALSの設定で必要となる.

環境変数 GOOGLE_APPLICATION_CREDENTIALS を、認証情報を含む JSON ファイルのパスに設定する.

jsonファイルのパスが,hoge/foo/bar/example.jsonだとする場合,vi ~/.zshrc(OSごとに異なる)を行い,環境変数GOOGLE_APPLICATION_CREDENTIALSの設定を行う.

export GOOGLE_APPLICATION_CREDENTIALS = "hoge/foo/bar/example.json"

その後,source ~/.zshrcを行い,環境変数の設定を反映させる.

今回使うコード

  • .env:下記のuse_vertexai.pyと同じディレクトリ下に置いてます.
PROJECT_ID = "<ここにプロジェクトのIDを入力.>"
# 例:PROJECT_ID = "2AIfa34ljkl93209-AO"
LOCATION = "asia-northeast1"
# LOCATION設定は一例
  • use_vertexai.py
import vertexai
import os, requests

from vertexai.generative_models import GenerativeModel, Part
from dotenv import load_dotenv
from bs4 import BeautifulSoup

# `.env` ファイルを読み込む
load_dotenv()

# 環境変数を利用する
PROJECT_ID = os.environ.get('PROJECT_ID')
LOCATION = os.environ.get('LOCATION')

def get_response_text_from(prompt):
    vertexai.init(project=PROJECT_ID, location=LOCATION)

    model = GenerativeModel("gemini-1.0-pro")
    chat = model.start_chat()
    
    response = chat.send_message(prompt)
    return response.text

def get_title_from_url(url):
    try:
        response = requests.get(url)
        soup = BeautifulSoup(response.text, 'html.parser')
        # titleタグを取得
        title_tag = soup.find('title')
        # titleタグが存在するか確認
        if title_tag:
            return title_tag.text.strip()
        else:
            print("Title tag not found")
            return ""
    except Exception as e:
        print(f"An error occurred: {str(e)}")
        return ""

def main():
    url = "https://delishkitchen.tv/recipes/197913982130979872"
    url_title = get_title_from_url(url)
    prompt = f"次のサイトからレシピを引っ張ってきて.タイトルは,{url_title}です.:{url}"
    print(get_response_text_from(prompt))
    

main()

工夫点

  • プロンプトに料理名(HTMLのタイトル情報)を追加:プロンプトの部分を
prompt = f"次のサイトからレシピを引っ張ってきて.:{url}"

としたら,違うサイトのレシピ情報を出力していました.タイトル情報を加えたら,上手くいきました.

出力結果

## 簡単ジューシー! オーブンでハンバーグのレシピ

### 材料

* 合いびき肉 : 400g
* 玉ねぎ : 1/2個
* パン粉 : 大さじ8
* 牛乳 : 大さじ4
* 卵 : 1個
* 塩 : 小さじ1
* こしょう : 少々
* ナツメグ : 少々
* ケチャップ : 大さじ3
* ウスターソース : 大さじ1
* 赤ワイン : 大さじ1(または水)
* バター : 20g
* サラダ油 : 小さじ1

### 作り方

1. 玉ねぎはみじん切りにして耐熱容器に入れ、ふんわりとラップをかけ、600Wの電子レンジで2分加熱する。
2. ボウルに合いびき肉、玉ねぎ、パン粉、牛乳、卵、塩、こしょう、ナツメグを入れてよく混ぜる。
3. 耐熱皿にサラダ油を薄く塗り、2等分したタネを楕円形に成形して並べる。
4. 200℃に予熱したオーブンで20分焼く。
5. ケチャップ、ウスターソース、赤ワイン(または水)、バターを混ぜてソースを作る。
6. 焼けたハンバーグにソースをかけて完成。

### コツ・ポイント

* 玉ねぎはレンジで加熱することで、甘みが増しておいしくなります。
* ナツメグを加えることで、風味豊かに仕上がります。
* ソースはハンバーグを焼いている間に作っておくと便利です。
* お好みで、チーズをのせて焼いてもおいしいです。

### 栄養価

1人分あたりの栄養価は、エネルギー503kcal、たんぱく質33.6g、脂質25.3g、炭水化物23.9gです。

### 関連レシピ

* ハンバーグのレシピ
* 簡単ハンバーグのレシピ
* オーブンでハンバーグのレシピ

## おまけ

このレシピは、DELISH KITCHENの人気レシピです。簡単でジューシーなハンバーグが作れるので、ぜひお試しください。

Discussion