תוכן עניינים
נקודה מרכזית
הריפו Pi Monorepo הוא ערכת כלים מאוחדת שמרכזת את כל מה שצריך לנו כדי לבנות סוכני AI למערכת מגובשת אחת. פותח על ידי Mario Zechner, הוא מבטל את הצורך לחבר ביניהן ספריות מפוזרות על ידי אספקת APIs מנורמלים ל-LLM, רנטיימים לסוכנים, קומפוננטות UI וכלי דיפלוי במונורפו יחיד.
מה זה Pi Monorepo?
הריפו Pi Monorepo הוא ערכת כלים מקיפה לפיתוח שנועדה לייעל את כל התהליך של בניית סוכני AI. הפרויקט pi-mono פותר את בעיית הפיצול שכולנו מתמודדים איתה בפיתוח AI - הצורך המתמיד לשלב ולתחזק תאימות בין ספריות שונות לגישה ל-LLM, תיאום סוכנים, ממשקי משתמש ותשתית דיפלוי.
הבעיה שכולנו מכירים
לבנות סוכן AI היום זה לז'ונגל עם מספר דאגות בו זמנית. אנחנו צריכים להתחבר לספקי LLM שונים כמו OpenAI ו-Anthropic, כל אחד עם ה-SDK והמוסכמות של ה-API שלו. אנחנו צריכים לוגיקת רנטיים של סוכן כדי לטפל בקריאות לכלים, ניהול מצב וזרימת שיחה. אנחנו צריכים ממשקי משתמש גם לשורת פקודה וגם לאינטראקציות ווב. ולבסוף, אנחנו צריכים להבין דיפלוי ותשתית.
מסתבר שרובנו נגמרים עם מפלצת פרנקנשטיין של תלויות - ה-SDK הרשמי של OpenAI פה, עטיפה מותאמת אישית ל-Anthropic שם, איזה פריימוורק סוכנים שמצאנו ב-GitHub, ספריית UI נפרדת, וסקריפטים לדיפלוי שחיברנו בעצמנו. כל עדכון לחתיכה אחת מסכן לשבור אחרת. קבצי ה-package.json או requirements.txt שלנו הופכים לתיעוד ארכיאולוגי של התסכול שלנו.
פריימוורקים קיימים בדרך כלל פותרים חתיכה אחת מהפאזל הזה. LangChain מתמקד בתיאום אבל משאיר את ה-UI והדיפלוי לנו. ה-AI SDK של Vercel מטפל בתגובות סטרימינג בצורה יפהפייה אבל לא מספק רנטיימים לסוכנים. אנחנו עדיין עושים את עבודת האינטגרציה בעצמנו.
איך Pi Monorepo עובד
תחשבו על Pi Monorepo כמו בית מלאכה משולב במקום לשכור כלים מחנויות שונות. במקום לתחזק מנויים נפרדים וללמוד ממשקים שונים, כל מה שאנחנו צריכים נמצא במקום אחד עם עיצוב API עקבי.
הארכיטקטורה המרכזית מורכבת ממספר חבילות שעובדות ביחד. החבילה @mariozechner/pi-ai מספקת גישה מנורמלת לספקי LLM שונים - מה שנקרא, אנחנו כותבים את הקוד שלנו פעם אחת ויכולים להחליף בין OpenAI, Anthropic או ספקים אחרים בלי לשנות את לוגיקת האפליקציה. החבילה @mariozechner/pi-agent-core מטפלת במה שנקרא agent runtime - תחשבו על זה כמו סביבת ההרצה שבה הסוכן שלנו מקבל החלטות, קורא לכלים ומנהל מצב שיחה.
בואו נפרק את זה: לממשקי משתמש, אנחנו מקבלים ספריות ייעודיות גם לממשקי טרמינל (TUIs) וגם לממשקי ווב. ספריית הטרמינל מאפשרת לנו לבנות חוויות שורת פקודה עשירות עם אינדיקטורים של התקדמות, פרומפטים אינטראקטיביים ופלט מעוצב. ספריית ה-UI לווב מספקת קומפוננטות React שתוכננו במיוחד לאינטראקציות של סוכנים - תצוגות טקסט בסטרימינג, ויזואליזציות של הרצת כלים ושרשור שיחות.
התחלה מהירה
ככה אנחנו מתחילים עם Pi Monorepo:
# התקנת החבילות שאנחנו צריכים
npm install @mariozechner/pi-ai @mariozechner/pi-agent-core
# הגדרת סוכן בסיסית
import { createAgent } from '@mariozechner/pi-agent-core';
import { openai } from '@mariozechner/pi-ai';
const agent = createAgent({
provider: openai,
model: 'gpt-4',
tools: [searchTool, calculatorTool]
});
const response = await agent.run('What is 15% of 240?');דוגמה אמיתית
נגיד שאנחנו רוצים לבנות עוזר מחקר שיכול לחפש באינטרנט ולסכם ממצאים. עם Pi Monorepo, אנחנו יכולים להחליף ספקי LLM בלי לכתוב מחדש את הלוגיקה של הסוכן:
import { createAgent } from '@mariozechner/pi-agent-core';
import { openai, anthropic } from '@mariozechner/pi-ai';
import { webSearchTool } from './tools';
// קונפיגורציה של הסוכן שלנו עם OpenAI
const agent = createAgent({
provider: openai, // אפשר להחליף ל-anthropic
model: 'gpt-4-turbo',
systemPrompt: 'You are a research assistant.',
tools: [webSearchTool],
maxIterations: 5
});
// הרצת שאילתת מחקר
const result = await agent.run(
'Find recent developments in quantum computing and summarize the top 3'
);
console.log(result.response);
console.log('Tools used:', result.toolCalls);פיצ'רים מרכזיים
- נורמליזציה של ספקים - החבילה
@mariozechner/pi-aiמפשטת את ההבדלים בין ספקי LLM. תחשבו על זה כמו להשתמש באותו שלט רחוק לטלוויזיות של מותגים שונים - הקוד שלנו נשאר זהה בין אם אנחנו משתמשים ב-OpenAI, Anthropic או ספקים אחרים. - ניהול רנטיים של סוכנים - הקטע המדליק הוא שהחבילה המרכזית מטפלת בקריאות לכלים, שמירת מצב וזרימת שיחה. זה כמו מנהל פרויקט מנוסה ששומר מעקב על מה נעשה, מה צריך להיעשות ומתאם את כל החלקים הנעים.
- קומפוננטות UI מוכנות - במקום לבנות ממשקי טרמינל מאפס או לחבר קומפוננטות React, אנחנו מקבלים ספריות מוכנות מראש שמותאמות לאינטראקציות של סוכנים. זה ההבדל בין לבשל ממרכיבים לבין לחמם ארוחה מוכנה - שניהם עובדים, אבל אחד חוסך שעות.
- תבניות לייצור - המונורפו כולל דוגמאות עובדות כמו בוט לסלאק ו-CLI לניהול פודים של vLLM. אלה לא דמואים של צעצועים - אלה יישומים מוכנים לייצור שאנחנו יכולים להשתמש בהם כנקודות התחלה.
- ארכיטקטורת מונורפו - כל החבילות חולקות את אותו ריפוזיטורי, ניהול גרסאות וכלי בנייה. כשאנחנו מעדכנים חבילה אחת, אנחנו יודעים מיד אם זה שובר אחרת. זה כמו שיש לנו את כל הכלים בארגז כלים אחד במקום פזורים ברחבי המוסך.
מתי להשתמש ב-Pi Monorepo לעומת אלטרנטיבות
LangChain מציע גמישות מקסימלית ואקוסיסטם ענק של אינטגרציות. תבחרו ב-LangChain כשאנחנו צריכים לחבר עשרות שירותים שונים או רוצים דוגמאות קהילתיות נרחבות. LangChain הוא האולר השוויצרי - הרבה כלים להרבה סיטואציות.
ה-AI SDK של Vercel מצטיין בתגובות סטרימינג ואינטגרציית React, במיוחד לממשקי צ'אט מול לקוחות. תבחרו בו כשהמטרה העיקרית שלנו היא חוויית צ'אט מלוטשת לווב עם מינימום מורכבות בבקאנד.
Pi Monorepo נמצא בין הקצוות האלה. תבחרו בו כשאנחנו רוצים מערכת מגובשת בלי עקומת הלמידה של משטח ה-API העצום של LangChain, אבל עם יותר מבנה מאשר לבנות מאפס. זה מתאים במיוחד כשאנחנו בונים סוכנים או כלים מרובים ורוצים שיחלקו ארכיטקטורה עקבית.
בעיניי - האם אשתמש בזה?
לעניות דעתי, Pi Monorepo מטפל בנקודת כאב אמיתית. כולנו בילינו שעות בדיבאג של קונפליקטים בין גרסאות של SDKs של LLM או בכתיבת boilerplate כדי לנרמל תגובות API שונות. שיש לנו שכבת נורמליזציה מובנית חוסכת עומס קוגניטיבי.
מבנה המונורפו הוא גם חוזקה וגם מגבלה. אנחנו מקבלים עקביות ועדכונים קלים, אבל אנחנו גם מתחייבים להחלטות הארכיטקטוניות של Mario Zechner. לצוותים שבונים סוכני AI מרובים או כלים, הטרייד-אוף הזה הגיוני - אנחנו מקימים דפוסים פעם אחת ומשתמשים בהם שוב. לפרויקטים חד-פעמיים או לסוכנים מותאמים מאוד, המבנה עשוי להרגיש מגביל.
אני במיוחד מתעניין ביישומים של ה-CLI של vLLM ובוט הסלאק. אלה מראים שהערכת הכלים יכולה לטפל בתרחישי דיפלוי אמיתיים, לא רק פיתוח לוקאלי. העובדה שאנחנו יכולים להריץ את אותו קוד של סוכן עם ספקי LLM שונים היא ענקית לאופטימיזציה של עלויות ואסטרטגיות גיבוי.
המגבלה העיקרית היא בשלות האקוסיסטם. ל-LangChain יש שנים של תרומות קהילתיות וטיפול במקרי קצה. Pi Monorepo חדש יותר, אז ייתכן שנתקל בתרחישים שבהם אנחנו צריכים להרחיב או לתקן את החבילות בעצמנו. למערכות ייצור, זה אומר שאנחנו צריכים להיות נוחים לקרוא ואולי לשנות את קוד המקור.
קישור לריפו: pi-mono
שאלות נפוצות
מה זה Pi Monorepo?
Pi Monorepo הוא ערכת כלים מאוחדת שמספקת APIs מנורמלים ל-LLM, רנטיימים לסוכנים, ספריות UI וכלי דיפלוי לבניית סוכני AI במערכת מגובשת יחידה.
מי יצר את Pi Monorepo?
Pi Monorepo נוצר על ידי Mario Zechner (badlogic ב-GitHub), הידוע בזכות תרומותיו לפרויקטים רבים בקוד פתוח.
מתי כדאי להשתמש ב-Pi Monorepo?
כדאי להשתמש ב-Pi Monorepo כשאנחנו רוצים מערכת מגובשת לבניית סוכני AI בלי המורכבות של הרכבת ספריות מרובות בעצמנו, במיוחד כשבונים סוכנים מרובים שצריכים לחלוק ארכיטקטורה עקבית.
מה האלטרנטיבות ל-Pi Monorepo?
האלטרנטיבות העיקריות כוללות את LangChain (גמישות מקסימלית, אקוסיסטם גדול), Vercel AI SDK (מותאם לממשקי צ'אט לווב), ובנייה מאפס עם SDKs בודדים של LLM. Pi Monorepo מציע יותר מבנה מגישות DIY אבל פחות בשלות אקוסיסטם מ-LangChain.
מה המגבלות של Pi Monorepo?
Pi Monorepo חדש יותר מפריימוורקים מבוססים כמו LangChain, אז יש לו קהילה קטנה יותר ופחות מקרי קצה מטופלים. אנחנו גם מתחייבים לדפוסים הארכיטקטוניים שלו, שעשויים לא להתאים ליוזקייסים מותאמים מאוד.
