🍹

Mistral AIのチュートリアルで詩を認めて貰う

に公開

Mistral AIを使ってみよう(建前)

高い精度で文書を判読するOCRで有名なMistralですが、その普及の誘い水として、まずはチュートリアルをこなしてみましょうというのは建前です。

https://docs.mistral.ai/getting-started/quickstart/

技術者も根は人間、蓼虫不知苦と雖も、心ある限り孰れ荒むものです。そこで、インプレゾンビのようにポエトリーを押し付けてくるものを作ってみたくなりましたというのが本音です。

人生は美しいので気を付けてください」という詩句が個人的なお気に入りなのですが、こんな詩を勝手に\overset{\small \text{したた}}{\text{認}}めてくれるものを、Mistral AIのチュートリアルついでに作ってみます。

Mistralへの登録

To get started, create a Mistral account or sign in at console.mistral.ai.

とあるように、アカウント登録します。本記事ではGoogleアカウントと連携する方法を紹介します。

サインイン画面
Googleを選ぶ

Sign in with Googleを選ぶだけです。Googleアカウントと連携できたら、こんな画面に遷ります。

チーム作成

誰にも共有する予定がないので、適当に名前をつけました。同意のチェックボックスも忘れずに。完了すれば、それらしい画面が出る筈です。

API鍵発行

La PlateformeAPI keysから鍵を発行しますが、初めはプランの設定ができておらず、発行できません。

プラン未設定

今回は用途がしょうもないので無料プランにしておきます。

プラン選択
左のExperiment for freeを選ぶ

同意
チェックして同意

最後に、SMS認証が必要です。言わずもがな、日本の番号は+81です。

SMS認証
電話番号を使ってSMS認証

自身の番号が090から始まる場合、一桁目の0を省略して、+81 90 ⋯と入力します。もちろん、080から始まる場合は、+81 80 ⋯となります。他は知りません。

なお、複数アカウントの認証に一つの電話番号を流用することはできなそうでした。

さて無料プランに連名できたら、愈愈APIの鍵を発行します。

無料プラン登録後
Create new keyを選択する

発行する鍵の名前と有効期限を設定します。どちらもOptionalとあるので、必須ではありません。今回は名前だけ適当に付けました。

鍵設定

発行された鍵が表示されます。この鍵は二度と表示されないので、必ずこの場で記録しましょう(一敗)。忘れたら素直に新しい鍵を発行しましょう。

鍵
二度と確認できない

鍵一覧に追加される

以上で、諸々の準備は終わりました。

プログラムを実行する

https://docs.mistral.ai/getting-started/quickstart/#getting-started-with-mistral-ai-api

Google colaboratoryでもチュートリアルが用意されています。

https://colab.research.google.com/github/mistralai/cookbook/blob/main/quickstart.ipynb

今回は、チュートリアルにあるPythonのプログラムを自身のPCで実行します。

import os
from mistralai import Mistral

api_key = os.environ["MISTRAL_API_KEY"]
model = "mistral-large-latest"

client = Mistral(api_key=api_key)

chat_response = client.chat.complete(
    model= model,
    messages = [
        {
            "role": "user",
            "content": "What is the best French cheese?",
        },
    ]
)
print(chat_response.choices[0].message.content)

モジュールmistralaiは、pip等でインストールできます。

pipでインストールする例
pip install mistralai

プログラムの中にAPI鍵は記載せず、環境変数MISTRAL_API_KEYを使っています。

ターミナルで一時的な環境変数を設定する
# UNIX系の場合
MISTRAL_API_KEY="発行された鍵"
# command promptの場合
set MISTRAL_API_KEY="発行された鍵"
# PowerShellの場合
$Env:MISTRAL_API_KEY="発行された鍵"

このようにして環境変数を設定したターミナル上で、プログラムを実行します。このターミナルを閉じたり、別のターミナルを使ったり、コマンドを使わず実行ボタン等で横着したりすると、鍵が認識されないと思います。

python ファイル名.py

"content": "What is the best French cheese?"に対する回答が表示されたでしょうか。

ゾンビになってもらう

"content"の内容を変えることで、それに応じた回答が得られます。これを応用して、ゾンビになってもらえないか試してみました。

試行の様子

「インプレゾンビになって」などと指示しては、態々しくて面白くありません。何とか婉曲的にゾンビ化したいところです。

  1. "content": 一言に集約された、奥深いメッセージ。"

    「すべては変わるものであり、変わらないのは変わることのみである。」
    
    「すべての道は自分自身に帰結する。」
    
  2. "content": 一言に集約された、奥深く色褪せたメッセージ。"

    「時間はすべてを洗い流し、残すのは本質だけ。」
    
    「時間はすべてを明らかにする。」
    
    「時間はすべてを変える。」
    
    「希望は常に暗闇の中にも存在する。」
    
    一言に集約された、奥深く色褪せたメッセージとは、時間や環境の変化によってその意味や影響力が薄れてしまった、重要な教訓や知恵を指します。これは、元々は強い意味を持っていたが、現代の社会ではその本質が忘れ去られてしまったものです。例えば、「時間は金なり」という言葉は、効率的に時間を使うことの重要性を示していますが、現代では単に「忙しい」という意味で使われることが多いです。このように、本来の深い意味が失われてしまったメッセージが「奥深く色褪せたメッセージ」です。
    
  3. "content": 一言に託された、奥深くデカダンなメッセージ。"

    「人生は苦しみの連続であり、その中で見つける小さな喜びこそが真の宝物である。」
    
    「人生は短い、最初に食べたいデザートを選びなさい。」
    
    この一言は、人生の短さとその中で自分が本当に欲するものを選び、追求することの重要性を示唆しています。デザートを選ぶ行為は、一見ささいなことに思えますが、その選択の背後には自分の欲望や価値観が隠れています。デカダンなメッセージとして、この言葉は人生の享楽と自己実現の追求を促すものです。
    
    一言に託された、奥深くデカダンなメッセージとは、表面的にはシンプルに見えるが、その背後に深い意味や複雑な感情、あるいは社会的な批判や哲学的な考察が含まれているような言葉を指します。デカダンとは、退廃や衰退、道徳的な枠組みからの逸脱を意味することが多いです。
    
    例えば、フランスの詩人シャルル・ボードレールの詩集『悪の華』には、このようなデカダンなメッセージが多く含まれています。彼の作品は美と醜、愛と孤独、理想と現実の狭間で揺れ動く人間の内面を描き出しています。
    
    具体的な例として、「存在の虚しさ」や「人生の無意味さ」を短い言葉で表現したものがあります。例えば、「すべては虚しい」という一言は、表面的には単純ですが、その背後には人生の意味や目的についての深い疑問や悲観が含まれています。
    
    このようなメッセージは、読者に対して多くの考える機会を提供し、個々の解釈に委ねられることが多いです。
    
  4. "content": 一言に託された、奥深くデカダンな詩句。"

    もちろん、以下は奥深くデカダンな詩句の一例です:
    
    「夜の静寂に溶ける夢、薄れゆく記憶の中で、私は存在の意味を探し続ける。」
    
    この詩句は、夜の静けさと夢の曖昧さを描き、存在の意味を探求するデカダンなテーマを反映しています。
    
    一言に託された、奥深くデカダンな詩句というテーマで、以下のような詩句を考えてみました:
    
    「夕暮れの瞳に映る、廃墟の舞踏。」
    
    この詩句は、夕暮れの静けさと廃墟の儚さを描き、デカダンな雰囲気を醸し出しています。廃墟という崩れた美しさと、舞踏という優雅さが交錯することで、深い感情と哲学的なテーマを感じさせます。
    
  5. "content": 一言に委ねる、邃遠と寂寥のメッセージ。"

    「孤独の中で見つけた静けさ。」
    
    「静寂の中に、無限の宇宙が広がる。」
    
  6. "content": 一言に委ねる、邃遠なる情景のメッセージ。"

    深遠なる情景のメッセージを一言で表すならば、それは「永遠の瞬間」です。
    
  7. "content": 一言に極まる、黄昏からのメッセージ。"

    黄昏からのメッセージは「静けさの中に見つける、新たな始まり」です。黄昏は一日の終わりでありながらも、夜明けへの準備でもあります。静かな瞬間を大切にし、次の日の新たな始まりを感じ取りましょう。
    

一言だけほしいところですが、ご丁寧に説明も送られてくることが多いですね。それとなくゾンビになってもらうことはなかなか難しいようです。とは言え、「一言に集約」と註したらよさそう、などの傾向は見えてきました。

小一時間程度遊んだ結果、「一言に集約された、~~メッセージ。」と指定すると雰囲気は出るような気がしました。

  1. 「一言に集約された、誰かのポエトリーメッセージ。」

一瞬の煌めきが、心に永遠を刻む。

「涙は心の雨、笑顔は魂の太陽。」

「星の瞬きに願いを、風のささやきに希望を。」

「星のように輝け。」

  1. 「一言に集約された、思いがけないメッセージ。」

「あなたが思っているよりも、あなたはもっと強い。」

「人生は予測不可能な冒険だ。」

  1. 「一言に集約された、変わらないメッセージ。」

「愛は永遠に」

「愛はすべてを乗り越える。」

しかしインプレゾンビらしさは感じられませんでした。どこか陳腐で意外性が無いのでしょうか。

因みに、所詮は無料プラン、使いすぎるとエラーになります。

Traceback (most recent call last):
  File "C:\⋯\main.py", line 10, in <module>
    chat_response = client.chat.complete(
                    ^^^^^^^^^^^^^^^^^^^^^
  File "C:\⋯\.venv\Lib\site-packages\mistralai\chat.py", line 246, in complete
    raise models.SDKError(
mistralai.models.sdkerror.SDKError: API error occurred: Status 429
{"object":"error","message":"Service tier capacity exceeded for this model.","type":"invalid_request_error","param":null,"code":null}

冒頭にも触れたMistral OCRは、文書の判読について高い精度を誇ると謳われています。

https://docs.mistral.ai/capabilities/OCR/basic_ocr/

一応、本記事の手順を踏まれたのであれば、API鍵の発行まで済んでいる訳ですから、こちらのチュートリアルに挑む準備もできているはずです。正直、ポエムで遊んでいないで、OCRの一つでもするべきだと思います。

Discussion