CrossRoad

XRを中心とした技術ブログ。 Check also "English" category.

Even Realities G2とAzure OpenAIを連携させてみた

Eveny Relities G2には、スマートフォン向け公式アプリが提供されており、その中にEven AIという機能があります。

Even AIはいわゆるChatGPTで、問いかけに対して返答してくれます。モデルはPerplexity AIかEven AI(中身は不明) ですが、自分の任意のモデルを選ぶ機能は入っていません。

そこで、今回は自分のモデルを使うための第一歩となる検証として、Azure Open AIに問い合わせたテキストがG2に表示される処理を作ってみました。

検証した環境

  • Mac OS Tahoe 26.2
  • Python 3.14.2

1. Azure Open AIとは

Azureが提供している機能の1つです。ChatGPTの各種モデルを使うことができます。

Open AIとAzure Open AIの違いはこちらをご参考ください。
ent.iij.ad.jp

Azureの中でリソースを作り、そこでendpoint URLとAPI Keyを取得し、これらをPythonプログラムから呼び出すこともできます。

2. Azure Open AIのリソース構築

こちらの手順を参考にさせていただきました。書いてある通りの手順で構築できたので、説明は省略します。
qiita.com

Azure上でAzure OpenAIのリソースを作ると、「Foundaryポータルに移動」というボタンが表示されます。以下の画像の通りです。

Azure OpenAI on Azure Portal

Microsoft Foundaryの画面例です。このように質問して回答を表示させることができます。

Microsoft Foundary

この画面にある「コードの表示」を実施すると、このモデルを呼び出すためのサンプルコード、エンドポイント(アクセス先のURL)、API Keyが表示されます。

Sample code for calling Azure Open AI

3. Pythonを使ってAzure OpenAIを呼び出す

試しにPythonを選んでコードを表示したところ、Microsoft Foundaryの画面で試した質問 (ここでは「2023年の日本で一番有名な本の〜」) の質問がjson形式で入っていました。

#azure_open_ai_sample.py
from openai import OpenAI

endpoint = "<your endpoint>"
deployment_name = "gpt-4.1-mini"
api_key = "<your-api-key>"

client = OpenAI(
    base_url=endpoint,
    api_key=api_key
)

completion = client.chat.completions.create(
    model=deployment_name,
    messages=[
        {
            "role": "user",
            "content": "2023年の日本で一番有名な本のタイトルと要約を教えてください",
        }
    ],
)

print(completion.choices[0].message)

endpointとapi_keyを入力してこのように実行すると、回答がcmdに表示されます。

$ python3 -m venv .venv
$ . .venv/bin/activate
(.venv) python3 
$ python3 ./azure_open_ai_sample.py

4. Azure OpenAIへの問い合わせ結果をG2で表示してみる

ここからが本題です。先ほどのAzure OpenAIへの問い合わせ結果をG2に表示してみました。

すでに動いているコードがPythonであり、[PCとG2を接続して検証しているリポジトリ] (https://github.com/i-soxi/even-g2-protocol) があったので、このリポジトリをforkして確かめました。

環境構築方法や動作方法はReadme.mdに記載しました。

github.com

このリポジトリをclone or zipダウンロードし、Azure OpenAIで作ったエンドポイントURL, API Keyを入力しておくことで、PCとG2を接続してAzure Open AIの回答結果をG2に表示できます。

以下は、Azure Open AIの回答の最後部分をprintで表示した例です。

=== Page 7: 173 bytes, 10 lines ===
  Line 0: '新たな目標や方針を発表し'
  Line 1: 'ました。'
  Line 2: ' '
  Line 3: 'このほかにも、世界各地で'
  Line 4: '重要な政治・経済・社会の'
  Line 5: '出来事がありました。もし'
  Line 6: ' '
  Line 7: ' '
  Line 8: ' '
  Line 9: '  '
  Line 10: ''

=== Page 8: 109 bytes, 10 lines ===
  Line 0: '特定の分野や地域について'
  Line 1: '詳しく知りたい場合は教え'
  Line 2: 'てください。'
  Line 3: ' '
  Line 4: ' '
  Line 5: ' '
  Line 6: ' '
  Line 7: ' '
  Line 8: ' '
  Line 9: '  '
  Line 10: ''

今回検証した限りでは、G2では1行に13文字程度しか表示できませんでした。(公式に公開されるG2向けSDKではそういう問題はないと思います)

そのため、不自然なところで改行しています。

また、1つのPage = 1つの画面の大きさ で10行表示できるはず、6行を超えるとエラーになってしまうため、Line6以降が空欄になっています。

Page8付近をG2で表示したときの画面です。

Customed Teleprompter Example of G2

5. おわりに

改行の見づらさはありますが、これでEven Realitiesが準備しているLLM以外を使うことができます。
Azure Open AIの呼び出し方はわかったので、公式SDKが出たときにも使えそうですね。