Pyspur: オープンソース AIエージェント構築ツール

Mark Ponomarev

Mark Ponomarev

17 6月 2025

Pyspur: オープンソース AIエージェント構築ツール

Pyspurとは?

Pyspurは、ビジュアルなノードベース環境を提供することで、AIエージェントの開発を加速するために設計されたオープンソースプラットフォームです。ドラッグアンドドロップのキャンバス上でモジュラーコンポーネントを接続することにより、エンジニアは複雑なAIワークフローを構築、デバッグ、デプロイできます。

Pyspurが解決する核となる問題は、AI開発によく見られる透明性の欠如と遅いイテレーションサイクルです。「プロンプト地獄」や「ワークフローの盲点」に対処するため、エージェントのロジックの各ステップの入力と出力をリアルタイムで検査することを可能にします。このプラットフォームには、Retrieval-Augmented Generation (RAG)のような高度なパターンに対する組み込みサポートが含まれており、人間が介入できるブレークポイントを許可し、あらゆるワークフローをワンクリックで本番環境対応のAPIとしてデプロイできます。最終的に、Pyspurはエンジニアがより信頼性が高く、デバッグ可能なAIシステムをより速く構築するのに役立ちます。

💡
美しいAPIドキュメントを生成する優れたAPIテストツールをお探しですか?

最大限の生産性で開発チームが共同作業できる統合されたオールインワンプラットフォームをお探しですか?

Apidogはあなたのすべての要求に応え、Postmanをはるかに手頃な価格で置き換えます
button

始めましょう!

1. 環境設定

あなたの目的に最適な設定オプションを選択してください。ローカル開発や実験には、pipインストールで十分です。スケーラブルなシステムや本番システムには、専用のPostgreSQLインスタンスを備えた再現可能なコンテナ化環境を提供するDockerベースの設定が推奨されます。

オプションA: ローカルpipインストール

前提条件: Python 3.11+

PyPIからのインストール:

pip install pyspur

プロジェクトディレクトリの初期化: このコマンドは、設定用の.envファイルを含むプロジェクトのひな形を作成します。

pyspur init my-pyspur-project && cd my-pyspur-project

サーバーの起動: --sqliteフラグは、PyspurにローカルのSQLiteデータベースを使用するように指示し、別のデータベースサーバーへの依存関係を排除します。

pyspur serve --sqlite

UIへのアクセス: ブラウザでhttp://localhost:6080に移動します。

オプションB: Docker設定

前提条件: Docker Engine

設定スクリプトの実行: このコマンドは、Pyspurリポジトリをクローンし、docker-compose.dev.ymlファイルを構成し、アプリケーションスタック(フロントエンド、バックエンド、データベース)を起動するシェルスクリプトをダウンロードして実行します。

curl -fsSL https://raw.githubusercontent.com/PySpur-com/pyspur/main/start_pyspur_docker.sh | bash -s pyspur-project

UIへのアクセス: http://localhost:6080に移動します。


2. Pyspurでワークフローを構築しましょう

ゼロから構築する代わりに、既存のPyspurテンプレートをロードして分析します。このアプローチにより、非自明なワークフローを現実的に見ることができます。

テンプレートのロード:

ワークフロー分析:
このワークフローは、ジョークを生成し、それを洗練するように設計されています。これは、LLMプロンプトをN回実行し、別のLLM呼び出しを使用してN個の出力を評価し、最適なものを選択する高度なコンポーネントであるBestOfNNodeを使用します。

joke_generator.jsonで定義されている主要なノードを分解してみましょう。

input_node (InputNode): このノードはワークフローのエントリポイントを定義します。

JokeDrafter (BestOfNNode): これはジョーク作成の最初の段階です。

JokeRefiner (BestOfNNode): このノードは、ドラフトされたジョークを受け取り、それを改善します。

リンク: JSONのlinks配列はデータフローを定義します。
input_node -> JokeDrafter -> JokeRefiner.

実行と検査:


3. RAGパイプラインの実装

ジョークジェネレーターの一部ではありませんが、Retrieval-Augmented Generation (RAG)はPyspurの重要な機能です。エージェントに知識を追加するための技術的なプロセスは次のとおりです。

  1. ドキュメント取り込み(コレクション): RAGセクションに移動します。「Document Collection」を作成し、ファイルをアップロードすると(例: PDF)、Pyspurはドキュメントをテキストに解析し、トークン長に基づいて構成可能なチャンクに分割し、これらのチャンクをソースメタデータとともにデータベースに保存するバックエンドプロセスを開始します。
  2. ベクトル化(インデックス): コレクションから「Vector Index」を作成すると、別のプロセスがトリガーされます。Pyspurは各テキストチャンクを繰り返し処理し、指定された埋め込みモデル(例: OpenAIのtext-embedding-ada-002)へのAPI呼び出しを行ってベクトル表現を取得し、これらのベクトルを構成されたベクトルデータベース(例: ChromaDB, PGVector)にアップサートします。
  3. 検索(ワークフローノード): ワークフローでは、Retriever Nodeが特定のVector Indexを指すように構成されます。実行時には、その入力queryが同じモデルを使用して埋め込まれ、ベクトルデータベースに対してセマンティック検索(近似最近傍探索)が実行され、最も関連性の高いテキストチャンクがフェッチされます。これらのチャンクは、コンテキストとして下流のLLMに渡されます。

4. 本番APIとしてのデプロイ

ワークフローが完成したら、それをセキュアなHTTPエンドポイントとして公開できます。

デプロイの開始: トップナビゲーションバーの「Deploy」ボタンをクリックします。

API呼び出しタイプの選択:

アプリケーションとの統合:
デプロイモーダルはクライアントコードを生成します。POSTリクエストのボディは、initial_inputsキーが入力ノードのtitleと一致するキーを持つオブジェクトを含むJSONオブジェクトである必要があります。

Pythonクライアントの例(ジョークジェネレーター向け):

import requests
import json
import time

PYSUR_HOST = "http://localhost:6080"
WORKFLOW_ID = "your_workflow_id_here" # Get this from the deploy modal

# The keys in this dict must match the 'output_schema' of the input_node
payload = {
    "initial_inputs": {
        "input_node": {
            "topic": "Python decorators",
            "audience": "Senior Software Engineers"
        }
    }
}

# 1. Start the non-blocking run
start_url = f"{PYSUR_HOST}/api/wf/{WORKFLOW_ID}/start_run/?run_type=non_blocking"
start_resp = requests.post(start_url, json=payload)
run_id = start_resp.json()['id']
print(f"Workflow started with run_id: {run_id}")

# 2. Poll for the result
status_url = f"{PYSUR_HOST}/api/runs/{run_id}/status/"
while True:
    status_resp = requests.get(status_url)
    data = status_resp.json()
    status = data.get("status")
    print(f"Current status: {status}")
    if status in ["COMPLETED", "FAILED"]:
        print("Final Output:")
        print(json.dumps(data.get("outputs"), indent=2))
        break
    time.sleep(2)

結論

Pyspurは、AIエージェント開発のための堅牢で透過的、かつ技術的に根拠のある環境を提供します。個々の操作をモジュラーノードに抽象化し、ビジュアルキャンバスを提供することで、エンジニアはエージェントの高レベルなロジックに集中できます。このプラットフォームの真の力は、深い検査可能性(データフローを追跡し、各コンポーネントのI/Oをデバッグできること)と、ビジュアルプロトタイプから本番環境対応APIへのシームレスな移行にあります。単純な単一呼び出しエージェントから、Best-of-NやRAGのようなパターンを利用する複雑な多段階ワークフローへの移行は、可能なだけでなく直感的です。Pyspurで構築することは、単にボックスを接続するだけでなく、信頼性が高く、デバッグ可能で、スケーラブルなAIシステムをエンジニアリングすることなのです。

💡
美しいAPIドキュメントを生成する優れたAPIテストツールをお探しですか?

最大限の生産性で開発チームが共同作業できる統合されたオールインワンプラットフォームをお探しですか?

Apidogはあなたのすべての要求に応え、Postmanをはるかに手頃な価格で置き換えます
button

ApidogでAPIデザイン中心のアプローチを取る

APIの開発と利用をよりシンプルなことにする方法を発見できる