Pyspur là gì?

Pyspur là một nền tảng mã nguồn mở được thiết kế để tăng tốc phát triển các tác nhân AI bằng cách cung cấp một môi trường trực quan, dựa trên các node. Nó cho phép các kỹ sư xây dựng, gỡ lỗi và triển khai các quy trình làm việc AI phức tạp bằng cách kết nối các thành phần mô-đun trên một canvas kéo thả.
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
Vấn đề cốt lõi mà Pyspur giải quyết là sự thiếu minh bạch và chu kỳ lặp lại chậm chạp thường thấy trong phát triển AI. Nó giải quyết "địa ngục prompt" và "điểm mù quy trình làm việc" bằng cách cho phép nhà phát triển kiểm tra đầu vào và đầu ra của mọi bước trong logic của tác nhân theo thời gian thực. Nền tảng này bao gồm hỗ trợ tích hợp cho các mẫu nâng cao như Retrieval-Augmented Generation (RAG), cho phép điểm dừng "human-in-the-loop" (có sự can thiệp của con người), và có thể triển khai bất kỳ quy trình làm việc nào dưới dạng API sẵn sàng cho sản xuất chỉ với một cú nhấp chuột. Cuối cùng, Pyspur giúp các kỹ sư xây dựng các hệ thống AI đáng tin cậy và dễ gỡ lỗi hơn một cách nhanh chóng.
Bạn muốn một nền tảng tích hợp, Tất cả trong Một cho Đội ngũ Phát triển của bạn để làm việc cùng nhau với năng suất tối đa?
Apidog đáp ứng tất cả các yêu cầu của bạn và thay thế Postman với mức giá phải chăng hơn nhiều!
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
Hãy bắt đầu nào!
1. Cài đặt Môi trường
Chọn tùy chọn cài đặt phù hợp nhất với mục tiêu của bạn. Đối với phát triển và thử nghiệm cục bộ, cài đặt pip
là đủ. Đối với các hệ thống có khả năng mở rộng hoặc sản xuất, thiết lập dựa trên Docker được khuyến nghị vì nó cung cấp một môi trường container hóa, có thể tái tạo với một phiên bản PostgreSQL chuyên dụng.
Tùy chọn A: Cài đặt pip
cục bộ
Yêu cầu tiên quyết: Python 3.11+
Cài đặt từ PyPI:
pip install pyspur
Khởi tạo Thư mục Dự án: Lệnh này tạo một khung dự án, bao gồm tệp .env
để cấu hình.
pyspur init my-pyspur-project && cd my-pyspur-project
Khởi động Máy chủ: Cờ --sqlite
chỉ đạo Pyspur sử dụng cơ sở dữ liệu SQLite cục bộ, loại bỏ sự phụ thuộc vào một máy chủ cơ sở dữ liệu riêng biệt.
pyspur serve --sqlite
Truy cập Giao diện người dùng (UI): Điều hướng đến http://localhost:6080
trong trình duyệt của bạn.
Tùy chọn B: Thiết lập Docker
Yêu cầu tiên quyết: Docker Engine
Thực thi Script Thiết lập: Lệnh này tải xuống và chạy một script shell sao chép kho lưu trữ Pyspur, cấu hình tệp docker-compose.dev.yml
và khởi chạy ngăn xếp ứng dụng (frontend, backend, database).
curl -fsSL https://raw.githubusercontent.com/PySpur-com/pyspur/main/start_pyspur_docker.sh | bash -s pyspur-project
Truy cập Giao diện người dùng (UI): Điều hướng đến http://localhost:6080
.
2. Hãy Xây dựng một Quy trình làm việc với Pyspur
Thay vì xây dựng từ đầu, chúng ta sẽ tải và phân tích một mẫu Pyspur hiện có. Cách tiếp cận này cung cấp cái nhìn thực tế về một quy trình làm việc không tầm thường.
Tải Mẫu:
- Trên bảng điều khiển Pyspur, nhấp vào "New Spur".
- Trong cửa sổ bật lên xuất hiện, chọn tab "Templates".
- Chọn mẫu "Joke Generator". Canvas sẽ được điền sẵn một quy trình làm việc đã được xây dựng trước.
Phân tích Quy trình làm việc:
Quy trình làm việc này được thiết kế để tạo ra một câu chuyện cười và sau đó tinh chỉnh nó. Nó sử dụng một BestOfNNode
, một thành phần nâng cao chạy một prompt LLM N lần, sử dụng một lời gọi LLM khác để đánh giá N đầu ra và chọn ra cái tốt nhất.
Hãy cùng phân tích các node chính như được định nghĩa trong joke_generator.json
:
input_node
(InputNode
): Node này định nghĩa điểm vào của quy trình làm việc.
config.output_schema
:{ "topic": "string", "audience": "string" }
- Điều này chỉ định rằng quy trình làm việc yêu cầu hai đầu vào kiểu chuỗi:
topic
của câu chuyện cười vàaudience
dự định.
JokeDrafter
(BestOfNNode
): Đây là giai đoạn đầu tiên của việc tạo câu chuyện cười.
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}}"
- Mẫu Jinja2 này chèn dữ liệu từ
input_node
một cách động. config.samples
:10
- Điều này chỉ thị node tạo ra 10 bản nháp câu chuyện cười.
config.rating_prompt
:"Rate the following joke on a scale from 0 to 10..."
- Sau khi tạo 10 câu chuyện cười, prompt này được sử dụng để yêu cầu một LLM đánh giá từng câu. Node sau đó chọn câu chuyện cười được đánh giá cao nhất.
config.output_schema
:{ "initial_joke": "string" }
- Đầu ra của node là một chuỗi duy nhất: câu chuyện cười tốt nhất từ 10 mẫu.
JokeRefiner
(BestOfNNode
): Node này lấy câu chuyện cười đã soạn thảo và cải thiện nó.
config.system_message
:"Your goal is to refine a joke to make it more vulgar and concise..."
config.user_message
:{{JokeDrafter.initial_joke}}
- Quan trọng là, đầu vào của node này là đầu ra của node
JokeDrafter
. config.samples
:3
- Nó tạo ra 3 phiên bản tinh chỉnh của câu chuyện cười ban đầu.
- Nó cũng sử dụng một rating prompt để chọn ra cái tốt nhất trong ba bản tinh chỉnh.
config.output_schema
:{ "final_joke": "string" }
Liên kết (Links): Mảng links
trong JSON định nghĩa luồng dữ liệu:input_node
-> JokeDrafter
-> JokeRefiner
.
Thực thi và Kiểm tra:
- Trong bảng kiểm thử ở bên phải, sử dụng đầu vào kiểm thử được điền sẵn hoặc tạo đầu vào của riêng bạn (ví dụ: Chủ đề: "Trợ lý AI", Đối tượng: "Kỹ sư phần mềm cấp cao").
- Nhấp vào Run.
- Khi quy trình làm việc thực thi, nhấp vào node
JokeDrafter
. Bạn có thể kiểm trarun_data
của nó, sẽ hiển thị tất cả 10 mẫu đã tạo và đánh giá tương ứng của chúng, cho bạn cái nhìn minh bạch về "quá trình suy nghĩ" của tác nhân. - Câu chuyện cười cuối cùng, đã được tinh chỉnh sẽ có sẵn trong đầu ra của node
JokeRefiner
.
3. Triển khai một Pipeline RAG
Mặc dù không phải là một phần của bộ tạo câu chuyện cười, Retrieval-Augmented Generation (RAG) là một khả năng quan trọng của Pyspur. Dưới đây là quy trình kỹ thuật để thêm kiến thức vào một tác nhân:
- Nạp Tài liệu (Collection): Điều hướng đến phần RAG. Khi bạn tạo một "Document Collection" và tải lên một tệp (ví dụ: PDF), Pyspur khởi tạo một quy trình backend phân tích tài liệu thành văn bản, phân đoạn nó thành các khối có thể cấu hình dựa trên độ dài token, và lưu trữ các khối này cùng với siêu dữ liệu nguồn trong cơ sở dữ liệu của nó.
- Vector hóa (Index): Tạo một "Vector Index" từ một collection kích hoạt một quy trình khác. Pyspur lặp qua từng khối văn bản, thực hiện một lời gọi API tới một mô hình nhúng được chỉ định (ví dụ:
text-embedding-ada-002
của OpenAI) để lấy biểu diễn vector, và upsert các vector này vào một cơ sở dữ liệu vector đã cấu hình (ví dụ: ChromaDB, PGVector). - Truy xuất (Workflow Node): Trong một quy trình làm việc, Retriever Node được cấu hình để trỏ đến một Vector Index cụ thể. Khi chạy,
query
đầu vào của nó được nhúng bằng cùng một mô hình, và một tìm kiếm ngữ nghĩa (approximate nearest neighbor) được thực hiện đối với cơ sở dữ liệu vector để lấy các khối văn bản liên quan nhất. Các khối này sau đó được truyền dưới dạng ngữ cảnh cho một LLM ở downstream.
4. Triển khai dưới dạng API Sản xuất
Khi quy trình làm việc của bạn đã hoàn tất, bạn có thể xuất nó dưới dạng một điểm cuối HTTP an toàn.
Khởi tạo Triển khai: Nhấp vào nút "Deploy" trong thanh điều hướng trên cùng.
Chọn Loại Lời gọi API:
- Blocking (Đồng bộ): Dành cho các quy trình làm việc thực thi nhanh. Client nhận kết quả trong cùng một phản hồi HTTP.
- Điểm cuối (Endpoint):
POST /api/wf/{workflow_id}/run/?run_type=blocking
- Non-Blocking (Bất đồng bộ): Dành cho các quy trình làm việc chạy dài (như bộ tạo câu chuyện cười của chúng ta với hơn 10 lời gọi LLM). Client ngay lập tức nhận được một
run_id
và phải thăm dò một điểm cuối riêng biệt để lấy kết quả. Điều này ngăn chặn tình trạng hết thời gian chờ của client. - Điểm cuối Bắt đầu:
POST /api/wf/{workflow_id}/start_run/?run_type=non_blocking
- Điểm cuối Trạng thái:
GET /api/runs/{run_id}/status/
Tích hợp với Ứng dụng của Bạn:
Cửa sổ triển khai tạo mã client. Phần thân của yêu cầu POST
phải là một đối tượng JSON trong đó khóa initial_inputs
chứa một đối tượng có các khóa khớp với title
của các node đầu vào của bạn.
Ví dụ Client Python (cho Bộ tạo Câu chuyện cười):
import requests
import json
import time
PYSUR_HOST = "http://localhost:6080"
WORKFLOW_ID = "your_workflow_id_here" # Lấy từ cửa sổ deploy
# Các khóa trong dict này phải khớp với 'output_schema' của input_node
payload = {
"initial_inputs": {
"input_node": {
"topic": "Python decorators",
"audience": "Senior Software Engineers"
}
}
}
# 1. Bắt đầu chạy bất đồng bộ
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. Thăm dò kết quả
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)
Kết luận
Pyspur cung cấp một môi trường mạnh mẽ, minh bạch và dựa trên kỹ thuật để phát triển tác nhân AI. Bằng cách trừu tượng hóa các thao tác riêng lẻ thành các node mô-đun và cung cấp một canvas trực quan, nó cho phép các kỹ sư tập trung vào logic cấp cao của các tác nhân của họ. Sức mạnh thực sự của nền tảng nằm ở khả năng kiểm tra sâu sắc của nó—cho phép bạn theo dõi luồng dữ liệu và gỡ lỗi I/O của từng thành phần—và sự chuyển đổi liền mạch từ nguyên mẫu trực quan sang API sẵn sàng cho sản xuất. Việc chuyển từ các tác nhân gọi đơn giản sang các quy trình làm việc phức tạp, nhiều giai đoạn sử dụng các mẫu như Best-of-N hoặc RAG không chỉ khả thi mà còn trực quan. Bằng cách xây dựng với Pyspur, bạn không chỉ kết nối các hộp; bạn đang thiết kế các hệ thống AI đáng tin cậy, dễ gỡ lỗi và có khả năng mở rộng.
Bạn muốn một nền tảng tích hợp, Tất cả trong Một cho Đội ngũ Phát triển của bạn để làm việc cùng nhau với năng suất tối đa?
Apidog đáp ứng tất cả các yêu cầu của bạn và thay thế Postman với mức giá phải chăng hơn nhiều!