
昨年 2024 年 6 月にリリースされた Claris FileMaker 2024(バージョン 21.0.1)から、新しい AI 関連のスクリプトステップおよび関数が追加されました。
前回のブログ(「FileMaker で AI やってみる (0)」)では、FileMaker ビギナーズ & ジュニアズのみなさんに、FileMaker で「AI」を使うとはどういうことなのか、何ができるのか、Claris パートナーの先達のみなさんはどのように FileMaker と AI を連携しているのかをご紹介しました。
本ブログ・シリーズの今回以降は、Claris エンジニアリングブログで公開されている方法に沿って、実際に FileMaker カスタム App に AI 機能を取り込んでみます。
今回は、その準備編です。
今回の旅路:
- ゴール:オープンソースモデルサーバーを動かす
- さっそく始めましょう!
- オープンソース LLM の設定
- いよいよ本題です
1. ゴール:オープンソースモデルサーバーを動かす
みなさん、Claris エンジニアリングブログはご存知ですか? これは、米国の Claris International Inc. で実際に Claris FileMaker の開発に携わっているエンジニアたちが、ヘルプやリファレンスなどでカバーしきれない Tips やノウハウをブログ形式で随時公開しているものです。新機能の使い方がいち早く紹介されることもあるので、ぜひ定期的にチェックしてみてください。
本ブログ・シリーズでは以降、次の 2 つのエンジニアリングブログに沿って、カスタム App にセマンティック検索を実装してみます。
- FileMaker 2024 で LLM を利用する(原文: Working with LLMs in FileMaker 2024, 2024/06 公開)
- FileMaker 2024 の AI によるイメージのセマンティック検索(原文:AI-powered semantic search for images in FileMaker 2024、2024/11 公開)
上記のうち、1. のエンジニアリングブログではテキストに対するセマンティック検索、2. のエンジニアリングブログではイメージに対するセマンティック検索を取り上げています。何ができるようになるのか、わくわくしますね!
ところで、FileMaker 2024 では複数の LLM を利用することができます。例えば、上記 1. のエンジニアリングブログでは定義済みモデルプロバイダの OpenAI を使用していますが、2. のエンジニアリングブログではオープンソース LLM を使用しています。
定義済みモデルプロバイダ(OpenAI または Cohere)を使用する場合は、外部のプロバイダにリクエストを送ってそのレスポンスを受け取ります。FileMaker 側で特に準備は必要ありません。
一方、オープンソース LLM を利用する場合はモデルをダウンロードして使用します。したがって、自社のデータを含むようなリクエストを外部に送信することなく、ローカルネットワーク内で AI 機能を利用することができます。大切な業務データを扱うときには安心ですね。ただ、FileMaker 2024 でオープンソース LLM を使用する場合は「オープンソースモデルサーバー」を起動しておく必要があります。なんか、めんどくさそうですね…。
といってもこの後、1. のテキストのセマンティック検索が成功した暁には 2. のイメージのセマンティック検索もやってみたいので、どうせやるなら最初からオープンソース LLM に挑戦してみましょう!(オープンソース LLM は無料で使えますし)
なお、このブログで使用した環境は、macOS Sequoia 15.3.1、Claris FileMaker Pro 2024(バージョン 21.1.1.41)です。FileMaker Server 2024(バージョン 21.1.1)の環境も使いますが、必須ではありません(後述)。
2. さっそく始めましょう!
まずは、上記 1. のエンジニアリングブログの内容に沿って、テキストのセマンティック検索をオープンソース LLM を使ってやってみます。
このエンジニアリングブログはまず「LLM の用語」の説明から始まります。このブログ・シリーズの最初の回「FileMaker で AI やってみる (0)」でご紹介した動画などでじっくり情報収集をされたみなさんは既によく知っている内容だと思いますので、さっと読み流していただいても大丈夫です。
次の「FileMaker の LLM 機能」セクションに列挙されているスクリプトステップや関数も既にご存知のものも多いと思いますが、ここで注目していただきたい箇所はリストの一番下の次の項目です。
- FileMaker Server
- Tools/Open_Source_LLM フォルダの中を参照
「どうしてここに “FileMaker Server“ が出てくるのだ?」と思われる方も多いでしょう。私も最初、「これなんぞ?」と思いました。
エンジニアリングブログを読み進めていくとわかるのですが、実はこのフォルダには、オープンソース LLM を利用するための Python ファイル群が入っています。このフォルダの Python ファイルを設定し実行することで、オープンソースモデルサーバーが起動されます。オープソースモデルサーバーは、FileMaker において OpenAI のような外部のサービスを使うのではなく、公開されているオープンソースモデルをローカルにダウンロードして使うためのものです。
そうすると次は、「FileMaker Server が使えるボリュームライセンスを持ってないと、ここで終了ですかい」と思われますよね。私も最初、「なんたる商売ぞ」と思いました。
しかし、大丈夫です。現時点では Claris FileMaker Pro のインストーラの Extras/Open_Source_LLM フォルダにも同じものが入っています。なので、シングルライセンスでお使いの方はこちらをご利用になれます。インストーラなんてもう手元にない、という方は最新の無料評価版をダウンロードしてご利用ください。
というわけで、今後とも Claris をごひいきに!

FileMaker Pro のインストーラの Extras フォルダはスクロールした下の方にあります
LLM オプション(使用する LLM)
エンジニアリングブログでは、FileMaker のスクリプトステップで使用できる LLM のモデルプロバイダについて、次のように記載されています。
LLM オプション
FileMaker Pro バージョン 21.1.1 では、以下のプロバイダを利用できます。OpenAI とオープンソースモデルの設定の詳細については、以降のセクションを参照してください。
- OpenAI
- (Cohere)
- Hugging Face 上のオープンソースモデル
このモデルプロバイダは、セマンティック検索の前に実行する [AI アカウント設定] スクリプトステップで指定するものです。実はエンジニアリングブログにはまだ記載されていないのですが、バージョン 21.1.1(2024 年 11 月リリース)で Cohere が追加されています。

上記「Hugging Face 上のオープンソースモデル」を使用する場合は、[モデルプロバイダ] オプションで [カスタム] を選択します。
3. オープンソース LLM の設定
オープンソース LLM の設定
上述のとおり、エンジニアリングブログの「LLM の設定」セクションには「OpenAI の設定」と「オープンソース LLM の設定」の両方が載っています。
「OpenAI の設定」の方は、書かれているとおりに OpenAI の API キーを取得してスクリプトステップに設定するだけなので、特に問題なくできるはずです(私にもできました、えっへん)。
一方の「オープンソース LLM の設定」の方では「オープンソースモデルサーバー」を利用するために、次の作業をします。
- API キーを作成する(省略可)
- Conda(コンダ)環境を作成する
- 環境設定をする
- オープンソースモデルサーバーを起動する
この段階でなんだかよくわからなくても大丈夫です。エンジニアリングブログに沿って進めていくと、ちゃんとできます。信じて次のステップに進みましょう。
ステップ 1. FileMaker Server の LLM ツールを使う
1. FileMaker Server の shared フォルダの fm_LLMOS_Settings.py を使用します。これは、FileMaker Server がインストールされているフォルダ、または ISO イメージ上の Extras フォルダ内の Tools/Open_Source_LLM フォルダの中にあります。
ここでは、これから使用するファイルを確認しています。
前述のとおり、こちらは FileMaker Pro のインストールファイルの「Extras/Open_Source_LLM」フォルダにもほぼ同じものがありますので(下図)、そちらを使っても大丈夫です。

このフォルダ以下に入っているファイル(Python ファイル)により、オープンソースモデルサーバーが提供されます。オープンソースモデルサーバーは FastAPI を 使った Python マイクロサービスで、サービスを起動したローカルコンピュータ上で動作します。指定されたモデルを Hugging Face のリポジトリからダウンロードして、FileMaker の AI 関連スクリプトステップで REST API 呼び出しによって利用できるようにします(このあたりの話がお好きな方はこの動画(英語)をご参照ください)。
つまり、オープンソースモデルサーバーをローカルに持つことによって、みなさんの秘密のデータを外部に送信することなく、セマンティック検索が利用できるようになるのです。
2. TLS 証明書を使用するには、TSL 証明書ファイルへのパスを環境変数に追加します。
FileMaker Server でカスタム App を共有し、FileMaker クライアントからアクセスする場合には、TSL 証明書を使って HTTPS 接続することが強く推奨されます。ただ、ローカルマシンのみで LLM 機能を試してみる場合に限っては、設定を省略しても構いません。
TSL 証明書ファイルへの具体的なパスの追加方法は、エンジニアリングブログの書き方はちょっと不親切かもしれませんが(「.profile や .zshrc ファイルを更新したら、source コマンドで再実行させましょうね」とか老婆心がうずく…)、もしここで行き詰まったら周りの詳しい人に聞いてみてください。
3. 認証を検証するために、Tools/AdminAPI_PKIAuth/fmadminapi_pki_token_example.py を使って PKI トークンファイルを作成した後、このトークンファイルへのパスを環境変数に設定します。このプロセスで作成されたテキストファイルの内容が API キーです。
「Open_Source_LLM」フォルダだけかと思ったら、いきなり別のフォルダ(「AdminAPI_PKIAuth」)の Python ファイル(.py)を実行しろと言っています。
このファイルは、実は FileMaker バージョン 19.6.1 で FileMaker Admin API の認証において公開鍵暗号基盤(PKI)を使用できるようになったときから提供されているファイルです。この Python スクリプトを実行すると、プライベートキーファイル、パブリックキーファイル(.pub)および PKI トークンファイル(.txt)が生成されます。詳しくは、Claris エンジニアリングブログ「FileMaker Server Admin API 呼び出しに PKI 認証を使用する」を参照してください。
上記インストラクションで追加する環境変数(PKI_KEYFILE)は、パブリックキーファイル(.pub)へのパスです。PKI トークンファイル(.txt)の内容は、FileMaker スクリプトの中で API キーとして使用します。
なお、この Python スクリプトは FileMaker Server でしか提供されていません。FileMaker Server を使っていない方は他の方法で API キーを作成して試してみることもできますが、こちらも TSL 証明書と同様、ローカルで試してみる場合に限っては API キーを設定しなくても試すことはできます。その場合は、この後で設定する fm_LLMOS_Settings.py ファイルの「VALIDATE_PKI」変数を「False」に設定してください。
4. Conda をインストールします。
5. 新しい Conda 環境を作成します。
conda create --name <環境名> python=3.9.18
6. Conda 環境をアクティベートします。
conda activate <環境名>
Python を使っている方にはお馴染みかと思いますが、「Conda(コンダ)」は、Python 他のプログラミング言語のパッケージ管理と環境管理を行うオープンソースツールです。Conda により仮想環境を作成し、その仮想環境内で必要なパッケージのみをインストールして動作させることができます。つまり Conda の仮想環境内でオープンソースモデルサーバーを実行するということですね。
…ときに、上記インストラクションには「Conda」とあるのですが、エンジニアリングブログのリンク(上記「Conda」にも同じリンクを設定しています)をクリックすると「Miniconda」のページが開きます。さらに、もしかして気づかれた方もいらっしゃるかもしれませんが、Open_Source_LLM フォルダの中にある README ファイル(readme.txt)には、以下のように記述されています。
Prerequisite
Using Miniforge, an open source package manager, is recommended.
(必要条件)
(オープンソースパッケージマネージャの Miniforge の使用をお勧めします。)
お勧めが多くて結局どれを使うんじゃいという感じですが、Conda も Miniconda も Miniforge もパッケージと環境の管理を効率的に行うためのツールで、ここではどれを使っても差し支えはありません。ちなみに Conda より Miniconda または Miniforge の方がコンパクトです。Miniconda か Miniforge かは、それぞれの特徴を確認して選択してください(AI チャットサービスに聞くと事細かに教えてくれますが、実質どちらでも大丈夫です)。
7. 提供されている Open_Source_LLM/requirements.txt ファイルから Python ライブラリの依存関係をインストールします。
pip install -r requirements.txt
アクティベートした Conda 仮想環境で、オープンソースモデルサーバーに必要な Python パッケージやライブラリをインストールします。必要なパッケージ / ライブラリとそのバージョンは「requirements.txt」に記載されているので、エンジニアリングブログに記載されているコマンドをそのまま実行するだけです。
8. fm_LLMOS_Settings.py ファイルにオープンソース LLM ホストの設定をします。
このステップの一番最初に出てきたので既に忘れかけていましたが、「Tools/Open_Source_LLM/shared」フォルダの中に「fm_LLMOS_Settings.py」というファイルがあります。TSL 証明書を使用しないでテストする場合は「USE_SSL」変数を「False」に(デフォルトは「True」)、PKI 認証を使用しないでテストする場合は「VALIDATE_PKI」変数を「False」に(デフォルトは「True」)に設定します。また、もし「8080」ポートを既に使っている場合は、「SERVER_PORT」変数に未使用のポート番号(「8081」とか)を設定します。
9. 「Open_Source_LLM」フォルダから次の Python スクリプトを実行して LLM のホスティングを開始します。
python ./server/fm_LLMOS_StartServer.pyc
いよいよ、オープンソースモデルサーバーを起動します。
「fm_LLMOS_StartServer.pyc」ファイルは、Python のソースコード(.py ファイル)をコンパイルした .pyc ファイルです。コンパイルされてバイトコードになっているので、Python インタプリタを使って Python コードを実行するよりも高速に実行できます。
ただ、コンパイルされているので、Python ファイルのように開いて読むことはできません。ので、黙って実行しましょう。
> python ./server/fm_LLMOS_StartServer.pyc
ちょっと待ちます(場合によっては、相当待ちます)。

FileMaker Server の Tools/Open_Source_LLM フォルダから実行した場合(TSL 適用なし)
上の画面の状態になったら、めでたくオープンソースモデルサーバーが起動し、LLM のホスティングが開始されました。なお、停止するときには Ctrl + C です。
ステップ 2. [AI アカウント設定] スクリプトステップを実行する
永久に続くかと思われた「ステップ 1」がやっと終わったので、次は FileMaker カスタム App でオープンソースモデルを使う設定をします。
[AI アカウント設定] スクリプトステップは、他の AI 関連のスクリプトステップを使う前に実行しておくものです。スクリプトで利用するモデルプロバイダまたはエンドポイントと API キーを指定し、任意の名前(アカウント名)を設定して他のスクリプトステップや関数から使えるようにします。
定義済みの LLM モデルプロバイダを使用する場合とオープンソースモデルを使用する場合ではオプションが少し違います。[モデルプロバイダ:] オプションで [カスタム] を選択すると、オープンソースモデルを使用する場合のオプションが設定できるようになります。
ここでは、以下のように設定しました。
- [アカウント名:] “ta”(何でもいいです)
- [モデルプロバイダ:] 「カスタム」を選択
- [エンドポイント:] “http://0.0.0.0:8080”
- [API キー:] “$$API_KEY”

上記のうち、[エンドポイント:] オプションには使用する API エンドポイントの URL を指定します。今回はローカルマシン上でテストするので上記のように指定しましたが、カスタム App を FileMaker Server で共有する場合はサーバーマシンの IP アドレスまたは DNS ホスト名(ドメイン名)を指定する必要があります。また今回は TSL 証明書なしでテストするので、スキームは「http:」です。
[API キー:] オプションには、作成した PKI トークンファイルの中身を指定します。今回はいったんグローバル変数に格納し、そのグローバル変数を参照するようにしました。もちろん、エンジニアリングブログのコード例のように、オプションの値として PKI トークンファイルの中身を直接指定しても構いません。
なお、このスクリプトステップは、LLM モデルプロバイダを使用する同一セッションで最初に一度実行するだけで大丈夫です。それ以降のスクリプト中の AI 関連スクリプトステップまたは関数では、このスクリプトステップで宣言した [アカウント名] を指定するだけでモデルプロバイダを識別できます。つまり、このスクリプトステップを複数使用することで、同一セッションの中で他のモデルプロバイダを(別のアカウント名を使って)利用することもできます。
さて、取りあえず 1 つスクリプトができましたが、このスクリプトだけだといったい何ができるのかよくわからないので、まだ実行しません。実行しても構いませんが、何も起こりません。さしあたってもう疲れた方は、この辺でおやつ休憩しましょう。️
4. いよいよ本題です
今回は、FileMaker でセマンティック検索を実行する際に、定義済みモデルプロバイダ(OpenAI, Cohere)のモデルではなく、オープンソースモデルを使うための準備をしました。
次はいよいよ、今回設定したオープンソースモデルサーバーを使って、テキストのセマンティック検索に挑戦します。イメージのセマンティック検索の方が興味ある方も、基本的なやり方は同じなのでぜひ読んでみてください。
なお、このブログ・シリーズでご紹介しているセマンティック検索は、FileMaker 2024(画像のセマンティック検索はバージョン 21.1.1 以降)でご利用いただけます。これよりも前のバージョンをお使いの方は、最新の無料評価版をダウンロードしてご利用ください。
次回、「FileMaker で AI やってみた (2) - テキスト編」はこちらです。