Pythonライブラリをインストールして使いたい

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から変更している場合は、適宜パスを読み替えてください。

具体的なインストール方法を以下に示します。

  1. Alkano・BayoLinkSがインストールされているマシンにログインします。
  2. Windowsのコマンドプロンプトを「管理者として実行」します。(管理者権限が必要です)

image.png

  1. Alkano・BayoLinkSがインストールされているフォルダ以下の python\Scripts\activate.bat をコマンドプロンプトから実行して、Alkano・BayoLinkSの Python 実行環境を起動します。
> C:\MSIP\python\Scripts\activate.bat

image.png

  1. ライブラリがすでにAlkano・BayoLinkSにインストールされているかどうかを以下のコマンドで確認します。
> C:\MSIP\python\Scripts\python -m pip list

このコマンドで表示されるライブラリは、すでにAlkano・BayoLinkSにインストールされているライブラリです。
インストール済みのライブラリは、そのままご利用いただけます。

インストールしたいライブラリが表示されなかった場合、次の操作でライブラリをインストールしてください。

  1. インストールしたいライブラリを、以下のように python -m pip install コマンドに --target オプションを付けてインストールします。なお、「外部ライブラリ用フォルダ」はデフォルトではC:\MSIP\python_external です。
>  python -m pip install {インストールするライブラリ名} --target {外部ライブラリ用フォルダ}

image.png

  1. 以下のコマンドを入力し、インストールしたライブラリにAlkano・MSIPからのアクセス権限を与えます。
> icacls "C:\MSIP\python_external" /grant "LOCAL SERVICE:(R,X)" /T

image.png

ここでは、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]})

image.png

これにより、PythonScriptアイコンの出力結果として、LLMからの応答を取得できます。

image.png

分析への応用

Alkanoを用いた分析への応用として、文章のポジネガ分析をさせてみます。
以下のような文章データを用意します。

image.png

このデータを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)

image.png

PythonScriptアイコンの実行結果は以下のようになります。

image.png

ここから、文章のポジティブ・ネガティブを属性として、Alkanoでの分析を進めることができます。

One Point

自作の Python コード を PythonScriptアイコンで利用する方法

以下では、次の自作関数my_sum を PythonScriptアイコンで利用する方法について解説します。

# PythonScript アイコンで呼び出す2つの数の和を計算する自作関数
def my_sum(x, y):
  z = x + y
  return z
  1. python_externalフォルダ 以下にフォルダを作成します。ここでは説明のため、my_moduleという名前のフォルダを作成します。

image.png

  1. my_moduleフォルダ内に、__init__.pymy_function.pyファイルを作成し、__init__.pyには何も記述せず、my_function.pyには以下の内容を記述します。
# PythonScript アイコンで呼び出す2つの数の和を計算する自作関数
def my_sum(x, y):
  z = x + y
  return z

image.png

  1. MSIP を起動し、シナリオエリアのタイルを右クリックし、python スクリプトを追加 を選択します。

image.png

  1. Python script のノードをダブルクリックしパラメータ設定画面を開きます。パラメータ設定画面の入力設定を開き、入力となるtableの右のボタンをクリックし、入力が何もない状態にします。

image.png

  1. スクリプト内に次の内容を記述します。ここでは、作成したフォルダ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]})
  1. スクリプトが完成したら、PythonScriptアイコンを実行します。可視化画面からPython Script の result テーブルを確認します。1行1列のテーブルにmy_sumでの計算結果が出力されます。

image.png

外部ライブラリ用フォルダの追加方法

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 アイコン
    • 外部ライブラリを追加でインストールする