「AIエージェントキャッチアップ #28 - Graphite」を開催しました

ジェネラティブエージェンツの大嶋です。

「AIエージェントキャッチアップ #28 - Graphite」という勉強会を開催しました。

generative-agents.connpass.com

アーカイブ動画はこちらです。

youtube.com

Graphite

今回は、AIエージェントのイベント駆動フレームワーク「Graphite」について、公式ドキュメントを読んだり動かしたりしてみました。

GraphiteのGitHubリポジトリはこちらです。

github.com

紹介記事はこちらです。

medium.com

今回のポイント

Graphiteの概要

Graphiteは、ワークフロー型のAIエージェントを構築するためイベント駆動型フレームワークです。 Graphiteのコアコンポーネントは以下の画像のように構成されます。

画像引用元: https://github.com/binome-dev/graphite

ワークフロー型のAIエージェントのフレームワークとしては「LangGraph」が有名です。 GrahpiteはLangGraphと異なり、ノード間の通信を「トピック」を使ったパブリッシュ/サブスクライブ(Pub/Sub)パターンを使用して実装することが特徴です。

Graphiteでのエージェント実装

Graphiteを使ったシンプルな実装例を見ていきます。 まずはGraphiteをインストールします。

pip install graphite

Graphiteでワークフローを実装する際は、まず「トピック」を作成します。

from grafi.common.topics.topic import Topic

example_topic = Topic(name="example_topic")

続いて、「ノード」を作成します。 「ノード」には、どのトピックを購読(Subscribe)・パブリッシュ(Publish)するかを指定します。

llm_node = (
    LLMNode.Builder()
    .name("LLMNode")
    .subscribe(
        SubscriptionBuilder()
        .subscribed_to(agent_input_topic)
        .build()
    )
    .command(
        LLMResponseCommand.Builder()
        .llm(
            OpenAITool.Builder()
            .name("LLM")
            .api_key(api_key)
            .model(model)
            .system_message(system_message)
            .build(),
        )
        .build(),
    )
    .publish_to(example_topic)
    .build()
)

最後に「ノード」を登録して「ワークフロー」が出来上がります。

workflow = (
    EventDrivenWorkflow.Builder()
    .name("example_workflow")
    .node(llm_node)
    .node(other_node)
    .build()
)

LangGraphと比較すると、ノード間を繋ぐ「トピック」の存在が大きな違いですね。

Phoenixでのトレーシング

Graphiteでは、「Phoenix」を使ったトレーシングがサポートされています。

github.com

Phoenixをインストールしてphoenix serveコマンドで起動しておくと、Graphiteの実行結果が自動でPhoenixに記録されます。

Human-in-the-Loop

Graphiteでは、ワークフロー内に人間の介入ポイント(Human-in-the-Loop)を設けることができるとのことです。

ただし、READMEに記載されているHuman-in-the-Loopのサンプルコードは、私が試した範囲ではうまく動作しませんでした。

ドキュメントには「HumanRequestTopic」というHuman-in-the-Loop用のトピックがあると書かれているので、そのあたりを参考にすれば動かすことができるかもしれません。

github.com

次回のご案内

以上、今回は「Graphite」をキャッチアップしました。

次回は「AIエージェントキャッチアップ #29 - Agent Development Kit (ADK)」ということで、Googleが公開したAIエージェントのフレームワーク「Agent Development Kit (ADK)」がテーマです!

generative-agents.connpass.com

ご興味・お時間ある方はぜひご参加ください!

また、その次の回以降のテーマも募集しているので、気になるエージェントのOSSなどあれば教えてください!