$ kubectl -n default get deployments,services NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/dbt-sample-domain 0/100 188d deployment.apps/podinfo 2/222 32s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.43.0.1<none>443/TCP 230d service/podinfo ClusterIP 10.43.9.183<none>9898/TCP,9999/TCP 32s
サービスがあるので 9898 に繋いでみると、アプリケーションの起動が確認できます:
$ kubectl port-forward svc/podinfo 9898:9898 -n default Forwarding from 127.0.0.1:9898 ->9898 Forwarding from [::1]:9898 ->9898
2024年9月時点で、OpenAI には User API Key(レガシー)と Project API Key が存在しますが、Project API Key では上手くつながらなかったため、User API Key を取得しました。
OpenAI のユーザAPIキー設定画面
また API を使うためには予め予算を登録しておく必要があり、私は $10 程度入れて動かしました。ただチュートリアルをいくつか動かしていますが、少し遊ぶ程度なら $1 でも十分そうです。
Prefect のローカルサーバを起動
ControlFlow は単独で動くものではなく、Prefectにフローを登録する Prefect のラッパーのようなものなので、Prefect Server を起動します(Prefect Cloudでも大丈夫です)
別ウィンドウで Prefect サーバを起動させます:
prefect server start
Control Flow がフローを登録するための API を環境変数にセットします:
exportPREFECT_API_URL=http://127.0.0.1:4200/api
サンプルを実行するとエラー
ここでサンプルのサイコロを振るプログラムを実行すると、以下のエラーが発生します:
$ python roll_dice.py Traceback (most recent call last): File "/path/to/control_flow/roll_dice.py", line 1, in<module> import controlflow as cf File "/path/to/control_flow/.venv2/lib/python3.12/site-packages/controlflow/__init__.py", line 5, in<module> from .agents import Agent File "/path/to/control_flow/.venv2/lib/python3.12/site-packages/controlflow/agents/__init__.py", line 1, in<module> from . import memory File "/path/to/control_flow/.venv2/lib/python3.12/site-packages/controlflow/agents/memory.py", line 7, in<module> from controlflow.tools import Tool File "/path/to/control_flow/.venv2/lib/python3.12/site-packages/controlflow/tools/__init__.py", line 1, in<module> from controlflow.llm.tools import tool, Tool, as_tools File "/path/to/control_flow/.venv2/lib/python3.12/site-packages/controlflow/llm/__init__.py", line 1, in<module> from controlflow.llm import models, messages, tools, handlers, completions, rules File "/path/to/control_flow/.venv2/lib/python3.12/site-packages/controlflow/llm/tools.py", line 16, in<module> from controlflow.utilities.prefect import create_markdown_artifact, prefect_task File "/path/to/control_flow/.venv2/lib/python3.12/site-packages/controlflow/utilities/prefect.py", line 22, in<module> from prefect.results import ResultFactory ImportError: cannot import name 'ResultFactory' from 'prefect.results'(/path/to/control_flow/.venv2/lib/python3.12/site-packages/prefect/results.py). Did you mean: 'ResultRecord'?
from prefect.results import ResultFactory というライブラリインポートの構文で、ResultFactory というオブジェクトがないとエラーを出しています。