Genel bakış
Ajanınızın yanında çalıştırdığınız bir süreç; ajanınızın etrafına kurulduğu bir kütüphane değil. Çalıştırmayı adımlar arasında tutar ve her adımı kaydeder. Bu sayfa, bütünün biçimini tek okumada verir.
Tek bir süreç
mcpd tek bir süreçle iki iş yapar. Kalıcı bir çalıştırmayı adımları arasında tutar: imleci, yeniden denemeleri, zamanlayıcıları ve beklemeleri; işi her adımın içinde, istediğiniz dilde, sizin kodunuz yapar. Bir de ajanınızın yaptıklarını alır, saklar ve okuyabileceğiniz çalıştırmalar olarak size geri verir. SQLite kendisine bağlanmış tek bir ikili dosyadır. Ayağa kaldırılacak bir veritabanı, yanında çalıştırılacak bir collector ve hiçbir yerde hesap yoktur.
Daemon 4317 portunu dinler ve o tek porttan beş şey sunar:
-
/v1/traces,/v1/logsve/v1/metricsüzerinde OTLP alımı; böylece var olan bir OpenTelemetry kurulumu için yeni kod gerekmez. -
/v1/ingestüzerinde yerel alım; modelin OTLP'de yeri olmayan parçalarını, puanlar ve insan geri bildirimi dahil, bu taşır. -
/v1/apialtındaki okuma API'si; arayüz de SDK'lar da bunu kullanır. Elinizdekinin ardında ayrı bir özel API yoktur. -
/v1/api/runs,/v1/api/eventsve/v1/api/stepsaltındaki çalıştırma yüzeyi: tanımlar, çalıştırmalar, bir beklemeyi yanıtlayan olaylar ve bir worker'ın konuştuğu protokol. Bakınız İş akışları. /adresindeki operatör arayüzü, ikili dosyanın içine gömülü.
Tek port bir kısayol değil, bir dağıtım kararıdır. Bir collector, bir veritabanı ve bir arayüz; çalıştırılacak üç şey, yükseltilecek üç şey ve bir trace'in arada kaybolabileceği üç yer demektir.
Sürüm çıktığında kurulumun tamamı
docker run -p 4317:4317 ghcr.io/mcpd/mcpd Henüz bir sürüm yayımlanmadı.
Bu sitedeki komutların adını verdiği imaj, chart ve paketler planlanan dağıtımdır; hiçbiri yayımlanmadı. Bugün çalışan yol, kaynaktan derlemektir ve Rust ile Node gerekir:
Derleyip çalıştırma
git clone https://github.com/mcpd/mcpd && cd mcpd && make build && ./target/release/mcpd demo Bilerek ne değildir
Buradaki değerin çoğu, mcpd'nin yapmayı reddettiği şeylerden gelir. Her ret, ajanınızı değiştirmek zorunda kalmanız için bir nedeni ortadan kaldırır.
- Framework değil. mcpd modelinizi asla çalıştırmaz, sizin için seçmez, sağlayıcı istemcinizi sarmalamaz. Çalıştırmayı adımlar arasında tutar ve bir adımın içindeki her şeyi kodunuza bırakır. Kodunuz, mcpd'yi benimsedikten sonra da modeli önceki gibi çağırır.
- İstek yolunda değil. Ajanınızla bir sağlayıcı arasında asla durmaz. Kullanıcılarınızın gördüğü hiçbir şey mcpd'nin ayakta olmasına bağlı değildir, çünkü gördükleri hiçbir şey onun içinden geçmez.
- Servis değil. Daemon varsayılan olarak hiçbir yeri
çağırmaz. Telemetri, lisans denetimi ve satıcı endpoint'i yoktur. Yapacağı
tek giden trafik, sizin yapılandırdığınızdır: bir
--forward-endpoint, bir monitörün webhook'u ya da bir yargıç modeli. Bunların hiçbirini ayarlamazsanız prompt'larınız, onu çalıştırdığınız makineden hiç çıkmaz. - Zorunlu bir bağımlılık değil. mcpd'yi altyapınızdan silerseniz duran tek şey kayıt olur.
Altı sinyal
mcpd altı tür şey saklar ve onları bir arada saklar. Span'ler, işin kendisidir. Loglar, bir çalıştırmanın ürettiği satırlardır. Metrikler zaman içindeki sayılardır. Puanlar, bir çalıştırma hakkında makinenin yargısıdır. Geri bildirim ise insanın yargısıdır. Yön notu ise bir modelin, bitmiş bir çalıştırma hakkında yazdığı tek cümledir.
Hepsini tek bir depoda tutmak işin bütün amacıdır. Her sinyal, ait olduğu trace kimliğini ve span kimliğini taşır; böylece “bu müşterinin şikâyet ettiği çalıştırmada model gerçekte ne söyledi ve bu ne kadara mal oldu” sorusu, dört ayrı araç ve gözle eşleştirilecek bir zaman damgası değil, tek bir sorgu olur.
-
Spans
What ran, nested, with timings
-
Logs
Lines the run emitted
-
Metrics
Numbers, with exemplars back to a run
-
Scores
Machine evaluation
-
Feedback
What a person thought
-
Aspect notes
A sentence a model wrote about the run
Puanlar ile geri bildirim bilerek ayrı tutulur. Bir puanlayıcının 0.8'i ile bir insanın beğenmemesi farklı şeyleri ölçer; ikisinin ortalamasını almak hiçbir anlamı olmayan bir sayı üretir.
Neden framework değil de daemon
Framework'ün getirdiği gözlemlenebilirlik iyidir ve framework'e bağlı gelir. Görülebilmesi için ajanın onunla, çoğunlukla tek bir dilde yazılmış olması beklenir. Bu, yeni bir proje için makul, hâlihazırda var olan ve çalışan bir ajan için imkânsız bir ödünleşimdir. Framework iş akışları da aynı ödünleşim: her adım framework'ün dilinde yazıldığı ve onun süreci içinde çalıştığı sürece kalıcıdır.
Daemon ikisini de tersine çevirir. Bir iş akışının grafiği, daemon'un tuttuğu veridir; adım gövdeleri ise sizin sürecinizin tuttuğu koddur ve her dilin konuşabildiği bir HTTP protokolü üzerinden teker teker kiralanarak alınır. Daemon bir modeli, bir prompt'u ya da bir kimlik bilgisini hiç görmez. Bakınız İş akışları ve Worker'lar.
Daemon ödünleşimi tersine çevirir. mcpd, bir bağımlılık değil bir protokol olan
OTLP'yi konuşur; bu yüzden her dilde ve her framework'le yazılmış ajanları,
mcpd var olmadan önce yazılmış olanlar dahil kaydeder. Ajanınız zaten
OpenTelemetry dışa aktarıyorsa
OTEL_EXPORTER_OTLP_ENDPOINT değişkenini mcpd'ye yöneltmek
entegrasyonun tamamıdır.
SDK'lar, OTLP'nin prompt, tamamlama, token sayısı ya da puan için bir sözcük dağarcığı olmadığı için vardır; oysa sizin aradığınız alanlar bunlardır. Birini kullanmak bir seçimdir, koşul değil. Altısı da aynı davranır: bir span kaydetmek sınırlı bir kuyruğa ekleyip döner, ağ işi arka plandaki bir worker'da olur ve ölçümleme yolunda hiçbir şey hata fırlatmaz. Gözlediği sistemi çökertebilen gözlemlenebilirlik, hiç olmamasından kötüdür.
Tek ikili dosya, iki dağıtım
Dizüstünüzde çalıştırdığınız konteyner, birinin kümesinde Deployment olarak çalışan konteynerin aynısıdır. Saklama, maskeleme, örnekleme ve API anahtarları aynı ikili dosyanın seçenekleridir; farklı bir derleme ya da bir lisans katmanı değil. Yalnızca sahip olamayacağınız bir sürümde bulunan özellik yoktur.
Varsayılanlar dizüstü için ayarlanmıştır; yani hiçbir anahtar yapılandırılmamışken alım da okuma da açıktır. mcpd bu durumdayken loopback dışı bir adresi dinliyorsa başlangıçta yüksek sesle uyarır. Yine de başlar, çünkü başlamamak hedeflediği kişi için beş dakikalık yolu bozardı; ama susmak sorumsuzluk olurdu.
Bundan sonra nereye
- Şimdi çalıştırmak: Hızlı başlangıç kendi ajanınızdan bir trace'i ekrana getirir, Kurulum ise bütün yolları anlatır.
- Sözcükleri öğrenmek: Kavramlar, belgelerin geri kalanının varsaydığı trace, span, tür ve ilişkilendirmeyi tanımlar.
- Bir çalıştırmayı adımlar arasında tutmak: İş akışları, ardından Worker'lar ve Çalıştırmalar.
- Zaten OpenTelemetry kullanıyorsanız: OTLP yolunun tamamı, mcpd'nin standart özniteliklerden çıkardıkları dahil.
- Bunu başkaları için çalıştırmak: Docker ve Kubernetes, ardından Maskeleme ve saklama.
mcpd, Apache-2.0 lisanslıdır. Girişteki protokol, çıkıştaki biçim ve etrafındaki lisans açıktır; bu yüzden ayrılmak, gelmek kadar ucuzdur.