はじめに
はじめまして。システムエンジニア35歳限界説というのがありましたが、なんとか生き延びて今年、アラフィフからアラカンになりました。アラカンはアラウンド還暦の略らしく、わけわからんですよね。
さて、この年齢になると少し自分の時間が持てるようになってきます。子供からも部下からも相手にされませんので。この時間を使って数年前から物性物理学の社会人博士課程にチャレンジすることにしました。
その中で、Qiitaさんには随分お世話になったので、徐々に還元していきたいと思っています。
例えばTexの使い方は、当時私が学生だった時代から進化しLuaTexになったり、動作環境はWinOSを直接動かすよりもWSL2経由のほうがいいとか、さらにコンテナのほうが便利だとかいろいろ情報をいただきました。
何が言いたいか早く教えてくれ・・・
さて、研究生活や私たちの業務活動において、情報取得のひとつに、論文や小難しい文書を読む行為があるかと思います。これが英語だったりすると面倒で、知りたいことが本当に書いてあるかすぐにわからないわけです。早くしなさい!と、いらいらするお母さんのようになってしまいます。この発言は近年においてはだめですね。お父さんもいらいらします。
なので、この問題を解決する方法は、もっと(英語も含め)勉強しろやってことになるわけですが、そんな努力も億劫になる年頃です。なので、お金で解決する方法を見出しました。この記事はおよそ30ドルを使ってOpenAIのAssistants APIを活用してみたというお話です。
(情報は2023/11/17時点)
用意したもの
- ChatGPT GPT-4 API (8K context 1000トークン Input 0.03ドル, Output 0.06ドル)
- これはよくわからないので、最初10ドルをチャージして、オートチャージはしない設定としました。正確には"Auto recharge"と言うようです。
- ChatGPT Plus (毎月 20ドル)
- 今回の話はこれは必須ではありませんが、検証比較のために使ってみました。
- 小難しい論文を用意
- 生成AI関連は著作権とか難しいので、この記事では自分がやっと2023年8月に掲載されることになった研究論文Bose glass and Fermi glassを使ってみました。あまりにITとは違う分野なので、内容は気にしなくて結構です。
Assistants APIについて
Assistants APIは、2023年 11月 6日 に開催された OpenAI DevDayで発表された新しい機能です。3つのtoolsが用意されています。これであなた好みのAssistantができるわけです。
- Functions で、Assistant に対し予め関数の情報定義します(Sampleだと天気予報を呼び出すプログラムがありました)。
- Code interpreter を On にすると、外部APIや定義した関数を呼び出すことができます。
- Retrieval (取り返すことという意味だと思ったのですが、コンピュータの世界では検索を意味するんですね)を On にすると UploadしたファイルからAssistantが知識を得ることを可能にします。
最後に、Code interpreter や Retrieval に使うためのファイルをFILESにてUploadします。FILESには複数Uploadも可能です。
例えば、ある複数のpdfレポートのデータを抽出し自分のオリジナル関数を使って分析し、新しいレポートに仕立てることも可能になると思われます。独自性の強い高度なAssitantを作成できれば、OpenAIさんのMarket Placeで売ることも今後できるようですね。みなさん頑張りましょう。
では、Assistants API で何をしたかったか?
これら機能の中でRetrievalは、UploadしたファイルからAssistantが知識を得ることを可能にします。今回は、論文を読み込ませたAssistantが、さも論文を書いた研究者のようにその内容についての質問の受け答えができて研究者ぶることができるのか?ということを知りたいわけです(Code interpreter使いませんでした)。
Assistants APIの設定
Assistants APIの設定は下図のようにしました。ChatGPTのAssistants APIの使い方は、多くのWebサイトにありますが、にゃんたのAI実践チャンネルさんのサイトを参考にさせていただきました。簡単な操作方法は下記のとおりです。
- https://openai.com/ にログインし、APIを選択
- 左にあるバーの[Playgroud]を選択すると下記のような画面が出てきます。
- [Playgroud]の右は[Assistants]になっていることを確認します。
- Nameは好きな名前を入力
- Instructionsは、プロンプトエンジニアだと凝ってもいいでしょう。これからアシスタントしてもらいたいことが明確であれば、立場を明確にするのもよいかと思います。今回は研究で使った物理の論文に関してアシスタントをしてもらおうと思うので、シンプルに「物理の研究者」ということを書いておきました。
- Model は利用料金にも関係しますが、一番上にある gpt-4-1106-preview を使いました。
- FILESは Addをクリックし、論文をUploadします。
- 最後に(画面では写っていませんが)SAVEボタンを押します。
これで設定は完了です。
では質問タイム
さっそく、質問をしようと思うのですが、注意点があります。SAVEボタンを押したら論文データがすぐに反映されるわけではないようです。SAVE直後はまず一般的な回答が出力され、その後しばらく経ってから論文データが反映されました。
明示的に論文データがInputされているかどうかは、下記のようにチェックできました。
- ChatGPT Plus の場合
- Assistants API の場合
データにはっきり入っているという宣言はわかりすいですね。
なので、一番聞きたいことを聞いてみました。
Q1. 高橋らは、何が言いたかったんでしょうか?
A1. 高橋らは、フェルミグラスからボースグラスへの遷移、特にその普遍的な特徴と理解に焦点を当てたかったようです
回答続き
彼らは、二次元の乱れた超伝導体が冷却される時、フェルミグラス状態からクーパー対(ボソン)が生じ、これらがボースグラスを経て超伝導状態へと遷移することを実験的に研究しました。特に、二次元の臨界シート抵抗値 ( R_c = h/e^2 ) に近いボースグラスからフェルミグラスへの普遍的な遷移を提案しました。これは、フェルミグラスからボースグラスへの遷移を示すような、新しい実験的な知見であり、異なる物質系にまたがるこの遷移の普遍性に光を当てています。
彼らはまた、β-関数分析を用いて、この遷移をデータとして描写し、複数の異なるシステムにおいても同様の現象が観測されることに注目しています。これは、局在の程度が変化し、弱い局在の領域でさらに局在が弱まる可能性を示唆しています。従来の理解に反する現象も観測されたことから、これらの発見が二次元乱れた超伝導体の量子相転移に対する理解を新たな段階へと押し上げたと言えます。
つまり、高橋らの研究は、これまでの理論や実験に基づく既存の枠組みの中で局所的に理解されてきた電子状態の遷移に対して、新たな普遍的な観点を提供しており、材料科学や凝縮系物理学の領域での今後の研究に有益な情報をもたらしたと言えます。彼らが伝えたかったのは、ボースグラスを含む量子相転移が、普遍的な原理に基づいて説明できる可能性があるということです【9†source】。
私が言うのもなんですが、非常によくまとまっています。一緒に研究をやっていたのかと勘違いするほどです(少し大げさ)。
さらに、ほかの質問として「一般的な」質問(Q2)をしてみます。Bose glassという物理現象があるのですが、ChatGPT Plusだと当然「一般的な」回答をしますが、Assistantは、一般的な回答のあとに、論文で述べたことを織り交ぜて引用し、最後にまとめています。研究者っぽいです。このあたり、内部的なプロンプトがどうなっているのか興味がわきますね。
Q2. Bose glassは存在すると思いますか?
A. ボースグラスの存在については、物理学の研究コミュニティの中で幅広い議論がありますが、実験データや理論的な研究によってその存在が示されています。(折り畳み) ボースグラスは無秩序な超伝導体や極低温にある量子系の局在状態に関連したフェーズとして考えられており、研究者たちはこのフェーズを実験的に検証しようと努めています。
例えば、先ほど引用した高橋らの研究では、二次元の超伝導材料内におけるボースグラスからフェルミグラスへの遷移を特徴付けるための実験的なレナルジー群フローを発見しています。彼らの分析は、ボースグラスの実証可能な証拠と見なされえ、またその振る舞いが、フェルミグラスからボースグラスへの遷移を理解する上での重要な手がかりを提供しています【7†source】。
回答続き
ただし、ボースグラスは極めて特殊な状況下でのみ発生するため、研究コミュニティ内ではその特性と正確な理解が活発に研究されており、新しい実験技術や理論モデルによって継続的に洞察が深められています。専門家の間でも意見の一致を見ないこともあるため、ボースグラスの存在とその性質については継続的な探究が必要であるといえます。専門用語の翻訳に若干変なところがあるにしろ、論理展開は極めて的を得ていました。
まとめ
ほかにもいろいろな質問をしてみましたが、説明の仕方とその内容については、その論文を書いた研究者のような振る舞いができているように思えました。"数式"の部分も説明ができたら本当に脅威ですね。操作の簡易性もあり、今回は目的は達せられたかと思います。論文本体に加えて、その論文の参考文献リストを追加でUploadすることで、もっと厚みのある回答ができるのではないかと思います。
今回使用しなかったFunctionsを使って、読み込ませた論文の理解度テスト作成したり、矛盾した複数のノウハウ本を読み込ませるとどうなるか?などいろいろ試してみたいですね。
でも、人間の理解とか、知るということって一体なんなんですかね。わからなくなってきました。