Open1

Dify で知ったこと

hokupodhokupod

チャット内でコードを実行するツール simple_code の学び。

Dify にはチャット中やワークフローで AI がコードを実行するためのツールとして simple_code が提供されている。
OpenAI の ChatGPT Plus で言うところの Code interpreter のようなもの。
simple_code では Python と Node.js が利用出来るが、これより先は Python での話であり、Node.js の話ではないことを注意。

simple_code で利用可能なライブラリは限られている。

もし Docker Compose を使用していて、ライブラリを追加したい場合は、下記に追記することでパッケージをインストールすることができる。
※ ↓のファイルが空に見えると思いますが、表示がおかしくなっているわけではありません。内容が空のテキストファイルです。
https://github.com/langgenius/dify/blob/main/docker/volumes/sandbox/dependencies/python-requirements.txt

しかし、罠もある。
import するクラスと PyPI でのパッケージ名が異なる場合には、simple_code で実行出来ない。
具体的には、BeautifulSoup は PyPI でのパッケージ名が beautifulsoup4 であるが、import する際のクラス名は BeautifulSoup を指定し from bs4 import BeautifulSoup のように記述するため、simple_code はパッケージを見つけられずエラーとなる。
現状回避策はなく、Issue でやりとりがされている。
https://github.com/langgenius/dify/issues/4463#issuecomment-2281779129

標準ライブラリも使えない場合がある。

simple_code を実行する環境(sandbox と呼ばれている)では、使用できるシステムコールが制限されている。
そのため、標準ライブラリであってもシステムコールができずエラーとなるケースが存在する。
使用できるシステムコールは、下記でまとめられている。
https://github.com/langgenius/dify-sandbox/blob/main/internal/static/python_syscall/syscalls_amd64.go