MCP'lere derinlemesine bir bakış, Bölüm 1: MCP nedir ki?

Yapay zeka ile ilgileniyorsanız, Model Context Protocol (MCP) hakkında mutlaka bir şeyler duymuşsunuzdur. Anthropic bu yeni standardı Kasım 2024'te duyurduğundan beri, popülaritesi patlama yaşadı. E-posta göndermek için MCP'ler, web'de arama yapmak için MCP'ler, diğer MCP'leri çalıştıran MCP'ler vardır. MCP'ler, mütevazı LLM'lerin çekme talepleri ve uçak rezervasyonları yapmasına izin veriyor. Mayıs ayında Microsoft, uygulamaların işlevlerini AI ajanlarına açığa çıkarmasını sağlayan Windows için bir MCP Kayıt Defteri bile duyurdu. uygulamanın yapay zeka ajanlarına işlevselliklerini sunmalarını sağlayan.
Harika! Ama nasıl? MCP nedir? Nasıl kullanılır? Neden önceki girişimlerden çok daha popüler hale geldi? Chatbotların gerçek dünyada işler yapmasını nasıl sağlıyor? Peki, kendinize ait bir tane nasıl oluşturabilirsiniz?
DeepL API için DeepL API için kendi MCP sunucumuzu, bu bize çok zor bir iş gibi geldi. Ancak MCP'lerin nasıl çalıştığını, MCP'lerin ajanların araçları nasıl keşfetmesini ve kullanmasını sağladığını ve 10 satırlık kodla temel bir MCP sunucusunu nasıl oluşturabileceğinizi gerçekten anladığınızda, bu o kadar da korkutucu gelmeyecektir. Bu yazı dizisinde, bu konuyu anlaşılır hale getirmeye çalışacağız. Şunları inceleyeceğiz:
- MCP nedir?
- Yapay zeka müşterisinde MCP'yi kullanma
- MCP sunucusu nasıl kurulur?
Hadi gidelim!
MCP ne anlama geliyor?
MCP, ModelBağlamProtokolüanlamına gelir.
"Model", bir yapay zeka modelidir. Bu, herhangi bir tür yapay zeka yüzeyi olabilir, ancak genellikle LLM üzerine inşa edilir. Burada buna yapay zeka ajanı veya yapay zeka asistanı diyeceğiz.
"Bağlam", yapay zeka ajanın çalıştığı bağlamı ifade eder. Yapay zeka'da sık sık "bağlam penceresi"nden bahsedilir. Bu terim, LLM'nin bir komuta yanıt verirken içerdiği tüm bağlamı ifade eder: konuşma geçmişi, sistem komutu ve daha fazlası. MCP'nin çalışması için, bir yapay zeka yüzeyi, altta yatan LLM'ye hangi araçları kullanabileceğini ve bunları nasıl kullanabileceğini belirten ek bir komut verir.
"Protokol", iki varlığın bir ağ üzerinden iletişim kurma şeklini tanımlayan bir dizi kuraldır. Her gün kullandığınız protokollerden biri, web sunucusu ile web müşterisinin iletişimini düzenleyen HTTP (HyperText Transfer Protocol) protokolüdür.
Bunu bir araya getirirsek: "Model Bağlam Protokolü ", yapay zeka modellerinin dış araçları ve kaynakları kullanmasına olanak tanıyan bağlamı sağlayan bir protokoldür.
MCP, iki Anthropic mühendisi. JSON-RPC kullanır. JSON-RPCkullanır. Ve bu, Dil Sunucu Protokolü'tan esinlenmiştir.
MCP bir yazılım, uygulama veya API değildir. Ancak yapay zeka ajanlarına tüm bunlara erişim imkanı sağlar!
MCP ne yapar?
LLM'ler, kullanıcı girdilerine akıllı ve yararlı yanıtlar verebilir. Ancak dış hizmetlere erişimleri yoktur, diğer yazılımlarla iletişim kurma imkanları yoktur, güncel bilgileri alma araçları yoktur. MCP, herhangi bir yapay zeka yüzeyine herhangi bir yazılım hizmetine istek gönderebilme ve yanıt alabilme yeteneği sağlar. Yapay zeka ajanına dış araçlara, kaynaklara ve verilere erişmek için standart bir yol sağlar.
MCP olmadan, bir yapay zeka müşterisi sadece bedeni olmayan, dış dünyaya erişimi olmayan bir beyindir. MCP ile bir yapay zeka müşteri bir ajan olabilir!
MCP'yi kimler kullanabilir?
MCP açık bir standart olduğundan, herkes bir MCP müşterisi veya MCP sunucusu uygulayabilir.
Müşteri, LLM tabanlı herhangi bir uygulama olabilir. MCP'leri aşağıdaki gibi uygulamalarda kullanabilirsiniz Claude Desktop, VSCode, Windsurf ve Cursor. Ya da LangChain gibi bir çerçeve ile oluşturduğunuz bir yapay zeka ajanı ile MCP'leri kullanabilirsiniz. LangChain veya CrewAIgibi bir çerçeve ile oluşturduğunuz bir AI ajanı ile MCP'leri kullanabilirsiniz.
MCP neden bu kadar popüler hale geldi?
Bunun bir nedeni, açık bir standart olmasıdır. Herhangi bir yapay zeka ajanı MCP'yi uygulayabilir, herhangi bir araç da uygulayabilir. Bu, OpenAI'nin Fonksiyon çağırma.
Bu evrensel çözümü oluştururken, MCP'nin yaratıcıları Dil Sunucu Protokolü'nden (LSP) ilham aldılar. LSP'den önce, bir IDE belirli bir dil için otomatik tamamlama veya sözdizimi vurgulaması gibi işlevleri uygulamak istediğinde, kendi entegrasyonunu gerçekleştirmesi gerekiyordu. Sonuç, yaratıcıların son zamanlarda m × n problemiolarak adlandırdıkları bir durumdu. Bu durumda, kullanıcılar her bir IDE/dil kombinasyonu için ayrı ayrı dil hizmetleri uygulamak zorundaydı. LSP ile her dil yalnızca bir entegrasyon kütüphanesine ihtiyaç duyar. Ve LSP'yi destekleyen bir IDE, bu tür herhangi bir dili destekleyebilir. Benzer şekilde, bir hizmet MCP sunucusunu uyguladığında, MCP'yi destekleyen herhangi bir yapay zeka müşterisi onu kullanabilir. Müşteri sadece MCP'yi desteklemesi yeterlidir.
MCP başka açılardan da esnektir. Yerel olarak veya ağ üzerinden çalıştırılabilir. Ve bu, saygın bir şirket olan ve açık standardın faydalarını paylaşacak olan Anthropic'ten geliyor.
Yapay zeka ajanları neden standart bir protokole ihtiyaç duyar?
LLM'ler bilgileri anlamada ve uygulamada bu kadar başarılı olduğuna göre, eğitim verilerinde açıklaması bulunan herhangi bir yazılım hizmetini zaten kullanamazlar mı? Sonuçta, LLM'ler birçok popüler API'yi nasıl kullanacaklarını zaten biliyorlar. Copilot veya Sourcegraph gibi bir kodlama asistanından yardım isterseniz bunu görebilirsiniz.
Ancak, LLM'ye eğitim verilerindeki her API'ye erişim izni verirseniz, kaos ortaya çıkar. Hangi API'leri ne zaman çağıracağını nasıl bilebilir? API anahtarınızı ve kimlik bilgilerinizi nasıl alır ve başka tür erişim gerektiren hizmetler nasıl kullanılır? Kansas City'den Des Moines'e olan sürüş mesafesini veya Bangkok'taki mevcut sıcaklığı bilmek isterseniz ne yaparsınız? Bu bilgiyi bulmanın birçok yolu vardır. Bir kullanıcı olarak, LLM'nizin seçtiği eylemler üzerinde kontrol sahibi olmak istersiniz. Bu, özellikle bilgi almadığında, ancak e-posta göndermek veya pizza sipariş etmek gibi dünyayı etkileyen eylemlerde bulunduğunda geçerlidir.
Doğru, bir ajan düşük seviyeli bir OpenAPI spesifikasyonunu veya bir API'nin dokümantasyonunun tamamını okuyup anlayabilir ve ardından buna göre API çağrıları yapabilir. Ancak MCP, araç üreticilerinin yapay zeka ajanı için özellikle yararlı olacak üst düzey hizmetleri tanımlamasına olanak tanıyarak, bu ajanı yararlı bir yöne yönlendirir. Şu ana kadar, bu alan insanlığın hala üstün olduğu bir alandır.
Bu nedenle, şimdilik en iyi yol, LLM'nin kullanabileceği araçları ve kaynakları ve bunları nasıl kullanabileceğini açıkça tanımlamak olduğu ortaya çıkıyor. MCP bunu eski usul, deterministik bir şekilde yapar - LLM'nin sihrini kullanarak değil, kod ve JSON aracılığıyla.
Peki bir LLM araçları nasıl kullanabilir?
Temelde, LLM, insanlar tarafından metin, görüntü, ses vb. olarak karşımıza çıkan tokenleri üreten bir makinedir. Peki, böyle bir makine araçlara ve kaynaklara nasıl erişebilir? Böyle bir erişime sahip olduğunu nasıl bilir ve hangisini kullanacağını nasıl bilir?
Asıl önemli olan, Maximilian Schwarzmüller'in de belirttiği gibi, LLM'lerin dış dünya ile yalnızca belirteçler aracılığıyla iletişim kurabileceğidir. Giriş olarak token alırlar ve çıktı olarak token üretirler. Ve bu belirteçler, "Bir araç kullanmak istiyorum" anlamına gelen varlıkları içerebilir. Dolayısıyla, bir araç veya kaynağı kullanmak istediğini belirtmek ve bunu gerçekten kullanmak için, LLM, onu çevreleyen yazılımın bir araç çağrısı olarak tanıyacağı ve yakalayacağı standart belirteçler üretir. Bu yazılım daha sonra bir hizmeti çağırır ve çıktıyı LLM'ye geri gönderir.
LLM burada özel tokenlar kullanabilir. Ancak genellikle belirli sınırlayıcılar ve dil kullanır - bu şekilde, mevcut bir LLM'ye ince ayar yaparak bu özelliği sonradan ekleyebilirsiniz. Örneğin, bu örnek ajan çıktısında olduğu gibi, JSON'u çevreleyen köşeli parantez içinde başlangıç ve bitiş etiketleri kullanabilirsiniz:
Tabii ki! Sizin için yeni bir hesap tablosu oluşturabilirim. Bekle biraz...
[tool-start]
{
"tool": "spreadsheets",
"action": "create"
}
[tool-end]
Araştırmacılar, 2023 Toolformer makalesindeyaptıkları şeydi. Makalenin başlığı da "Dil Modelleri Kendilerine Araç Kullanmayı Öğretebilir" diyordu. Bu çalışmada, yazarlar API çağrılarının ve sonuçlarının düz metin temsilini içeren eğitim verileri oluşturdular. Bu ek verilerle LLM'yi ince ayar yaparak, bir komut istemine umut verici bir yanıt üretmek için bu API'leri çağıracak bir LLM ürettiler.
Normal bir format kullandılar:
[işlev_adı(veri) → sonuç]
Örneğin, LLM'lerin matematikle zorlandığını bildikleri için bir Hesap Makinesi aracı sağladılar. Daha sonra eğitim verilerine şu tür karakter dizelerini eklediler:
1.400 katılımcıdan 400'ü (veya [Hesap makinesi (400 / 1400) → 0,29] %29) sınavı geçti.
ve
Adı, İspanyolca'da "kaplumbağa" anlamına gelen "la tortuga" kelimesinden türemiştir. [MT("tortuga") → kaplumbağa] kaplumbağa.
Bu tür verilerle LLM'yi ince ayar yaparak, belirli bir komuta en umut verici yanıtı üretmek için API'leri nasıl çağıracağını bilen bir LLM oluşturdular.
Ancak, araçları kullanabilmesi için LLM'yi ince ayarlamanız gerekmez. Görünüşe göre tek ihtiyacınız olan şey bir uyarı. Bu makale , LLM'ye [[qwen-tool-start]] ve [[qwen-tool-end]] ile sınırlandırılmış JSON araçlarını kullanmayı, yalnızca uygun bir komut istemi vererek nasıl öğretebileceğinizi göstermektedir.
Bunu kendiniz deneyebilirsiniz! En sevdiğiniz chatbot'u ziyaret edin ve ona şunu söyleyin:
Tebrikler! Artık çarpma işlemi yapmak için bir araç kullanma olanağına sahipsiniz. Hesaplama yapmanız gerektiğinde, tek yapmanız gereken aşağıdaki sözdizimini girmektir:
[Matematik]
{
"arg1": {değer},
"arg2": {değer}
}
[/Math]
burada, elbette, her {değer} çarpmak istediğiniz bir değeri temsil eder. Tamam?
Ardından LLM'ye bir matematik problemi verin ve matematik aracınız için verdiğiniz sözdizimini sadık bir şekilde çıktısını almasını izleyin.
Modern LLM'ler hala araçları hemen hemen aynı şekilde kullanıyor. Örneğin, Anthropic burada Claude'un API'larında araçları kullanması için bir sistem komut istemini nasıl oluşturduklarını açıklıyor.
LLM bir aracın çıktısını nasıl işler?
LLM araç çıktısını nasıl alır? Bir kez daha, her şey tokenlerle ilgili. Yapay zeka istemcisi bir araçtan çıktı aldığında, bunu LLM'ye girdi olarak geri besler, ancak LLM'nin bunun son kullanıcı girdisi değil, araç çıktısı olduğunu anlayacağı şekilde.
Hepsini bir araya getirmek
Özetle, bir LLM bir araç kullandığında şu olur:
- Kullanıcı giriş türleri
- LLM bu girdiyi işler
- Çıktı oluştururken, LLM, bir aracı çağırmanın çıktısını tamamlamanın en iyi yolu olduğuna "karar verir". Bu, bir aracı çağırmasına izin vereceğini bilmek üzere eğitilmiş bir dizi belirteç çıktısı ürettiği anlamına gelir.
- Yapay zeka istemcisi bu belirteçleri bir aracı çağırması gereken bir şey olarak tanır, onu yakalar, JSON'u parametrelere ve isteğin içindeki diğer her şeye ayrıştırır ve bunu uygun araca gönderir.
- Araç, API kullanımı içerebilen veya içermeyen çıktı üretir. Bunu yapay zeka müşterisine geri gönderir, yapay zeka müşterisi de bunu LLM'ye gönderir.
- LLM araç çıktısını işler
- LLM bu çıktıyı kullanarak kullanıcı için yanıt oluşturmaya devam eder.
Ve bu, MCP'nin ne olduğu ve LLM'lerde nasıl uygulandığına dair hızlı bir turdu. Bir sonraki yazımda, kendi yapay zeka müşterilerinizde MCP'leri nasıl kullanacağınızı göstereceğim!
Yazar Hakkında
DeepL'in Geliştirici Evangelisti olarak Ben Morss, herkesin DeepL'in API'sini kullanarak dünya standartlarında yapay zeka çevirilerine erişmesine yardımcı olmak için çalışıyor. Daha önce Google'da Chrome Ürün Müdürü ve daha iyi bir web için Geliştirici Temsilcisi olarak görev yapmıştır. Ondan önce New York Times ve AOL'da yazılım mühendisi olarak çalışmış ve bir dönem tam zamanlı müzisyenlik yapmıştı. Harvard Üniversitesi'nde Bilgisayar Bilimleri alanında lisans derecesi ve Kaliforniya Üniversitesi Davis Kampüsü'nde Müzik alanında doktora derecesi almıştır. Hala onu grubuyla müzik yaparken bulabilirsiniz. Ancient Babiesile müzik yaparken, Rock Theory'da pop şarkıları analiz ederken ve Steve Jobs ile pek ilgisi olmayan bir müzikal yazarken görebilirsiniz.