MCP (Model Context Protocol): ახალი სტანდარტი AI აგენტებისა და LLM-ების ინტეგრაციისთვის
ბოლო კვირების განმავლობაში, MCP-ის (Model Context Protocol) სიღრმისეული შესწავლის შედეგად, ნათელი გახდა მისი მნიშვნელობა ხელოვნური ინტელექტის განვითარებაში. ეს არის მარტივი, მაგრამ ძლიერი სტანდარტული API, რომელიც დიდ ენობრივ მოდელებს (LLM) საშუალებას აძლევს, ეფექტურად გამოიყენონ სხვადასხვა ხელსაწყოები. სტატია დეტალურად აღწერს MCP კლიენტის განხორციელებას Typescript-ში და ხაზს უსვამს, თუ როგორ ამარტივებს ის Agentic AI-ს შექმნას. იგი განიხილავს LLM-ების „ფუნქციის გამოძახების“ შესაძლებლობებს და აჩვე
ბოლო რამდენიმე კვირის განმავლობაში, ინტენსიურად ვეცნობოდი MCP-ს (Model Context Protocol), რათა გამეგო მის ირგვლივ ატეხილი აჟიოტაჟის არსი. მოკლედ რომ ვთქვათ (TL;DR), ის საკმაოდ მარტივი, თუმცა ამავე დროს ძლიერია: MCP წარმოადგენს სტანდარტულ API-ს, რომელიც ააშკარავებს ხელსაწყოების (Tools) ნაკრებებს, რომელთა დაკავშირებაც შესაძლებელია დიდ ენობრივ მოდელებთან (LLM-ებთან). საკმაოდ მარტივია Inference Client-ის გაფართოება – Hugging Face-ში ჩვენ გვაქვს ორი ოფიციალური კლიენტის SDK: `@huggingface/inference` JS-ში და `huggingface_hub` Python-ში – რათა ის ასევე მოქმედებდეს როგორც MCP კლიენტი და ხელმისაწვდომი ხელსაწყოები MCP სერვერებიდან დაუკავშირდეს LLM-ის ინფერენსს.
თუმცა, ამ პროცესში მივხვდი მეორეს: როგორც კი გექნებათ MCP კლიენტი, აგენტი ფაქტობრივად მის თავზე აგებული უბრალო while ციკლია. ამ მოკლე სტატიაში გაგაცნობთ, თუ როგორ განვახორციელე ეს Typescript-ში (JS), როგორ შეგიძლიათ თქვენც გამოიყენოთ MCP და როგორ გაამარტივებს ის Agentic AI-ს მომავალში.
თუ გაქვთ NodeJS (pnpm ან npm-ით), უბრალოდ გაუშვით ეს ტერმინალში:
```bash
npx @huggingface/hub-agents@latest
```
ან თუ იყენებთ pnpm-ს:
```bash
pnpm dlx @huggingface/hub-agents@latest
```
ეს დააინსტალირებს ჩემს პაკეტს დროებით საქაღალდეში, შემდეგ კი შეასრულებს მის ბრძანებას. ნახავთ, როგორ უკავშირდება თქვენი მარტივი აგენტი ორ განსხვავებულ MCP სერვერს (რომლებიც ლოკალურად მუშაობენ), ტვირთავს მათ ხელსაწყოებს, შემდეგ კი საუბრისთვის მოგთხოვთ ინიციატივას. ნაგულისხმევად, ჩვენი მაგალითის აგენტი უკავშირდება შემდეგ ორ MCP სერვერს: [აქ იგულისხმება სერვერების კონკრეტული მისამართები/პარამეტრები]. შენიშვნა: ეს შეიძლება ცოტა მოულოდნელი იყოს, მაგრამ ამჟამად ყველა MCP სერვერი ფაქტობრივად ლოკალური პროცესია (თუმცა, დისტანციური სერვერები მალე გამოჩნდება).
ამ პირველი ვიდეოსთვის ჩვენი მოთხოვნა იყო: „დაწერე ჰაიკუ Hugging Face-ის საზოგადოების შესახებ და შეინახე ის "hf.txt" სახელწოდების ფაილში ჩემს დესკტოპზე.“ ახლა მოდით ვცადოთ ეს მოთხოვნა, რომელიც ვებ-დათვალიერებას გულისხმობს: „მოძებნე Hugging Face-ის ინფერენსის პროვაიდერები Brave Search-ზე და გახსენი პირველი 3 შედეგი.“
მოდელი/პროვაიდერის წყვილის თვალსაზრისით, ჩვენი მაგალითის აგენტი ნაგულისხმევად იყენებს: [აქ იგულისხმება კონკრეტული მოდელები/პროვაიდერები]. ეს ყველაფერი კონფიგურირებადია გარემოს ცვლადების მეშვეობით! იხილეთ: "Tiny Agent"-ის კოდი მდებარეობს `huggingface.js` მონორეპოს `mcp-client` ქვეპაკეტში, რომელიც არის GitHub მონორეპოზიტორიუმი, სადაც ყველა ჩვენი JS ბიბლიოთეკაა განთავსებული: https://github.com/huggingface/huggingface.js/tree/main/packages/mcp-client. კოდის ბაზა იყენებს თანამედროვე JS ფუნქციებს (განსაკუთრებით, ასინქრონულ გენერატორებს), რაც მნიშვნელოვნად ამარტივებს განხორციელებას, განსაკუთრებით ასინქრონული მოვლენების, როგორიცაა LLM-ის პასუხები.
შესაძლოა, დაგჭირდეთ LLM-ისთვის ამ JS ფუნქციების შესახებ კითხვა, თუ ჯერ არ იცნობთ მათ. ის, რაც ამ ბლოგპოსტს ძალიან მარტივს გახდის, არის ის ფაქტი, რომ LLM-ების უახლესი თაობა (როგორც დახურული, ასევე ღია) გაწვრთნილია ფუნქციების გამოძახებისთვის, იგივე ხელსაწყოების გამოყენებისთვის. ხელსაწყო განისაზღვრება მისი სახელით, აღწერილობით და მისი პარამეტრების JSONSchema წარმოდგენით. გარკვეული გაგებით, ეს არის ნებისმიერი ფუნქციის ინტერფეისის გაუმჭვირვალე წარმოდგენა, გარედან დანახული (რაც ნიშნავს, რომ LLM არ აინტერესებს, თუ როგორ არის ფუნქცია რეალურად განხორციელებული). კანონიკური დოკუმენტაცია, რომელსაც აქ დავუკავშირებ, არის OpenAI-ის ფუნქციების გამოძახების დოკუმენტაცია. (დიახ... OpenAI ფაქტობრივად განსაზღვრავს LLM სტანდარტებს მთელი საზოგადოებისთვის 😅).
ინფერენსის ძრავები გაძლევენ საშუალებას, გადასცეთ ხელსაწყოების სია LLM-ის გამოძახებისას, და LLM თავისუფალია გამოიძახოს ნული, ერთი ან მეტი ამ ხელსაწყოდან. როგორც დეველოპერი, თქვენ ასრულებთ ხელსაწყოებს და მათ შედეგს უკან აბრუნებთ LLM-ში გენერაციის გასაგრძელებლად. გაითვალისწინეთ, რომ ბექენდში (ინფერენსის ძრავის დონეზე) ხელსაწყოები უბრალოდ გადაეცემა მოდელს სპეციალურად ფორმატირებულ `chat_template`-ში, ნებისმიერი სხვა შეტყობინების მსგავსად, შემდეგ კი პასუხიდან ხდება მათი ამოღება (მოდელის სპეციფიკური სპეციალური ტოკენების გამოყენებით) რათა გამოაშკარავდეს, როგორც ხელსაწყოს გამოძახებები. იხილეთ მაგალითი ჩვენს [chat-template playground](https://huggingface.co/docs/transformers/chat_templating)-ში.
ახლა, როცა ვიცით, რა არის ხელსაწყო უახლეს LLM-ებში, მოდით განვახორციელოთ რეალური MCP კლიენტი. ოფიციალური დოკუმენტაცია https://modelcontextprotocol.io/quickstart/client საკმაოდ კარგად არის დაწერილი. თქვენ მხოლოდ უნდა ჩაანაცვლოთ Anthropic კლიენტის SDK-ის ნებისმიერი ხსენება ნებისმიერი სხვა OpenAI-თან თავსებადი კლიენტის SDK-ით. (ასევე არსებობს `llms.txt` ფაილი, რომელიც შეგიძლიათ გადასცეთ თქვენს მიერ არჩეულ LLM-ს, რათა დაგეხმაროთ კოდირებაში).
შეგახსენებთ, რომ ჩვენ ვიყენებთ HF-ის InferenceClient-ს ჩვენი ინფერენსის კლიენტისთვის. სრული `McpClient.ts` კოდის ფაილი აქ არის, თუ გსურთ მიჰყვეთ რეალურ კოდს 🤓 ჩვენი `McpClient` კლასი მოიცავს: [აქ იგულისხმება კლასის დეტალები]. MCP სერვერთან დასაკავშირებლად, ოფიციალური `@modelcontextprotocol/sdk/client` TypeScript SDK უზრუნველყოფს `Client` კლასს `listTools()` მეთოდით: `StdioServerParameters` არის ინტერფეისი MCP SDK-დან, რომელიც გაძლევთ საშუალებას მარტივად გაუშვათ ლოკალური პროცესი: როგორც ადრე აღვნიშნეთ, ამჟამად ყველა MCP სერვერი ფაქტობრივად ლოკალური პროცესია. თითოეული MCP სერვერისთვის, რომელსაც ვუკავშირდებით, ოდნავ ვაფორმატებთ მისი ხელსაწყოების სიას და ვამატებთ მათ `this.availableTools`-ში. მარტივია, უბრალოდ გადასცემთ `this.availableTools`-ს თქვენს LLM chat-completion-ს, თქვენს ჩვეულ შეტყობინებების მასივთან ერთად: `tool_choice: "auto"` არის პარამეტრი, რომელსაც გადასცემთ LLM-ს, რათა მან გამოიმუშაოს ნული, ერთი ან მრავალი ხელსაწყოს გამოძახება. გამოსავლის ანალიზის ან სტრიმინგისას, LLM წარმოქმნის ხელსაწყოების გამოძახებებს (ანუ ფუნქციის სახელს და JSON-კოდირებულ არგუმენტებს), რომლებიც თქვენ (როგორც დეველოპერმა) უნდა გამოთვალოთ. MCP კლიენტის SDK კიდევ ერთხელ ამარტივებს ამას; მას აქვს `client.callTool()` მეთოდი: საბოლოოდ, თქვენ დაამატებთ მიღებულ ხელსაწყოს შეტყობინებას თქვენს შეტყობინებების მასივს და დააბრუნებთ LLM-ში. ახლა, როცა გვაქვს MCP კლიენტი, ... [სტატია სავარაუდოდ გაგრძელდება ამ წერტილიდან].
თეგები:
#ხელოვნური ინტელექტი
#openai
#llm
#ai აგენტები
#დიდი ენობრივი მოდელები
#hugging face
#ინფერენსი
#python
#mcp
#api
#javascript
#sdk
#model context protocol
#ხელსაწყოები
#typescript
#ფუნქციის გამოძახება
წყარო: huggingface.co
AI-ით გადამუშავებული
მსგავსი სტატიები
ხელოვნური ინტელექტი
Anthropic-ის Claude-ის აღზევება Apple App Store-ის რეიტინგებში პენტაგონთან მოლაპარაკებების ფონზე
ხელოვნური ინტელექტი
ტრამპის ადმინისტრაცია Anthropic-ს სანქციებს უწესებს ხელოვნური ინტელექტის გამოყენებაზე უარის გამო: ექსპერტი ინდუსტრიის უსაფრთხოების ხარვეზებზე საუბრობს
ხელოვნური ინტელექტი