🙌

[やってみた/備忘録]「現場で活用するためのAIエージェント実践入門」の環境構築

に公開

↓数日前、タイトルの本のコードを.venvで実行するのを試してみました、という記事を書きました。
ただ4章は.venvだけで動かないことに気づき、一度公開を停止しました。(おそらく5章以降も同様の問題が起きるでしょうね)
環境構築の備忘録という内容に主旨や内容を変更したうえで再公開します。

はじめに

最近、周りのエンジニアで勧めている人がいたので
「現場で活用するためのAIエージェント実践入門」を読んでみました。
https://www.kspub.co.jp/book/detail/5401408.html

実務でLLMアプリケーションを作る際に参考にしたいことが多く書かれていて有益だと感じました。
逆にコードは提示していますが(全文はGitで参照できますが)、開発環境の準備などそこまで親切に書かれているわけではないので、おそらくある程度は開発経験がある読者向けという性格が強そうです。

私自身、読破はしたもののコードは動かしていない状態だったので
「私にも動かせるのかな?」
と思いつつ、試してみることにしました。

あと普段持ち歩いているPCがあまりリソースが強くないのもあって
Dockerよりも.venvで動かしたいモチベーションもあったので、
せっかくなのでvenvを使ったやり方で試してみました。

記録と紹介を兼ねてやってみようと思います。
3章は.venvのみでも十分動きましたが、4章以降は…だったので、3章で試した方法と、4章で使った起動手順について記録します。

コードはGitから入手できる

まず書籍のページのリンクからコードを入手します。
中身を見るとこんな感じで章ごとにフォルダが分かれています。
READMEを読むと各章のフォルダの中でワークスペースを作るイメージのようです。

Dockerコンテナを使った実行環境の準備

実行の順番が重要で、先に.venvを作ったりしてしまうとうまく動かなかったりします。

実行環境の準備手順

筆者はすでにDocker DesktopとWSL2を別件でインストールした状態で実行しました。
手順は下記のとおりです。

まずDockerDesktopを起動した状態で、VSCodeでchapterごとのフォルダを開きコンテナを起動させます。そのあと、.venvを作ります。

# 1. Dockerコンテナ起動
docker-compose up -d

# 2. Python仮想環境作成・有効化
python -m venv .venv
source .venv/Scripts/activate

依存関係のインストール

ここまでは筆者の想定している通りだと思うのですが、私の場合「make」コマンドが動かなかったので、下のpipを使ったコマンドで依存関係をインストールしました。

# 3. Python依存関係インストール
pip install -e .

環境変数の設定

.env.sampleファイルをコピペして同じ場所に置き、名前を「.env」にします。
そのあと、<API Key>にOpenAIのAPIプラットフォームで取得したAPIを入力します。

OPENAI_API_KEY="<API Key>"
OPENAI_API_BASE="https://api.openai.com/v1"

OPENAI_MODEL= "gpt-4o-2024-08-06"

実行

サンプルコードの添付の仕方って本によって結構いろいろですが、この本の場合は
フォルダの中の「notebooks」というフォルダの中に入っています。

初めて実行するときは、カーネルを選択するよう求められるかもしれませんが、私のやり方で進める場合は「Python環境」を選んで、「.venv」を選びます。この場合、Notebook実行用のパッケージのインストールをもとめられるかもしれませんがYesを選んで進めます。

(おまけ・4章用) データベースの作成

Makefileというファイルを読むと、
create_index.pyというスクリプトを使って質問をデータベース化しているようでした。
やはり私はmakeは使えなかったので、直接実行しインデックスを作りました。

# 4. インデックスデータベース初期化
python src/scripts/create_index.py

なお、csvのエンコードの問題かエラーが出たので、csvファイルをUTF-8エンコードで保存しなおしたうえでCSVLoaderに追記をしました。


def load_csv_docs(data_dir_path: str) -> list[Document]:
    csv_path = glob(os.path.join(data_dir_path, "**", "*.csv"), recursive=True)
    docs = []

    for path in csv_path:
        loader = CSVLoader(file_path=path, encoding='utf-8') #encodingを追加
        docs.extend(loader.load())

    return docs

3章は「.venv」だけでも動かせる

先日ここで書いたように、3章のコードだけであれば.venvだけでも動かせます。
気軽に試してみたい人にはこれでもいいかもしれないので、ほぼ書いた時のまま書いておきます。

VSCodeから開き仮想環境を作る

私のローカルPC(Windows11)でフォルダchapter3をVSCodeから開きました。
Venvが好きなので、この窓にShift+Ctrl+Pを打って「仮想環境の作成」を選び、venvを作ります。

いつも通りのコマンドで仮想環境を起動し、本が進めているuvで依存関係インストールしてみます。

.venv/scripts/activate
pip install uv
uv sync

実行結果は私の場合は下記の通りでした。

PS ...\genai-agent-advanced-book-main\chapter3> .venv/scripts/activate
(.venv) PS C:\0_tool_study\genai-agent-advanced-book-main\chapter3> pip install uv
Collecting uv
  Using cached uv-0.8.13-py3-none-win_amd64.whl.metadata (12 kB)
 (中略)
 - zstandard==0.24.0
 + zstandard==0.23.0

おお、インストールできたようです。

ちなみに3章にはDuckduckgoを使うコードもありますが、こちらはすでにライブラリのバージョン変更で使えなくなってしまっていました。ツールの使い方を学ぶのが本旨なので、私はここはスキップして次のコードに行っちゃいましたが。。。

C:\Users\******.py:29: RuntimeWarning: This package (`duckduckgo_search`) has been renamed to `ddgs`! Use `pip install ddgs` instead.
  with DDGS() as ddgs:

検索結果:

検索結果はありませんでした

参考情報(Notebookを使って人のコードを追うときの基本テクニック)

エラーが出る場合、セルを分割して実行すると、エラーがなくなったりすることがありました。ほかはカーネルの再起動も試してみてもよいと思います。

他、本の感想

本についてですが、やはり「こういう場合はこれを使えばいい」「こういうケースを考えたい場合はここから考える」という参照の仕方をできる点で私にとっては有益な本だと感じました。
それと内容を読むにつけ、ますますAIエンジニアの求められる役割は顧客の困りごとや開発ターゲットの適切な設定などのコンサル的な側面が強くなってきているのだな、とも実感しました。
今後も精進していこうと思います。
また何か間違いやご指摘などありましたらお気軽にお願いします。

Discussion