OSSのPythonライブラリをインストールして使ったり、自作のPythonコードを呼び出せるようにする方法を解説します。Alkano・BayoLinkSがインストールされているマシンの管理者権限が必要です。
説明
注:本記事でご紹介する内容は、Pythonに関する基本的な知識があることを前提としています。
なお、本記事での操作は、Alkano・BayoLinkSがインストールされているマシン上で実施してください。
Pythonには数々のオープンソースソフトウェア(OSS)のライブラリが存在します。
それらのOSSライブラリをAlkano・BayoLinkSのPythonScriptアイコン内から呼び出して利用する方法をご紹介します。
また、自作のPythonコードも同様の方法でPythonScriptアイコンから利用できますので、合わせて説明します。
なお、Alkano・BayoLinkSが利用しているPythonライブラリ(例:scikit-learn)は特別な操作をせずにご利用可能です。ここではAlkano・BayoLinkSに追加でインストールするOSSライブラリや自作Pythonコード(本記事では「外部ライブラリ」と呼びます)を利用する方法をご紹介します。
使い方
外部ライブラリは、Alkano・BayoLinkSが利用しているPythonライブラリのインストール先(デフォルトではC:\MSIP\python\Lib
以下)とは異なる場所にインストールします。
デフォルトで用意されている外部ライブラリ用フォルダは、C:\MSIP\python_external
です。
Alkano・BayoLinkSのインストール先をC:\MSIP
から変更している場合は、適宜パスを読み替えてください。
具体的なインストール方法を以下に示します。
- Alkano・BayoLinkSがインストールされているマシンにログインします。
- Windowsのコマンドプロンプトを「管理者として実行」します。(管理者権限が必要です)
- Alkano・BayoLinkSがインストールされているフォルダ以下の
python\Scripts\activate.bat
をコマンドプロンプトから実行して、Alkano・BayoLinkSの Python 実行環境を起動します。
> C:\MSIP\python\Scripts\activate.bat
- ライブラリがすでにAlkano・BayoLinkSにインストールされているかどうかを以下のコマンドで確認します。
> C:\MSIP\python\Scripts\python -m pip list
このコマンドで表示されるライブラリは、すでにAlkano・BayoLinkSにインストールされているライブラリです。
インストール済みのライブラリは、そのままご利用いただけます。
インストールしたいライブラリが表示されなかった場合、次の操作でライブラリをインストールしてください。
- インストールしたいライブラリを、以下のように
python -m pip install
コマンドに--target
オプションを付けてインストールします。なお、「外部ライブラリ用フォルダ」はデフォルトではC:\MSIP\python_external
です。
> python -m pip install {インストールするライブラリ名} --target {外部ライブラリ用フォルダ}
- 以下のコマンドを入力し、インストールしたライブラリにAlkano・MSIPからのアクセス権限を与えます。
> icacls "C:\MSIP\python_external" /grant "LOCAL SERVICE:(R,X)" /T
例
ここでは、OpenAIのライブラリを用いて大規模言語モデル(LLM)を利用する方法を例として示します。
注意
本項目の例を実行しますと、OpenAIのサーバーにデータが送信されます。
OpenAI API のご利用は、ご所属の組織のポリシーに則って行ってください。
また、OpenAIの利用規約をご確認のうえご利用ください。
本項目の手順を実施した結果、ご利用者様および第三者に損害が発生したとしても、
弊社は責任を負わないものとします。
また、本項目の内容については、2024年6月の時点で動作確認をおこなっております。
弊社ではOpenAIの仕様や仕様変更に関するお問い合わせは承りません。
openai
ライブラリを使用するには、OpenAIのAPIキーが必要です。
api_key
の値(sk-
で始まる文字列)を、お持ちのAPIキーの値に書き換えてください。
また、OpenAIではトークンに応じた課金がおこなわれます。大規模データは送信しないように注意してください。
利用例
例として、openai
ライブラリを外部ライブラリとしてインストールする手順を示します。
openai
ライブラリは、OpenAIのChatGPT-4などの大規模言語モデル(LLM)をPythonから利用するためのライブラリです。
> python -m pip install openai --target C:\MSIP\python_external
上記のコマンドを実行すると、openai
ライブラリ、およびopenai
ライブラリが依存しているライブラリが外部ライブラリ用フォルダにインストールされます。
PythonScriptアイコンで以下のようにソースコードを書くことで、インストールした外部ライブラリでLLMを利用可能です。
PythonScriptアイコンの使い方の詳細は、MSIPマニュアルおよびPythonScriptアイコン使い方ガイドを参照してください。
from msi.common.dataframe import DataFrame, cbind, rbind, merge, select, is_valid, format_str from msi.common.dataframe.params import Axis, Merge, DType, Agg from msi.common.dataframe.special_values import Na, Error, NegativeInf, PositiveInf from openai import OpenAI """ OpenAIのChatGPTにテキストを送信し、応答を取得する。 """ prompt = "こんにちは" client = OpenAI(api_key="sk-111111111111111111111111111111111111111111111111") completion = client.chat.completions.create( model="gpt-3.5-turbo", messages=[ {"role": "user", "content": prompt}, ] ) response = completion.choices[0].message.content result = DataFrame({"answer":[response]})
これにより、PythonScriptアイコンの出力結果として、LLMからの応答を取得できます。
分析への応用
Alkanoを用いた分析への応用として、文章のポジネガ分析をさせてみます。
以下のような文章データを用意します。
このデータをPythonScriptアイコンの入力にし、以下のようなソースコードを書きます。
python from msi.common.dataframe import DataFrame, cbind, rbind, merge, select, is_valid, format_str from msi.common.dataframe.params import Axis, Merge, DType, Agg from msi.common.dataframe.special_values import Na, Error, NegativeInf, PositiveInf from openai import OpenAI import json """ OpenAIのChatGPTにテキストを送信し、ポジティブ・ネガティブを判定する """ system_prompt = """ 以下のJSON形式データの各文字列に対し、ポジティブかネガティブか判定してJSON形式で回答してください。 回答のフォーマットは {"posi_nega":["posi", "posi", "nega", "nega"]} というようなJSON形式とします。 """ dic = table["sentences"].to_dict() prompt = """{} """.format(dic) client = OpenAI(api_key="sk-111111111111111111111111111111111111111111111111") completion = client.chat.completions.create( model="gpt-3.5-turbo", response_format={ "type": "json_object" }, messages=[ {"role": "system", "content": system_prompt}, {"role": "user", "content": prompt}, ] ) response = completion.choices[0].message.content # printはデバッグ用 # ジョブ一覧のジョブに表示される print(prompt) print(response) data = json.loads(response) dic.update(data) result = DataFrame(dic)
PythonScriptアイコンの実行結果は以下のようになります。
ここから、文章のポジティブ・ネガティブを属性として、Alkanoでの分析を進めることができます。
One Point
自作の Python コード を PythonScriptアイコンで利用する方法
以下では、次の自作関数my_sum
を PythonScriptアイコンで利用する方法について解説します。
# PythonScript アイコンで呼び出す2つの数の和を計算する自作関数 def my_sum(x, y): z = x + y return z
python_external
フォルダ 以下にフォルダを作成します。ここでは説明のため、my_module
という名前のフォルダを作成します。
my_module
フォルダ内に、__init__.py
とmy_function.py
ファイルを作成し、__init__.py
には何も記述せず、my_function.py
には以下の内容を記述します。
# PythonScript アイコンで呼び出す2つの数の和を計算する自作関数 def my_sum(x, y): z = x + y return z
- MSIP を起動し、シナリオエリアのタイルを右クリックし、
python スクリプトを追加
を選択します。
- Python script のノードをダブルクリックしパラメータ設定画面を開きます。パラメータ設定画面の入力設定を開き、入力となる
table
の右の-
ボタンをクリックし、入力が何もない状態にします。
- スクリプト内に次の内容を記述します。ここでは、作成したフォルダ
my_module
内のmy_function.py
に記載されているmy_sum
という自作関数を呼び出し、計算結果をデータフレーム形式で出力しています。
from msi.common.dataframe import DataFrame from my_module import my_function # my_module 内の my_function に書かれた my_sum 関数を呼び出す z = my_function.my_sum(2,3) # 計算結果をデータフレームに格納し、出力します result = DataFrame({"z":[z]})
- スクリプトが完成したら、PythonScriptアイコンを実行します。可視化画面からPython Script の result テーブルを確認します。1行1列のテーブルに
my_sum
での計算結果が出力されます。
外部ライブラリ用フォルダの追加方法
MSIPの「Python パス記述ファイル」に記載されているパスを追加することで、デフォルトの「外部ライブラリ用フォルダ」以外の場所も「外部ライブラリ用フォルダ」として利用することができます。
ただし、MSIPがインストールされているフォルダ(デフォルトではC:\MSIP
)以下のパスは追加の「外部ライブラリ用フォルダ」に指定できません。 MSIPインストールフォルダ以外のパスを追加してください。(例:C:\use_lib_1
)
「Python パス記述ファイル」は、デフォルトインストールパスの場合、C:\MSIP\config\python_external_paths.txt
であり、以下のような内容になっています。
# python スクリプトやライブラリを配置するフォルダのパスを各行に記載してください。 # # 各フォルダはインストール時に指定した、MSIP のサービス実行アカウントから # 読み取り可能なパスを設定してください。 # なお、規定の指定でインストールした場合、MSIP のサービス実行アカウントは # LOCAL SERVICE となります。 # # 空行や先頭が # で始まる行は無視されます。コメントとしてご利用ください。 # # パスは絶対パス、相対パスのどちらでも可能です。 # パス区切りは / と \ の両方可能です。 # 末尾にはパス区切りは不要です。 # 相対パスでは MSIP のインストールフォルダが起点となります。 # # このファイルは UTF-8 で記載されています。 文字コードの種類を変更せず、UTF-8 のままとしてください。 # 以下に追加したいフォルダを記載してください。 # 規定フォルダ: MSIPインストールフォルダ/python_external です。 # MSIPインストールフォルダ下で有効なパスは規定フォルダ下のみです。 python_external
このファイルにC:\user_lib_1
のようにパスを追記することで、「外部ライブラリ用フォルダ」を複数指定することができます。
詳細はMSIPマニュアル「3.12.1. Python アイコン」をご参照ください。
注意事項
外部ライブラリ用フォルダのアクセス権限
上記ファイルのコメントにも書いてありますが、システムとの干渉を防ぐために、MSIPインストールフォルダ下で有効なパスはC:\MSIP\python_external
のみです。(MSIPインストールパスがC:\MSIP
の場合)
外部ライブラリ用フォルダを追加する場合には、C:\MSIP
フォルダの下以外の場所(例:C:\user_lib_1
)をご指定ください。
なお、「外部ライブラリ用フォルダ」を新たに追加する場合は、そのフォルダへAlkano・MSIPからのアクセス権限を与えるため、以下のコマンドを実行する必要があります。
C:\user_lib_1
を作成した場合
> icacls "C:\user_lib_1" /grant "LOCAL SERVICE:(R,X)" /T
Alkano・BayoLinkSが利用しているPythonライブラリとの競合
Alkano・BayoLinkSのシステムもPythonのライブラリを利用しています。
システムの動作を優先するため、 外部ライブラリはシステムが使うPythonライブラリよりもimport
の優先順位が下がります 。
そのため、システムにインストールされているPythonライブラリと外部ライブラリが依存するライブラリとでバージョンの競合が起こった場合、外部ライブラリが正常に動作しない可能性があります。ご了承ください。
関連項目
- MSIPマニュアル
- 3.12.1. Python アイコン
- 外部ライブラリを追加でインストールする