文章で説明された道案内をOpenAI「Turn by turn directions」でシンプルな道案内に変換してみた – 日本一詳しいOpenAI入門

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

OpenAIのExpamplesにあるTurn by turn directionsとは

公式の説明では「Convert natural language to turn-by-turn directions.」とあり、“自然言語をターン・バイ・ターン・ガイドに変換”となります。

” turn-by-turn directions”とはGoogleマップなどで経路を検索した詳細に表示される

1. 国道○号線を真っすぐ進みます

2. 〇〇交差点を左折して、旧○号線を進みます

3. 〇〇を右折して目的地は右です

のようなナビゲーションを指します。

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

プログラムを見ると、エンジンは「davinci-instruct-beta」という「davinci-instruct」というエンジンのβ版となっています。文章を理解して要約するので「davinci」かと思いましたが、指示する要素があるので「davinci-instruct」なのかもしれません。

サンプルコードでは最初に「Create turn-by-turn directions from this text:(このテキストからターンバイターンの案内を作成します。)」とあり、” turn-by-turn directions”を作ることが最初に明示されています。

早速使ってみた

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

1Python Code 
2
3‘’’ 
4
5import os 
6
7import openai 
8
9 
10
11openai.api_key = os.getenv("OPENAI_API_KEY") 
12
13str = """ Create turn-by-turn directions from this text: 
14
15 
16
17Go south on 95 unto you hit Sunrise boulevard then take it east to us 1 and head south. Tom Jenkins bbq will be on the left after several miles. 
18
19 
20
211.""" 
22
23 
24
25response = openai.Completion.create( 
26
27  engine="davinci-instruct-beta", 
28
29  prompt=str, 
30
31  temperature=0, 
32
33  max_tokens=64, 
34
35  top_p=1.0, 
36
37  frequency_penalty=0.0, 
38
39  presence_penalty=0.0 
40
41) 
42
43 
44
45print(response["choices"][0]["text"]) 
46
47‘’’

道案内の文章をターンバイターンナビゲーションに変換してくれる

道案内情報として「Go south on 95 unto you hit Sunrise boulevard then take it east to us 1 and head south. Tom Jenkins bbq will be on the left after several miles.(95号線を南下し、Sunrise boulevardにぶつかるまで行き、そこから東に進み、US1に出て南に向かいます。Tom Jenkins bbqは数マイル先の左手にあります。)」と目的地であるTom Jenkins bbqまでの行き方を説明しています。

実行すると、

「 1. Drive south on 95.(95号線を南下する。)

  1. Turn left onto Sunrise Blvd.(Sunrise Blvdを左折します。)
  2. Turn left onto US-1 SE.(US-1 SEを左折します。)
  3. Tom Jenkins BBQ will be on the left.(Tom Jenkins BBQは左手にあります。) 」

となりました。

元の文章を見ると、「Sunrise boulevardにぶつかるまで行き、そこから東に進み」という部分をその前の南下したことから東=左折としています。単純に文章を分割しているだけでなく、方角を解釈して右折・左折といった正しい指示をしてくれます。

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

いくつかのシチュエーションで試みたのですが、なかなか思うような結果を返してくれませんでした。これはbeta版だからそのような結果になった可能性が高いと思われます。

OpenAIでは、文章から方角や方向と言った地理的な内容まで理解し文章にしてくれます。ナビゲーションだけであればGoogleマップやYahoo!カーナビのようなアプリケーションで行うことが出来ますが、文章から地理的なものまで理解するOpenAIの凄さを改めて感じました。

この記事を書いた人

azure-recipe-user