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.
Drag & Drop to build AI Agents.
— Shubham Saboo (@Saboo_Shubham_) December 19, 2024
And deploy to API in one click with Nocode.
100% Opensource. pic.twitter.com/iPEJEzIHVI
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.
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!
We’re thrilled to share that MCP support is coming soon to Apidog! 🚀
— Apidog (@ApidogHQ) March 19, 2025
Apidog MCP Server lets you feed API docs directly to Agentic AI, supercharging your vibe coding experience! Whether you're using Cursor, Cline, or Windsurf - it'll make your dev process faster and smoother.… pic.twitter.com/ew8U38mU0K
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:
- Pyspur panosunda, "Yeni Spur"a tıklayın.
- Görünen modal pencerede, "Şablonlar" sekmesini seçin.
- "Şaka Oluşturucu" şablonunu seçin. Tuval, önceden oluşturulmuş bir iş akışı ile dolacaktır.
İş 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.
config.output_schema
:{ "topic": "string", "audience": "string" }
- Bu, iş akışının iki dize girişi gerektirdiğini belirtir: şakanın
konusu
ve hedeflenenkitlesi
.
JokeDrafter
(BestOfNNode
): Bu, şaka oluşturmanın ilk aşamasıdır.
config.system_message
:"You are a stand-up comedian who uses dark humor like Ricky Gervais or Jimmy Carr..."
config.user_message
:"Your audience is: {{input_node.audience}}\nThe topic should be about {{input_node.topic}}"
- Bu Jinja2 şablonu,
input_node
'dan gelen veriyi dinamik olarak ekler. config.samples
:10
- Bu, düğüme 10 şaka taslağı oluşturmasını söyler.
config.rating_prompt
:"Rate the following joke on a scale from 0 to 10..."
- 10 şaka oluşturulduktan sonra, her birini bir LLM'ye derecelendirmek için bu istem kullanılır. Düğüm daha sonra en yüksek puan alan şakayı seçer.
config.output_schema
:{ "initial_joke": "string" }
- Düğümün çıktısı tek bir dizedir: 10 örnekten en iyi şaka.
JokeRefiner
(BestOfNNode
): Bu düğüm, taslak şakayı alır ve iyileştirir.
config.system_message
:"Your goal is to refine a joke to make it more vulgar and concise..."
config.user_message
:{{JokeDrafter.initial_joke}}
- Önemli olarak, bu düğümün girdisi
JokeDrafter
düğümünün çıktısıdır. config.samples
:3
- Başlangıç şakasının 3 iyileştirilmiş versiyonunu oluşturur.
- Ayrıca, üç iyileştirmeden en iyisini seçmek için bir derecelendirme istemi kullanır.
config.output_schema
:{ "final_joke": "string" }
Bağlantılar: JSON'daki links
dizisi veri akışını tanımlar:input_node
-> JokeDrafter
-> JokeRefiner
.
Çalıştırma ve İnceleme:
- Sağdaki test panelinde, önceden doldurulmuş test girdisini kullanın veya kendi girdinizi oluşturun (örneğin, Konu: "Yapay zeka asistanları", Kitle: "Geliştiriciler").
- Çalıştır'a tıklayın.
- İş akışı çalışırken,
JokeDrafter
düğümüne tıklayın. Ajanın "düşünce sürecine" şeffaf bir bakış sağlayan, oluşturulan 10 örneğin tamamını ve ilgili derecelendirmelerini gösterecek olanrun_data
'sını inceleyebilirsiniz. - Son, iyileştirilmiş şaka,
JokeRefiner
düğümünün çıktısında mevcut olacaktır.
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:
- 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.
- 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). - 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:
- Engelleme (Senkron): Hızlı çalışan iş akışları için. İstemci sonucu aynı HTTP yanıtında alır.
- Uç Nokta:
POST /api/wf/{workflow_id}/run/?run_type=blocking
- Engellemeyen (Asenkron): Uzun süren iş akışları için (10'dan fazla LLM çağrısı olan şaka oluşturucumuz gibi). İstemci hemen bir
run_id
alır ve sonuç için ayrı bir uç noktayı yoklamalıdır (poll). Bu, istemci zaman aşımlarını önler. - Başlangıç Uç Noktası:
POST /api/wf/{workflow_id}/start_run/?run_type=non_blocking
- Durum Uç Noktası:
GET /api/runs/{run_id}/status/
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.
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!