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

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

 

OpenAIExpamplesにあるRecipe generatorとは 

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

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

 

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

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

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

 

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

 

 

早速使ってみた 

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

 

[crayon-62bdd034eaf57951956082/]

 

作り方を教えてくれる 

サンプルでは、

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

 

フリットパイ 

 

材料 

フリトス 

チリ 

細切りのチェダーチーズ 

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

サワークリーム 

 

作り方:」 

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

 

実行すると、

  「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: 

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

 

 

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

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

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

 


「Interview questions」でOpenAIにインタビュー項目を教えてもらいました - 日本一詳しいOpenAI入門

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

 

OpenAIExpamplesにあるInterview questionsとは 

公式の説明では、Create interview questions.」とあり、“インタビュー質問の作成”となります。 

 

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

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

サンプルコードでは最初にCreate a list of questions for my interview with a science fiction author:SF作家にインタビューするための質問リストを作成する。)」とあり、相手を決めるとインタビューする項目を返してくれます。 

 

 

早速使ってみた 

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

 

[crayon-62bdd034eba0e419715039/]

 

 

インタビューでの質問を考えてくれる 

実行すると、

What is the inspiration for your writing? 

  1. What themes do you explore in your work?
  2. What is your favorite science fiction film?

となりました。

あなたの文章のインスピレーションは何ですか? 

  1. 作品の中でどのようなテーマを探求していますか?
  2. 好きなSF映画は何ですか?

といった感じでSF作家向けの質問を考えてくれます。

 

実行するたびに質問する内容も変わるので、何回か実行することで 

科学の将来についてどのようにお考えですか? 

科学の哲学についてどのようにお考えですか? 

科学の宗教的な意味合いについてどうお考えですか? 

のように、最初とは切り口が違う質問を考えてくれます。 

 

 

max_tokenを大きくすることで多くの質問を考えてくれる 

max_tokenを64→256にすることで、3問から6問になりました。 

token数で課金対象になるので状況に合わせてにはなりますが、数字を変更することで多くのインタビュー項目を返してくれます。 

1回の実行では質問が比較的似る傾向があるので、tokenを増やすよりは複数回実行させ、これは使えそうという項目をピックアップしたほうが良さそうに見えます。 

 

インタビューの相手やシチュエーションにあわせて質問が変わる 

IT企業のCEOに、採用についてインタビューするための質問リストを作成する。」とすると 

応募者に内定を出すための会社の基準は何ですか? 

  1. 会社の採用プロセスはどのようになっていますか。
  2. 会社の採用方針は何ですか。

のように変わります。 

 

IT企業を製造業等に変えてもそれほど質問内容が変わらないのは、採用についてだからかもしれないです。 

 

有名人であれば固有名詞でも作ってくれる 

サティア・ナデラ(マイクロソフトCEO)にインタビューするための質問リストを作成する。」とする 

テクノロジーの5つの推進力とは何だと思いますか? 

  1. 民主化の原動力となったものは何か?
  2. マイクロソフトによるノキアの買収がどのように進んでいるかについて、あなたの意見を聞かせてください。
  3. マイクロソフトは将来的にどのような位置づけにあるのでしょうか?

のように、かなり具体的な質問が出力されます。 

 

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

一般的な質問が比較的多いものの、インタビューをするときの項目を考えるときに活用できます。固有名詞の例でわかるように、情報が多いほど具体的な質問を返してくれるようです。 

新しい人に会いに行くとき、事前にどんなことを話そうか?と言ったときに気軽に使うこともできると思います。相手に似た有名人で質問を考えることで、より具体的な質問が生成されます。 

 


「Create study notes」でOpenAIから学習方法を教えてもらいました - 日本一詳しいOpenAI入門

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

 

OpenAIExpamplesにあるCreate study notesとは 

公式の説明では、「Provide a topic and get study notes.」とあり、“トピックを提供すると学習ノートを取得”となります。トピックから学習ノートが作られ、こんな勉強をしたらいいということを教えてくれます。 

 

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

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

 

サンプルコードでは最初に「What are some key points I should know when studying Ancient Rome?(古代ローマを学ぶ上で知っておくべきポイントはありますか?)」とあり、最初からトピックを質問形式で投げるようです。 

 

 

早速使ってみた 

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

 

[crayon-62bdd034ec47b695694737/]

 

学習する上でのポイントを教えてくれる 

実行すると、

The Roman’s divided ancient Roman society into “citizenry, slavery.” 

  1. Roman’s organized society according to social class.
  2. The Roman’s became wealthy by ensuring that they had slaves to clean their villa.
  3. The social

となりました。

最後の4の部分が切れてしまっていますが、1つ目に市民・奴隷の話や2つ目に社会階級のように古代ローマに適した学習ノートを返してくれているようです。 

また実行するたびに答えが変わるため、1回目の学習ノートがしっくり来なくても数回確認することで、自分が学習したくなるようなノートを作ることが出来ます。 

 

プログラミングの学習方法も教えてくれる 

Where should I start in learning Python?Pythonの学習は何から始めればいいのでしょうか?)」とすると、

Read 

  1. Put it into practice
  2. And learn something new every day

If you know Javascript (and Programming (and Python (and Computer Science (and MATLAB))) and Computer Science (and MATLAB ()) and Java (and LISP (and Mean ))) and 

You an start at python.org with Beginners Guide to Python or check playingwithpythontour.com  

  1. The video Python 

3 data visualization with matplotlib, pygal 

 What are matplotlibs? 

matplotlib is the plotting module in Python, which provides access to low 

のように返ってきました。どちらもPythonの学習についてノートですが、両方ともに「Matlab」「matplotlib」とデータ分析やデータビジュアライゼーションといったことをやったほうがいいという、単にPythonを身につけると言うより将来を見据えたアドバイスを返してくれます。まずはPythonそのものを身につけるための学習方法を知りたいと思うものの、最初から実践的な学びをしたほうがいいという意味でも的確なアドバイスに見えます。 

※1. はプログラム側に記述があるのでそれ以後の部分が返ってきています。

 

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

新しいことを学ぶ上でのポイントやコツを教えてくれます。 

従来であればGoogle等で検索をかけてヒットする複数のサイトの記事を読み、自分でどんなふうに学ぶかを考え、合わなければ新たに方法を調べるといった流れになると思います。 

現時点ではピンポイントでこれだ!という内容が返ってきてはいないものの、上記のような手順を考えると、OpenAIinstruct(指示する)エンジンは今後、人の様々なことにアドバイスを与えられるように思えます。新しいことを学ぶときや今持っているスキルを伸ばすときなどに活用できます。 


OpenAIの「Classification」で色々なデータを分類してみた - 日本一詳しいOpenAI入門

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

 

すでにOpenAIが持っている情報に対して、少しの教師を与えることで分類してくれるようです。 

 

OpenAIExpamplesにあるClassificationとは 

公式の説明では「Classify items into categories via example.」とあり、“例(教師データ)を使ってアイテムをカテゴリーに分類”となっています。 

 

公式のタグでは「Classification」と1つが付与されています。1つだけ付与されている珍しいExampleとなります。 

プログラムを見るとエンジンは「Davinci」を使っています。 

 

サンプルコードでは1行目に「The following is a list of companies and the categories they fall into(以下は企業とそのカテゴリーの一覧です。)」とあり、企業とそれに対するカテゴリー一覧が表示されているという説明が記述されています。 

他のサンプルでも最初に「The following is(以下は)」で始まるものがあり、先頭にこの記述をすることでルールを推測し、モデルを作ってくれているようです。 

 

 

早速使ってみた 

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

 

[crayon-62bdd034ecce6566432110/]

例として、Facebook、Linkedin、Uber、ユニリーバ、マクドナルドの5社を例に出し、Fedexがどのようなカテゴリーかを推測するモデルです。一般的な言葉だけでなく、企業名といった固有名詞も判断できることがわかります。 

 

実行すると 、

Facebook:ソーシャルメディア、テクノロジー 

LinkedIn:ソーシャルメディア、テクノロジー、エンタープライズ、キャリア 

Uber:運送、テクノロジー、マーケットプレイス 

ユニリーバ:コングロマリット(複合企業)、一般消費製品 

マクドナルド:食事、ファーストフード、物流、レストラン 

 

に対して 、

FedEx:Logistics(物流), Transportation(運送) 

となります。 

 

First RetailingConsumer Goods(一般消費製品), Retail(小売り) 

のような企業だけでなく最近上場したばかりの企業を調べても 、

日本調理機(株):Conglomerate, Consumer 

のように結果が返ってきます。 

 

対して、日本で一番時価総額が高いユニコーン企業である株式会社Preffered Networksでも結果が返ってこなかったので、基本的には上場しているかどうかということのようです。 

 

他の分類も出来ます 

最初の「companies」の部分を「actors」に変えて、情報を用意してみました。 

Edward Regan Murphy: comedian, actor, singer 

Charles Spencer Chaplin: comedian,  filmmaker, composer 

Sir Sean Connery: actor 

Jim Carrey: 

 

もっと語彙力があると様々な分類ができると思われますが、きちんと「comedian, actor」と返ってきました。 

 

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

企業の分類は、よく知っている企業に対して多くのカテゴリーを付与し教師データとして用意することで、上場レベルであれば様々な国の企業のカテゴリーなどを詳細に取得することが出来ます。英語以外の国の企業についても簡単にカテゴリー分けをすることが出来るので、調査等を行うときに非常に役に立ちます。 

上場企業や俳優の様に、ある程度インターネット上にもデータがあるものでいくつかの例を用意するだけで、カテゴリーを付与することが出来ます。ですので、似たような企業を探す・好みの映画を探す・似た傾向のアーティストを探すと行ったことが可能であり、検索エンジンとは違った視点でもデータ集めや活用をすることが出来ます。 


適当な英文を直してくれる「Grammar correction」をいろいろな文章で試してみた - 日本一詳しいOpenAI入門

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

 

OpenAIのExpamplesにあるGrammar correctionとは 

公式の説明では「Corrects sentences into standard English.」とあり、“適当な英文を標準的な英語に修正”となります。文法を気にせずニュアンスで書いた英文を正しくしてくれるものです。 

 

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

プログラムを見るとエンジンは「Davinci」となっております。 

 

サンプルコードでは最初に「Original: She no went to the market.」とあり、まず間違えた英語を入力すると正しく直してくれるようです。 

 

 

早速使ってみた 

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

 

[crayon-62bdd034ed537436697788/]

 

 

ニュアンスで入力すれば正しくしてくれる 

実行すると「She didn't go to the market.」と直してくれます。 

no wentの部分が“didn't go”に修正されているのがわかります。 

 

他にも「i gone school tommorrow.」とやると「I'm going to school tomorrow.」のように 

  • i goneを明日という言葉からI'm going to(行く予定)に修正 
  • tommorrowのスペルミスをtomorrowに修正 

文脈から内容を推測し、スペルミスも修正してくれています。 

単純な文法の修正だけでなく、tomorrow(明日)という単語を理解し、過去分詞形→過去形への修正ではなくbe going to(するつもり)に修正されています。 

 

 

「Standard American English」とあるということは 

Standard American Englishということは、ここを変えることで他の文法にも変えられるのか試してみましょう。 

My favorite color yellow.」を修正してみましょう。 

Standard American EnglishMy favorite color is yellow. 

Standard Englishman EnglishMy favorite color is yellow. 

Standard American Slang; My favorite color is yellow. 

残念ながら、イギリス英語(color→colourを期待)のようにはなりませんでした。また、通常の翻訳ツールでは難しいスラングへの変更も期待しましたが出来ませんでした。 

 

もしかしたら他の変換アプリと同じ様に例文を多く用意することで対応されるかもしれません。 

 

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

私が英語でメールをするときにGoogle翻訳やDeepL翻訳を使い、翻訳しやすい日本語を作って翻訳するという使い方をし、ストレートに伝わるようにします。結果として硬い表現で遣り取りをすることになってしまいます。 

OpenAI 「Grammar correction」を使うことで、ある程度英単語がわかるのであればニュアンスに合わせて英文を作成し、文法を修正してもらうことでより幅広い表現ができます。 

また、翻訳ツールに頼ると英語で考えることがなくなりますが、「Grammar correction」であれば英語を使いながらも自信が無い文法部分を補足してくれることで、一部の英語の壁を取り除いてくれます。翻訳ツールとは違う新しい価値を持ったアプリです。 


文章からSQLクエリを生成してくれる「SQL translate」で色々なクエリを生成してみた - 日本一詳しいOpenAI入門

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

 

OpenAIExpamplesにあるSQL translateとは 

公式の説明では「Translate natural language to SQL queries.」とあり、“自然言語をSQLクエリに変換”となります。文章でデータベースからこんなデータが欲しいと書くだけで、SQLを自動生成してくれます。 

 

公式のタグでは「Code」と「Transformation」の2つが付与されています。 

プログラムを見るとエンジンは「Davinci-codex」となっており、Codex系のエンジンであることが確認できます。  

サンプルコードでは最初に「### Postgres SQL tables, with their properties:」とあり、まずはSQLクエリを生成したい対象のテーブル情報を入れる必要があります。 

 

 

早速使ってみた 

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

 

[crayon-62bdd034edd8f033681740/]

 

サンプルを見ると、Postgres SQLに対して3つのテーブルがあるとなっています。 

  • Employee(社員)テーブル   社員ID、社員名、部門ID 
  • Department(部門)テーブル  部門ID、部門名、住所
  • Salary_Payments(給与)    給与ID、社員ID、給与額、支払日 

 

上記ではわかりやすくEmployeeテーブルのIDを社員IDと記述していますが、サンプルを見ると「id」となっており、id=テーブルID(社員ID、部門ID、給与ID)と自動的に解釈してくれていることがわかります。 

 

このテーブルに対して、「過去3ヶ月間に10人以上の従業員を雇用した部門名をリストアップするクエリ」という自然言語から参照するSQLクエリが生成されます。 

 

実行すると「DISTINCT department.name 

FROM department 

JOIN employee ON employee.department_id = department.id 

JOIN salary_payments ON salary_payments.employee_id = employee.id 

WHERE salary_payments.date > (CURRENT_DATE - INTERVAL '3 months') 

GROUP BY department.name 

HAVING COUNT(employee.id) > 10」と生成されます。 

 

生成したクエリを見ると、「部門をリストアップ」から参照するテーブルが「department」となっているだけでなく、部門テーブルと給与テーブルが結合できないことを解釈し、部門テーブルの部門IDと社員テーブルの部門IDを結合しています。社員テーブルの社員IDと給与テーブルの社員IDを結合するといった複雑な内容も理解しているようです。 

 

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

文章(自然言語)からSQLクエリが生成されるので、前半のテーブル構造までの記述を準備することで非エンジニアでもSQLを理解しなくても自分でSQLクエリを作ることが出来ます。 

データがほしいときに、マーケティング担当者から情報システム部門にこんなデータが欲しいと依頼して出力してもらったデータを確認して分析し、新たな仮設に対して再び依頼するSQL translateを使うことで、マーケティング担当者が自分自身でSQLクエリを作って実行することが出来ます。 

 

Codex系の特徴ですが生成されたクエリが問題ないかを確認するためには、ある程度クエリが理解できる必要があります。意図しないクエリによってデータベースに問題を起こさないためにも、「マーケティング担当者は○○データベースに対してReadOnlyアクセス」のようにアカウントごとに権限をきちっと設計した上で使う必要があります。 

 

運用ルールをきちんと決めることで、非エンジニアでもデータベースを使うことが出来、より幅広いスタッフがデータを活用することが出来ます。 


映画の内容を絵文字で表現!?!?「Movie to Emoji」で色々な映画のあらすじを掴んでみた - 日本一詳しいOpenAI入門

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

 

OpenAIExpamplesにあるMovie to Emojiとは 

公式の説明では「Convert movie titles into emoji.」とあり、“映画のタイトルを絵文字に変換。”となります。 

 

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

プログラムを見ると、エンジンは「Davinci」となっております。 

 

サンプルコードでは最初に「Back to Future(バック・トゥ・ザ・フューチャー)」とあり、それに対して若者(マーティ)・博士(ドク)・自動車(デロリアン)・時計を教師データにしてあります。他にも、Batman、Transformers、Wonder Woman、Winne the Poohなどをサンプルとして入力しています。 

 

 

早速使ってみた 

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

 

[crayon-62bdd034ee625505659135/]

 

 

映画を絵文字で表現してくれる 

実行するとスパイダーマンを「🕸🕷🕸(蜘蛛の巣・蜘蛛・蜘蛛の巣)」と表現してくれました。 

Batmanが「🤵🦇(人・コウモリ)」と人要素があるのに対して、スパイダーマンは蜘蛛の巣・蜘蛛・蜘蛛の巣となっています。 

蜘蛛つながりでTVアニメ「蜘蛛ですが、なにか?」で試したところ「🕷(蜘蛛)」と蜘蛛だけになってしまいました。 

 

他の映画でもためしてみる 

上記だけだとタイトルに含まれている文字で判断している可能性もあるので、タイトルだけでは内容が推測できない映画を試してみます。
※映画のタイトルを調べて出てきた英語名で試しています。
 

パルプ・フィクション:👨👩‍👩‍👧🏻👨👩‍👧‍👦🏻男性家族・男性・家族 

フォレスト・ガンプ:🏃🏻🏃🏻🏃🏻(ランナー・ランナー・ランナー 

風と共に去りぬ:🌪🌪🌪(竜巻・竜巻・竜巻 

ショーシャンクの空に:😎🏅(サングラスの笑顔・スポーツメダル) 

刑務所のリタ・ヘイワース(ショーシャンクの空にの小説時点のタイトル):📓🔪📔(ノート・包丁・ノート) 

君の名は👱👩‍🎨👱👩‍🎨👱👩‍🎨(金髪男性・女性アーティスト×3 

 

いかがでしょうか? 

おっ、と思うものもあれば「風と共に去りぬ」のようにタイトルから推測したのかな?と思うものもありました。 

 

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

忙しい人が短時間で映画の内容を掴むために使えるということもないですが、通常であれば画像分類や音声合成など、様々な目的に合わせて専用のAIを作り込んで使うというのが一般的でした。しかしOpenAIであれば、AIの技術を必ずしもビジネスのために役立てるという目的以外で使うことが出来ます。 

AIとなると、なんのために使えるのか?その効果は何なのか?費用対効果は?みたいな話になりやすいですが、OpenAIが持つ高いポテンシャルのお陰で、一見ビジネスではなんの意味もないようなアプリケーションを作ったりすることも出来るということがわかりました。 

OpenAIの技術により、AI=ビジネス以外の発想が出てくることで、今までには無い活用方法やアプリケーションが出てきそうですね。 


もうバグなんて怖くない。「Python bug fixer」に触ってのOpenAIの驚異を感じてみた - 日本一詳しいOpenAI入門

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

 

OpenAIのExpamplesにあるPython bug fixerとは 

公式の説明では、「Find and fix bugs in source code.」とあり、“Pythonのソースコードにあるバグを見つけて直してくれるアプリ”となっております。 

 

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

プログラムを見るとエンジンは「Davinci-codex」となっており、Codex系のエンジンであることが確認できます。 

サンプルコードでは最初に「Fix bugs in the below function(下記機能のバグ修正)」となっており、### と組み合わせることでバグがあるソースを指定しているようです。 

 

 

 

早速使ってみた 

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

 

[crayon-62bdd034eeecd382917092/]

 

 

自動的にバグが修正される 

実行すると 

import random 

a = random.randint(1,12) 

b = random.randint(1,12) 

for i in range(10): 

    question = "What is "+str(a)+" x "+str(b)+"? " 

    answer = input(question) 

    if answer == a*b: 

        print("Well done!") 

    else: 

        print("No.") 

 

# Exercise 

 

# * Write a program that asks the user to enter a number and then prints out a list of all the divisors of that number. 

# * Write a program that asks the user for a number and then prints out a list of all the divisors of that number. 

# * Write a program that asks the user for two numbers and then prints out a list of all the divisors

と出力されました。 

 

見比べると 

  • importしているモジュール名の大文字小文字の綴り間違い 
  • 2つの数字a, bを文字列と結合するときに文字列に変換 
  • ifの比較で となっている部分を == に修正 
  • if の末尾の「:」が欠けているのを補填 
  • Well done! が文字列なので“ 前後に抜けている‘’ を追加 

といったことが行われています。 

 

import random 

a = random.randint(1,12) 

b = random.randint(1,12) 

for i in range(10): 

    question = "What is "+str(a)+" x "+str(b)+"? " 

    answer = input(question) 

    if answer == a*b: 

        print("Well done!") 

    else: 

        print("No.") 

 

 

練習したほうが良い内容を教えてくれる 

Bug Fixされたプログラムの後にExerciseが表示され、使用したプログラムと似たようプログラムが練習問題として表示されます。単純に「バグがあり自動的にFixします」ではなく、バグを起こさないためにも似たようなプログラムを書く練習をしたほうが良いよと教えてくれる親切設定となっており、トレーニングとしても活用できるようになっています。 

残念ながら、このお題に対する回答は表示されませんが、Codexと組み合わせることで例題の回答自体をOpenAIで生成することができます。 

 

OpenAIの驚異 

この「Python Bug Fixer」は見ての通り非プログラマーには関係ないものだと思いますが、プログラマーにとってストレスであり、時間がかかるBugを見つけてくれて修正までしてくれるようになります。通常であればBugが発生しづらいように丁寧にプログラミングを行い、実行してエラーがあると修正してということを続けて1つのプログラムを作るのに対して、本機能を活用してイメージしているままプログラムを一気に作って「Python Bug Fixer」を使ってバグを修正することで、短時間に生産性高くプログラムを作ることが出来ます。 

 

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

プログラムを作っているほぼすべての会社で活用することが出来ます。複雑なプログラムの修正を行うことは難しいですが、人が発生させやすい誤字脱字といったミスを防ぐことが出来ます。Visual Studio Codeといったコードエディタと組み合わせることで大きな効果が期待できます。 

またCodexによるプログラムの自動生成と組み合わせることで、スキルが高くないエンジニアを成長させながら、ストレスが多いバグ対応の工数を減らすという、どこでも欲しくなる機能を実現することが出来ます。 

 


ジョークも言えるAI。性格を選べるOpenAIの「Chat」で色々な会話を試してみた -日本一詳しいOpenAI入門

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

 

性格を決めることができるみたいなので、性格により回答がかわるかと、公式には対応していると記述がない日本語でも問題なく会話(Chat)できるか試してみました。 

 

OpenAIExpamplesにあるChatとは 

公式の説明では、「Open ended conversation with an AI assistant.」とあり、“AIアシスタントとのオープンエンドの会話を楽しむアプリ”となっております。 

 

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

プログラムを見るとエンジンは「Davinci」を使っています。 

 

サンプルコードでは1行目に「The following is a conversation with an AI assistant. The assistant is helpful, creative, clever, and very friendly.」とあり、文章で”AIアシスタントの会話であること”や性格を入れるだけで、そのシチュエーションにあった会話ができることがわかります。 

 

 

 

早速使ってみた 

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

 

[crayon-62bdd034ef773650991430/]

 

 

 

同じ入力でも毎回答えが変わる 

「会話できる」とあって、毎回違った内容を返してきます。同じ内容の言い回しを変えるのではなく、様々な内容で返してくるのが面白いですね。いくつかの回答を以下に記載します。 

  • I'm very sorry to have to tell you this, but are you are certain you are trying to cancel your subscription?(大変申し訳ございませんが、お客様は本当に解約しようとしているのでしょうか?) 
  • OK, I've cancelled your account. Please let me know if you need any further assistance.OK、あなたのアカウントをキャンセルしました。また何かありましたらご連絡ください。 
  • I'm sorry, but I can only assist you with technical support.(申し訳ありませんが、私がお手伝いできるのはテクニカルサポートのみです。) 

 

AIの性格で答えが変わる 

プログラム内の「The assistant is helpful, creative, clever, and very friendly.」の部分を「The assistant is very humorous and make jokes.」と、アシスタントの性格をユーモアがありジョークを言うようにしてみました。答えが面白いかはさておき、性格を変えることで回答が大きく変わりました。アメリカンジョークですかね? 

  • I'm sorry for the mistake, but maybe it's a good idea to see your doctor.(間違えてしまったのは残念ですが、お医者さんに診てもらうのがいいかもしれませんね。) 
  • What do you mean?(何が言いたいの?) 
  • (Laughter) Why would you want to do that?((笑)なぜ、そんなことをしたいのか?) 

 

 

日本語でも使える 

公式に記述はないですが、最初の文章部分を日本語にしても問題なく使えました。 

以下は、AIアシスタントとの会話です。このアシスタントは、親切で、クリエイティブで、賢くて、とてもフレンドリーです。 

 

Human: こんにちは、あなたは誰ですか? 

AI: 私はOpenAIで作られたAIです。今日はどのようなお手伝いができるでしょうか? 

Human: 契約を解約したいです。 

AI:

  • どういった契約ですか? 
  • 契約を解約することはもちろんできますが、全ての覚書に関するデータは削除されませんし、より高いレベルでサービスが継続できる可能性があります。 
  • すみません、部分的な解約でない限り、契約を解約することはできません。 

 」

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

通常Chatを作るにはChatbot等のサービスで大量の例文やルール訳を行わないと作ることが難しかったチャットサービスが、どんな人(AI)でどんな性格にするかを入力するだけで使うことが出来ます。ルールにヒットする会話はChatbotに対応させて、それ以外の日常的な会話はChatに任せるなど組み合わせることで幅広い会話に対応できるチャットサービスを作ることが出来ます。 


汎用人工知能 OpenAIとは?GPT-3は何がすごいのか? -日本一詳しいOpenAI入門

2015年13月にテスラ社のイーロン・マスクを始めとする実業家・投資家によって設立された人工知能 研究機関”OpenAI”。 

OpenAIのミッションはartificial general intelligence (AGI)が全人類に利益をもたらすことを確実にすること。この先の世の中に大きく影響を与えるAIが正しく使われ、人々に有益な結果が出るのであれば、それが自分たちOpenAIでなくても問題ないとなっています。 

 映画:ターミネーターのように未来に悪意あるAIが人々に害するようなことが起きる前に、AIが人々に有益な世の中を作るということでしょうか? 

 

 

OpenAIが提供するアプリケーション 

現時点では、下記のように大きく3つあります。 

1. 2016年4月から提供されている強化学習アルゴリズムの検証プラットフォームOpenAI Gym」 

2. 教師なし言語モデル「GPT-3 (Generative Pre-trained Transformer 3) 

3. GPT-3の技術を使い自然言語と画像処理を組み合わせて新たな画像を生み出す「DALL·E 

 

AIは学習して最適な答えを出すことに向いていますが、ゼロから新しいことを生み出すクリエイティブなことには向いていないと言われています。しかしOpenAIの凄さは、GPT-3は状況に合わせた新しいアイディアを無数に生み出したり、DALL·Eはアボカドの形をしたソファのような画像を無数に生成したりすることが出来ます。 

中でも、汎用人工知能といっても過言ではないGPT-3は今までのAIアプリケーションとは大きく異なります。 

 

 

GPT-3とは 

技術的な特徴としては、モデルに含まれるパラメータ数が約1750億個あることです。 

GPT-32020年5月に発表されましたが、20192月に発表されたGPT-215億個から1年もかからず100倍以上になっています。この速度でパラメータ数が増えることを考えると、人間の脳にあるシナプス(神経細胞のつなぎ目)の数100兆個を数年で超えることが予想されます。 

 

数年前まで汎用的な「強いAI」は実現するにはまだまだ時間がかかると思われていましたが、GPT-3を使うと既に実現していることが実感できます。 

そのため、多くの言葉やコードを扱うアプリケーションを教師なしモデルで作ることが出来ます。 

 

 GPT-3の汎用性とは 

従来、AIの技術を使おうとすると翻訳・チャット・Q&Aなど1つ1つの用途に合わせて学習を行い、専用性の高いAIを作る必要がありました。 

 

例えば、Azureのサービスについて答えてくれるチャットを作ろうとすると、 

  1. Azure QnA Makerサービスに、学習してほしいページの情報を集めて学習させる 
  2. Azure Bot Serviceと上記をつなげ、意図した質問をするためのチャットボットを構築する 

という手順となり、1と2の知識・時間が必要でした。 

 

また、日本語を英語に変換するような社内チャットを作ろうとすると 、

  1. Azure Bot Serviceでユーザーから翻訳したい文章をやりとりするためのチャットボットを構築 
  2. 上記とTranslateサービスをつなげて翻訳したい言語を指定する 

といった新たなサービスを立ち上げる必要がありました。 

 

そのため社内でDX推進に向けたデータ化やAI活用などを進めるにも、多くの技術を理解する必要があり、技術・工数・金額など多くの課題にあたる状況にありました。 

 

これに対してGPT-3では、会話、アイディア生成、ソースコード作成・修正・翻訳・Q&Aなど、1つのエンジンで作ることが出来ます。ここで上げた例はほんの一部で、様々なことをGPT-3だけで実現することが出来ます。 

 

例えば、OpenAIのサイト上にあるExamplesの1つ目Chatと2つ目Q&Aのプログラムを比較しても、若干パラメータが異なるだけで2つの異なるアプリケーションを動かすことが出来ます。

 

[crayon-62bdd034f0022984432272/]
[crayon-62bdd034f0032511011577/]

 

 

GPT-3の優れている点 

上記以外の特徴として、Codexという文章からそれを実行するプログラムを自動生成する機能があります。例えば「明日の東京の天気を取得」と入力するだけで、10秒もかからずに以下のプログラムが生成されました。 

実は以下のプログラム自体は動かないのですが、通常であれば作り方やAPIの使い方を調べるなどの時間をかけないと作れないようなものが一瞬でできるため、あとは問題点のみを修正すればすぐに使えるようになります。No Code, Low Code以外の流れでもプログラムを書かなくて良くなりそうですね。 

 

[crayon-62bdd034f0036818063084/]

 

 

 

他の特徴としては、教師なし言語モデルながら教師ありで使うことも出来ます。 

汎用人工知能を自社で必要な学習をさせた上で、社内で活用するといったことが出来ます。 

 

 

まとめ 

主にGPT-3を中心にOpenAIのことを紹介させていただきました。ここに上げていることはごく一部のみで、触っていくとOpenAIの凄さを体験することが出来、今までのサービスでは実現が難しかったことが、OpenAIならできるということがわかります。