2
0

LangGraphのグラフビジュアライゼーションを試す

Posted at

導入

LangGraphの機能が種々アップデートされており、少し時間が経ってましたがグラフのビジュアライゼーション機能を試してみます。

せっかくなので、以前以下の記事で作成したRAG処理のグラフを可視化します。

試用は上記記事同様、Databricksで実施しました。
上の処理の続きとしての処理記述になります。

Step10. パッケージ・モジュールの追加インストール

LangGraphのビジュアライゼーション機能はGraphvizを使うようなので、apt-getでLinux(Ubuntu)上でgraphiz関連のパッケージをインストールします。

%sh sudo apt-get install graphviz libgraphviz-dev pkg-config --yes

その上でpython用のパッケージをインストール。

%pip install grandalf pygraphviz

準備はこれで終了です。

Step11. ASCIIでグラフを表示

こちらの記事内で作成したLangGraphのグラフインスタンス(app変数に格納済み)を利用し、まずはグラフを文字で表示してみます。

app.get_graph().print_ascii()
出力
                                      +-----------+                          
                                      | __start__ |                          
                                      +-----------+                          
                                            *                                
                                            *                                
                                            *                                
                                        +-------+                            
                                        | agent |**                          
                                       *+-------+  ******                    
                                     **                  ******              
                                   **                          *****         
                                 **                                 ******   
                  +-----------------------+                               ***
                  | agent_should_retrieve |                                 *
                  +-----------------------+                                 *
                       **               ***                                 *
                     **                    ***                              *
                   **                         ****                          *
          +----------+                            **                        *
          | retrieve |                             *                        *
          +----------+                             *                        *
                *                                  *                        *
                *                                  *                        *
                *                                  *                        *
  +--------------------------+                     *                    *****
  | retrieve_grade_documents |                     *           *********     
  +--------------------------+                     *   ********              
           **        **                       *********                      
         **            **            *********     *                         
        *                *      *****              *                         
+----------+         +---------+                  **                         
| generate |*        | rewrite |              ****                           
+----------+ ****    +---------+           ***                               
                 ****                   ***                                  
                     ****           ****                                     
                         ***      **                                         
                         +---------+                                         
                         | __end__ |                                         
                         +---------+                                         

見やすいかどうかはいろんな意見があると思いますが、ノード間の繋がりが可視化されました。

Step12. 画像でグラフを表示

実際には画像でビジュアライゼーションすることが多いと思います。やってみましょう。

from IPython.display import Image

Image(app.get_graph().draw_png())

image.png

エッジの分岐など、よりわかりやすく可視化されました。
条件分岐用のエッジ部分など、もう少しわかりやすく改善されるとなお良さそうですね。

まとめ

LangGraphについては、サンプルの拡充なども含めて拡張が進んできていますね。
LLMを使ったアプリ構築においては、シンプルながら重要なパッケージになってきているように思います。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0