chinochem

Chinolab

【有機分子記述法開発】

有機分子記述法開発 03

前回は欲しい機能についていろいろ考えていましたが、今回は少し、AIそのものの思考力について踏み込んでみます。

この課題について考えるにあたり、AIにいろいろとプロンプトを投げて、図を生成させてみました。すると、AIは 思った以上に、分子自体の構造については正確に覚えているようなのです。

例えば、Copilotを用いて、エルトプラジンの分子構造を書かせたところ、次のように生成してくれました。 (エルトプラジンを選んだ理由は、比較的構造が綺麗というだけで特に深い意味はないです。)

Copilotが生成したエルトプラジン

fig.1 Copilotが生成したエルトプラジン

一方、通常みられる形で書かれたエルトプラジンは次の構造です。

Copilotが生成したエルトプラジン

fig.2 エルトプラジン(出典:Wikipedia/エルトプラジン)

こう見ると分かるように、結構頑張って元の構造に近づけているように思います。
このように、どうもAIは、図を描くのはヘタクソですが、結合の順番・位置に関しては結構正確に覚えているようなのです。

私は、この事実を通し、LLMに対して、位置と結合の様子を記述するように命令し、あとはそれを分子として書き出せるようにする変換スクリプトがあれば、 LLMの思考力や知識を大幅に生かしやすくなるのではないかと思いました。
これは、人間が分子を記述する際にも読みやすくなるはずです。

あくまでもイメージですが、例えばt-ブチルアルコールは次のように記述できるようにするわけです。

<Image lang>
<atoms>
    1:C
    2:C
    2,1:C
    2,2:OH
    3:C
</atoms>
<bond>
    1-2-3
    2-2,1
    2-2,2
</bond>

これは、<atoms>の部分で原子を順番に並べ、そして、<bond>の部分で結合を記述するという方法で書いています。

こうしておけば、例えば、LLM(AI)に対して、「そのままLiを反応させたらどうなる?」と聞いたら、LLMは、
「ヒドロキシ基があるから、ここのOHはOLiに変わるはずだな。だからさっきのOHをOLiに書き換えよう。」
と考えて

<Image lang>
<atoms>
    1:C
    2:C
    2,1:C
    2,2:OLi
    3:C
</atoms>
<bond>
    1-2-3
    2-2,1
    2-2,2
</bond>

と書き換えてくれるのではないかと期待しています。

また、地味にうれしいポイントとして、原子に状態を付与することができるので、例えば、この
t-BuOLiであれば

<Image lang>
<atoms>
    1:C
    2:C
    2,1:C
    2,2,1:O[delta-ne]
    2,2,2:Li[delta-po]
    3:C
</atoms>
<bond>
    1-2-3
    2-2,1
    2-2,2,1-2,2,2
</bond>

として、δ-/δ+性を付与できるのではないかと考えています。

あとは、これをパースすることで、こんな感じの図にできるようにするわけです。

tert-BuOLi

fig.3 生成後のt-BuOLiの図

こうしておけば、短めで、比較的直観的で記述しやすい方法で分子が書けるのではないかと考えました。
LLMはこの構造を書くことにだけ注力をして、描画側にはできる限りトークンを消費させないようにするわけですね。

長くなってきたので、続きは次回にしようと思います。

前回:有機分子記述法開発 02 次回:有機分子記述法開発 04