Pyspur: Açık Kaynaklı Yapay Zeka Ajan Oluşturucu

Mark Ponomarev

Mark Ponomarev

17 June 2025

Pyspur: Açık Kaynaklı Yapay Zeka Ajan Oluşturucu

Pyspur Nedir?

Pyspur, görsel, düğüm tabanlı bir ortam sağlayarak yapay zeka ajanlarının geliştirilmesini hızlandırmak için tasarlanmış açık kaynaklı bir platformdur. Mühendislerin, sürükle-bırak tuvali üzerinde modüler bileşenleri bağlayarak karmaşık yapay zeka iş akışları oluşturmasına, hata ayıklamasına ve dağıtmasına olanak tanır.

Pyspur'un çözdüğü temel sorun, yapay zeka geliştirmede yaygın olan şeffaflık eksikliği ve yavaş yineleme döngüsüdür. Geliştiricilerin, ajanlarının mantığındaki her adımın girdilerini ve çıktılarını gerçek zamanlı olarak incelemesine olanak tanıyarak "prompt cehennemi" ve "iş akışı kör noktaları" ile mücadele eder. Platform, Retrieval-Augmented Generation (RAG) gibi gelişmiş desenler için yerleşik destek içerir, döngüde insan kesme noktalarına izin verir ve herhangi bir iş akışını tek tıklamayla üretime hazır bir API olarak dağıtabilir. Nihayetinde Pyspur, mühendislerin daha güvenilir ve hata ayıklanabilir yapay zeka sistemlerini daha hızlı oluşturmasına yardımcı olur.

💡
Güzel API Dokümantasyonu oluşturan harika bir API Test aracı mı istiyorsunuz?

Geliştirici Ekibinizin maksimum üretkenlikle birlikte çalışması için entegre, Hepsi Bir Arada bir platform mu istiyorsunuz?

Apidog tüm taleplerinizi karşılar ve Postman'ı çok daha uygun bir fiyata değiştirir!
button

Başlayalım!

1. Ortam Kurulumu

Hedefinize en uygun kurulum seçeneğini belirleyin. Yerel geliştirme ve deneme için pip kurulumu yeterlidir. Ölçeklenebilir veya üretim sistemleri için, özel bir PostgreSQL örneği ile tekrarlanabilir, konteynerli bir ortam sağladığı için Docker tabanlı kurulum önerilir.

Seçenek A: Yerel pip Kurulumu

Ön Koşullar: Python 3.11+

PyPI'dan Kurun:

pip install pyspur

Proje Dizinini Başlatın: Bu komut, yapılandırma için bir .env dosyası dahil olmak üzere bir proje iskelesi oluşturur.

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

Sunucuyu Başlatın: --sqlite bayrağı, Pyspur'u yerel bir SQLite veritabanı kullanmaya yönlendirir ve ayrı bir veritabanı sunucusuna olan bağımlılığı kaldırır.

pyspur serve --sqlite

Kullanıcı Arayüzüne Erişin: Tarayıcınızda http://localhost:6080 adresine gidin.

Seçenek B: Docker Kurulumu

Ön Koşullar: Docker Engine

Kurulum Betiğini Çalıştırın: Bu komut, Pyspur deposunu klonlayan, docker-compose.dev.yml dosyasını yapılandıran ve uygulama yığınını (ön uç, arka uç, veritabanı) başlatan bir kabuk betiği indirir ve çalıştırır.

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

Kullanıcı Arayüzüne Erişin: http://localhost:6080 adresine gidin.


2. Pyspur ile Bir İş Akışı Oluşturalım

Sıfırdan oluşturmak yerine, mevcut bir Pyspur şablonunu yükleyip analiz edeceğiz. Bu yaklaşım, önemsiz olmayan bir iş akışına gerçekçi bir bakış sunar.

Şablonu Yükleyin:

İş Akışı Analizi:
Bu iş akışı, bir şaka oluşturmak ve ardından onu iyileştirmek için tasarlanmıştır. Bir LLM istemini N kez çalıştıran, N çıktıyı derecelendirmek için başka bir LLM çağrısı kullanan ve en iyisini seçen gelişmiş bir bileşen olan BestOfNNode kullanır.

joke_generator.json dosyasında tanımlanan ana düğümleri inceleyelim:

input_node (InputNode): Bu düğüm, iş akışının giriş noktasını tanımlar.

JokeDrafter (BestOfNNode): Bu, şaka oluşturmanın ilk aşamasıdır.

JokeRefiner (BestOfNNode): Bu düğüm, taslak şakayı alır ve iyileştirir.

Bağlantılar: JSON'daki links dizisi veri akışını tanımlar:
input_node -> JokeDrafter -> JokeRefiner.

Çalıştırma ve İnceleme:


3. Bir RAG Hattı Uygulama

Şaka oluşturucunun bir parçası olmasa da, Retrieval-Augmented Generation (RAG) kritik bir Pyspur yeteneğidir. Bir ajana bilgi eklemek için teknik süreç şöyledir:

  1. Belge Alımı (Koleksiyon): RAG bölümüne gidin. Bir "Belge Koleksiyonu" oluşturup bir dosya (örneğin, bir PDF) yüklediğinizde, Pyspur belgeyi metne ayrıştıran, token uzunluğuna göre yapılandırılabilir parçalara bölen ve bu parçaları kaynak meta verileriyle veritabanında depolayan bir arka uç süreci başlatır.
  2. Vektörleştirme (Dizin): Bir koleksiyondan bir "Vektör Dizini" oluşturmak başka bir süreci tetikler. Pyspur her metin parçasını dolaşır, bir vektör temsili almak için belirtilen bir embedding modeline (örneğin, OpenAI'nin text-embedding-ada-002) bir API çağrısı yapar ve bu vektörleri yapılandırılmış bir vektör veritabanına (örneğin, ChromaDB, PGVector) ekler (upsert).
  3. Alma (İş Akışı Düğümü): Bir iş akışında, Retriever Düğümü belirli bir Vektör Dizinini işaret edecek şekilde yapılandırılır. Çalışma zamanında, giriş sorgusu aynı model kullanılarak embedding yapılır ve en alakalı metin parçalarını almak için vektör veritabanına karşı bir semantik arama (yaklaşık en yakın komşu) gerçekleştirilir. Bu parçalar daha sonra bir sonraki LLM'ye bağlam olarak iletilir.

4. Üretim API'si Olarak Dağıtım

İş akışınız tamamlandığında, onu güvenli bir HTTP uç noktası olarak kullanıma sunabilirsiniz.

Dağıtımı Başlatın: Üst gezinme çubuğundaki "Dağıt" düğmesine tıklayın.

API Çağrı Türünü Seçin:

Uygulamanızla Entegre Edin:
Dağıtım modal penceresi istemci kodu oluşturur. POST isteğinin gövdesi, initial_inputs anahtarının, giriş düğümlerinizin başlığı ile eşleşen anahtarları içeren bir JSON nesnesi olmalıdır.

Örnek Python İstemcisi (Şaka Oluşturucu için):

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)

Sonuç

Pyspur, yapay zeka ajanı geliştirme için sağlam, şeffaf ve teknik olarak temellendirilmiş bir ortam sağlar. Bireysel işlemleri modüler düğümlere soyutlayarak ve görsel bir tuval sağlayarak, mühendislerin ajanlarının üst düzey mantığına odaklanmasına olanak tanır. Platformun gerçek gücü, derinlemesine incelenebilirliğinde (veri akışını izlemenize ve her bileşenin G/Ç'sinde hata ayıklamanıza olanak tanır) ve görsel prototipten üretime hazır API'ye sorunsuz geçişinde yatar. Basit tek çağrılı ajanlardan, Best-of-N veya RAG gibi desenleri kullanan karmaşık, çok aşamalı iş akışlarına geçiş sadece mümkün değil, aynı zamanda sezgiseldir. Pyspur ile inşa ederek sadece kutuları bağlamıyorsunuz; güvenilir, hata ayıklanabilir ve ölçeklenebilir yapay zeka sistemleri tasarlıyorsunuz.

💡
Güzel API Dokümantasyonu oluşturan harika bir API Test aracı mı istiyorsunuz?

Geliştirici Ekibinizin maksimum üretkenlikle birlikte çalışması için entegre, Hepsi Bir Arada bir platform mu istiyorsunuz?

Apidog tüm taleplerinizi karşılar ve Postman'ı çok daha uygun bir fiyata değiştirir!
button

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin