256bitの殺人メニュー

インフラエンジニアだったソリューションアーキテクトなくわののブログ。こちらのBlogは個人の意見となっていて会社とは全く関係ありません。お約束です。[twitter:@kuwa_tw]めんどくさがりが重い腰を上げて何かをアウトプットすることにどれほどの意味があるのかを試してみたいブログでもある。

DBRXでもコーディング性能を比較してみた

liginc.co.jp

こちらのBlogを見て、DatabricksのLLMであるDBRXだとどんなもんかなーと思って試してみました! いけんのか?

コード生成のテスト

まず、こちらのコード生成ですが、画像をまだ認識することはできないため、こんな感じのプロンプトで生成させてみました。

Please create a UI/UX login code, using Next.js and Tailwind. Please make elements that Email, Password Login button. Next.jsとTailwindを使って、UI/UXログインコードを作成してください。メール、パスワードログインボタンの要素を作成してください。

import React from 'react';

const Login = () => {
  return (
    <div className="flex items-center justify-center h-screen">
      <div className="w-full max-w-md">
        <form className="bg-white shadow-md rounded px-8 pt-6 pb-8 mb-4">
          <h2 className="text-2xl font-bold mb-4 text-center">Login</h2>
          <div className="mb-4">
            <label htmlFor="email" className="block text-gray-700 text-sm font-bold mb-2">Email</label>
            <input
              type="email"
              id="email"
              className="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline"
              placeholder="Email"
            />
          </div>
          <div className="mb-6">
            <label htmlFor="password" className="block text-gray-700 text-sm font-bold mb-2">Password</label>
            <input
              type="password"
              id="password"
              className="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 mb-3 leading-tight focus:outline-none focus:shadow-outline"
              placeholder="**********"
            />
          </div>
          <div className="flex items-center justify-between">
            <button
              type="submit"
              className="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded focus:outline-none focus:shadow-outline"
            >
              Login
            </button>
            <a href="#" className="inline-block align-baseline font-bold text-sm text-blue-500 hover:text-blue-800">
              Forgot Password?
            </a>
          </div>
        </form>
      </div>
    </div>
  );
};

export default Login;

残念ながらデザインは無いですが、ログインページのようなものを生成してくれました。

バグ解決のテスト

次はバグ修正のテストです、以下のプロンプトで修正をお願いしてみました。

使用した⁠プロンプト Pythonを使用しており、このコードで問題に直面しています。売上の総額が最も高い月を正確に特定したいのですが、売上データが空である場合のエッジケースの処理にも対応したいです。この問題を解決してください。

サンプルデータ
"
(1, 'January', 200),
(2, 'January', 150),
(3, 'February', 300),
(4, 'February', 250),
(5, 'March', 100),
(6, 'March', 150)
"

コード
”
def find_highest_sales_month_corrected(sales_data):
    if not sales_data:
        return "No sales data available", 0

    totals = monthly_sales_total(sales_data)
    if not totals:
        return "No valid sales data", 0

    highest_month = max(totals, key=totals.get)
    return highest_month, totals[highest_month]

highest_sales_corrected = find_highest_sales_month_corrected(example_sales_data)
highest_sales_corrected

empty_sales_data = []
highest_sales_empty = find_highest_sales_month_corrected(empty_sales_data)
highest_sales_empty
”

生成結果は以下の通り

おそらく、monthly_sales_total 関数が定義されていないためにエラーが発生していると思われます。以下のように monthly_sales_total 関数を定義して、月別の売上総額を計算することで問題を解決できます。

def monthly_sales_total(sales_data):
    totals = {}
    for sale in sales_data:
        month = sale[1]
        total = sale[2]
        if month not in totals:
            totals[month] = 0
        totals[month] += total
    return totals

def find_highest_sales_month_corrected(sales_data):
    if not sales_data:
        return "No sales data available", 0

    totals = monthly_sales_total(sales_data)
    if not totals:
        return "No valid sales data", 0

    highest_month = max(totals, key=totals.get)
    return highest_month, totals[highest_month]

example_sales_data = [(1, 'January', 200), (2, 'January', 150), (3, 'February', 300), (4, 'February', 250), (5, 'March', 100), (6, 'March', 150)]
highest_sales_corrected = find_highest_sales_month_corrected(example_sales_data)
print(highest_sales_corrected)

empty_sales_data = []
highest_sales_empty = find_highest_sales_month_corrected(empty_sales_data)
print(highest_sales_empty)

この修正により、空の売上データの場合には "No sales data available" と表示され、有効な売上データがある場合には最も売上の高い月を正確に特定することができます。

こちらは見事に修正することができました。

こんな感じでDBRXもコードの生成に使えることがわかりました!