2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

gpt-4oをDatabricksで動かしてみる

Last updated at Posted at 2024-05-14

といっても、APIコールするだけですが。こちらのクックブックのGetting StartedとImage Processingをウォークスルーします。動画はまたあとで。

準備

OpenAIのAPIキーをシークレットに格納しておきます。

ライブラリをアップグレードします。

%pip install --upgrade openai --quiet
dbutils.library.restartPython()

事始め

from openai import OpenAI 
import os

## APIキーとモデル名のセットアップ
MODEL="gpt-4o"
client = OpenAI(api_key=dbutils.secrets.get(scope="demo-token-takaaki.yayoi", key="openai_api_key"))

まずは動作確認。

completion = client.chat.completions.create(
  model=MODEL,
  messages=[
    {"role": "system", "content": "You are a helpful assistant. Help me with my math homework!"}, # <-- This is the system message that provides context to the model
    {"role": "user", "content": "Hello! Could you solve 2+2?"}  # <-- This is the user message for which the model will generate a response
  ]
)

print("Assistant: " + completion.choices[0].message.content)

動きました。日本語ではどうか。

completion = client.chat.completions.create(
  model=MODEL,
  messages=[
    {"role": "system", "content": "あなたは有能なアシスタントです。私の数学の宿題を手伝ってください!"}, # <-- これはモデルにコンテキストを提供するシステムメッセージです
    {"role": "user", "content": "こんにちは!2+2を解けますか?"}  # <-- これはモデルがレスポンスを生成するユーザーメッセージですThis is the user message for which the model will generate a response
  ]
)

print("Assistant: " + completion.choices[0].message.content)

問題ないです。

Assistant: もちろん、2+2は4です。他にも何か数学の質問がありますか?

画像処理

処理対象の画像をワークスペースにインポートしておきます。

download.png

Screenshot 2024-05-15 at 2.56.17.png

from IPython.display import Image, display, Audio, Markdown
import base64

IMAGE_PATH = "data/triangle.png"

# コンテキストに指定する画像のプレビュー
display(Image(IMAGE_PATH))

表示されます。
Screenshot 2024-05-15 at 2.57.09.png

プロンプトも日本語でトライします。

# 画像ファイルをオープンして、base64文字列にエンコード
def encode_image(image_path):
    with open(image_path, "rb") as image_file:
        return base64.b64encode(image_file.read()).decode("utf-8")

base64_image = encode_image(IMAGE_PATH)

response = client.chat.completions.create(
    model=MODEL,
    messages=[
        {"role": "system", "content": "あなたはMarkdownでレスポンスを生成する有能なアシスタントです。私の数学の宿題を手伝ってください!数式のMarkdownを返却する際には数式の行の上下を$$で挟んでください"},
        {"role": "user", "content": [
            {"type": "text", "text": "三角形の面積はいくつですか?"},
            {"type": "image_url", "image_url": {
                "url": f"data:image/png;base64,{base64_image}"}
            }
        ]}
    ],
    temperature=0.0,
)

print(response.choices[0].message.content)

で、ここでDatabricksでマークダウンがレンダリングされるようにプロンプトを調整しています。こちらに書いているように、DatabricksノートブックでTexをレンダリングするには、数式の上下に$$を追加する必要があるので、数式のMarkdownを返却する際には数式の行の上下を$$で挟んでくださいを追加しています。

この三角形は底辺が9、両側の辺が6と5の二等辺三角形です。三角形の面積を求めるためには、高さを求める必要があります。

まず、三角形の高さを求めるために、三角形を2つの直角三角形に分けます。底辺の長さ9を2つに分けると、それぞれの直角三角形の底辺の長さは4.5になります。

次に、ピタゴラスの定理を使って高さを求めます。

$$
h = \sqrt{6^2 - 4.5^2}
$$

計算すると、

$$
h = \sqrt{36 - 20.25} = \sqrt{15.75} \approx 3.97
$$

次に、三角形の面積を求めます。

$$
A = \frac{1}{2} \times 底辺 \times 高さ
$$

$$
A = \frac{1}{2} \times 9 \times 3.97 \approx 17.865
$$

したがって、この三角形の面積は約17.865平方単位です。

テキストのセルを追加します。
Screenshot 2024-05-15 at 2.59.23.png

上のレスポンスを貼り付けると、数式もレンダリングされます。これは嬉しい。
Screenshot 2024-05-15 at 3.00.37.png

今日はとりあえずここまで。こちらに続きます。

はじめてのDatabricks

はじめてのDatabricks

Databricks無料トライアル

Databricks無料トライアル

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?