एआई एजेंट फ्रेमवर्क + एमसीपी इंटीग्रेशन नानी लेवल ट्यूटोरियल: स्क्रैच से एक एजेंट बनाएं जो बाहरी टूल को कॉल कर सके

🛒 डेवलपर्स के लिए, पर्यावरण की तैयारी, एमसीपी सर्वर लेखन से लेकर लैंगग्राफ संयुक्त डिबगिंग तक एक वन-स्टॉप परिचयात्मक ट्यूटोरियल।

ट्यूटोरियल उद्देश्य

यह ट्यूटोरियल आपको स्क्रैच से एक एआई एजेंट बनाने में ले जाएगा जो बाहरी टूल को कॉल कर सकता है: पहले एक टूल सर्विस (एमसीपी सर्वर) लिखने के लिए पायथन का उपयोग करें जो एमसीपी मानकों का अनुपालन करता है, और फिर इसे एक संवादी एजेंट से कनेक्ट करने के लिए लैंगग्राफ का उपयोग करें। सीखने के बाद, आप न केवल उदाहरणों को देख पाएंगे, बल्कि एजेंट से जुड़ने के लिए अपने सिस्टम के एपीआई को एक टूल में समाहित कर पाएंगे।

तैयारी चेकलिस्ट

  • [ ] एक इंटरनेट-सक्षम विकास मशीन (मैकओएस/लिनक्स/विंडोज स्वीकार्य है), पायथन 3.10 और इसके बाद का संस्करण।
  • [ ] यूवी स्थापित करें (अनुशंसित, पायथन पर्यावरण और निर्भरता को प्रबंधित करने के लिए उपयोग किया जाता है): कर्ल -एलएसएसएफ https://astral.sh/uv/install.sh | sh, फिर source ~/.zshrc
  • [ ] एक उपलब्ध एलएलएम एपीआई कुंजी (ओपनएआई / एंथ्रोपिक / घरेलू बड़े मॉडल स्वीकार्य हैं, यह ट्यूटोरियल एक उदाहरण के रूप में ओपनएआई संगत इंटरफ़ेस का उपयोग करता है)।
  • [ ] एक "वास्तविक उपकरण" उदाहरण तैयार करें: यह ट्यूटोरियल उपकरण के रूप में "स्थानीय फ़ाइल पढ़ें" का उपयोग करता है, आप इसे मौसम एपीआई या डेटाबेस क्वेरी में भी बदल सकते हैं।
  • [ ] (वैकल्पिक) एमसीपी इंस्पेक्टर विज़ुअल डिबगिंग टूल इंस्टॉल करें।

संस्करण युक्तियाँ: एमसीपी एसडीके और लैंगग्राफ तेजी से पुनरावृत्त होते हैं। निम्नलिखित आदेशों में संस्करण संख्याएँ आधिकारिक वास्तविक समय पृष्ठ के अधीन हैं; जब इंस्टॉलेशन विफल हो जाए, तो त्रुटि रिपोर्ट में संकेतों को प्राथमिकता दें।

चरण एक: प्रोजेक्ट और वर्चुअल वातावरण बनाएं

एमकेडीआईआर एमसीपी-एजेंट-डेमो और सीडी एमसीपी-एजेंट-डेमो
यूवी इनिट --पायथन 3.11
यूवी जोड़ें "एमसीपी[सीएलआई]" लैंगग्राफ लैंगचैन-ओपनाई पायथन-डोटेनव

ध्यान दें: uv init pyproject.toml और main.py उत्पन्न करेगा; mcp[cli] MCP रनटाइम और डिबगिंग कमांड प्रदान करता है।

चरण 2: पहला एमसीपी सर्वर लिखें

"स्थानीय फ़ाइल सामग्री पढ़ने" के लिए एक उपकरण लागू करने के लिए server.py बनाएं:

mcp.server.fastmcp से FastMCP आयात करें

एमसीपी = फास्टएमसीपी ("फ़ाइल-रीडर")

@mcp.tool()
def read_file(पथ: str) -> str:
    """निर्दिष्ट पथ पर पाठ फ़ाइल की सामग्री को पढ़ें। बाहरी टूल को कॉल करने वाले एजेंट को प्रदर्शित करने के लिए उपयोग किया जाता है।"""
    प्रयास करें:
        f के रूप में खुले (पथ, "आर", एन्कोडिंग = "utf-8") के साथ:
            वापसी f.read(2000)
    ई के रूप में अपवाद को छोड़कर:
        वापसी f"पढ़ना विफल: {e}"

यदि __नाम__ == "__मुख्य__":
    mcp.run()

मुख्य बिंदु: @mcp.tool() डेकोरेटर एक सामान्य फ़ंक्शन को एक टूल के रूप में पंजीकृत करता है, और फ़ंक्शन पैरामीटर और दस्तावेज़ीकरण स्ट्रिंग स्वचालित रूप से मॉडल को देखने के लिए एक टूल स्कीमा उत्पन्न करेगा - विवरण स्पष्ट रूप से लिखा जाना चाहिए ताकि मॉडल को पता चले कि इसे कब कॉल करना है

चरण 3: एमसीपी इंस्पेक्टर के साथ सर्वर को सत्यापित करें

यूवी रन एमसीपी देव सर्वर.पी.ई

ब्राउज़र में और इंस्पेक्टर में http://localhost:6274 खोलें:

  1. read_file टूल का चयन करें।
  2. पैरामीटर {"path": "README.md"} दर्ज करें (पहले प्रोजेक्ट में एक README.md बनाएं)।
  3. कॉल पर क्लिक करें, और फ़ाइल सामग्री दाईं ओर वापस आ जानी चाहिए।

यह चरण पुष्टि कर सकता है कि "उपकरण स्वयं उपलब्ध है" और पहले मॉडल स्तर पर समस्याओं को अलग करें।

चरण 4: लैंगग्राफ के साथ एजेंट बनाएं और एमसीपी टूल से कनेक्ट करें

agent.py बनाएं:

एसिंसियो आयात करें
langchin_openai से ChatOpenAI आयात करें
langgraph.prebuild से आयात create_react_agent
langchin_mcp_adapters.client से मल्टीसर्वरMCPClient आयात करें

एसिंक डीईएफ़ मुख्य():
    मल्टीसर्वरMCPClient के साथ async(
        {"फ़ाइल-रीडर": {"कमांड": "यूवी", "आर्ग्स": ["रन", "server.py"], "ट्रांसपोर्ट": "stdio"}}
    ) ग्राहक के रूप में:
        उपकरण = client.get_tools()
        मॉडल = ChatOpenAI(model='gpt-4o-mini', तापमान=0)
        एजेंट = create_react_agent(मॉडल, उपकरण)
        परिणाम = प्रतीक्षा एजेंट.एनवोक({"संदेश": [("उपयोगकर्ता", "कृपया प्रोजेक्ट में README.md पढ़ें और पहली तीन पंक्तियों को संक्षेप में प्रस्तुत करें")]})
        प्रिंट(परिणाम["संदेश"][-1].सामग्री)

यदि __नाम__ == "__मुख्य__":
    asyncio.run(मुख्य())

चलाएँ:

निर्यात OPENAI_API_KEY='आपकी कुंजी'
यूवी रन पायथन एजेंट.पी.ई

अपेक्षित आउटपुट: फ़ाइल को पढ़ने के लिए मॉडल पहले read_file टूल को कॉल करता है, और फिर लौटाई गई सामग्री के आधार पर एक सारांश देता है - यह एक पूर्ण "एजेंट → एमसीपी → वास्तविक टूल" लिंक है।

चरण 5: एक वास्तविक व्यावसायिक टूल से कनेक्ट करें (उदाहरण: क्वेरी SQLite)

"क्वेरी डेटाबेस" टूल के साथ server.py का विस्तार करें:

sqlite3 आयात करें

@mcp.tool()
def query_sqlite(db_path: str, sql: str) -> str:
    """SQLite डेटाबेस के विरुद्ध केवल-पढ़ने योग्य SELECT क्वेरी निष्पादित करें और परिणाम लौटाएँ।"""
    यदि नहीं sql.strip().lower().startswith("select"):
        वापसी "केवल चुनिंदा प्रश्नों की अनुमति है"
    कॉन = sqlite3.connect(db_path)
    प्रयास करें:
        पंक्तियाँ = conn.execute(sql).fetchmany(10)
        पंक्तियों में r के लिए "\n"।join(str(r) लौटाएं)
    ई के रूप में अपवाद को छोड़कर:
        वापसी f"क्वेरी विफल: {e}"
    अंततः:
        conn.बंद करें()

जब किसी उद्यम में लागू किया जाता है, तो इस रीड-ओनली क्वेरी को "अनुमति सत्यापन के साथ आंतरिक एपीआई एनकैप्सुलेशन" के साथ बदलना उत्पादन-स्तरीय टूल का न्यूनतम रूप है।

चरण 6: कॉन्फ़िगरेशन, लॉग और सामान्य त्रुटियाँ

  • लॉग: प्रत्येक चरण पर टूल कॉल का निरीक्षण करने के लिए ChatOpenAI में verbose=True और agent.py में एजेंट जोड़ें।
  • टाइमआउट: एजेंट के फंसने से बचने के लिए एमसीपी टूल कॉल के लिए टाइमआउट को क्लाइंट पर कॉन्फ़िगर किया जा सकता है।
  • सामान्य त्रुटि रिपोर्टिंग और प्रबंधन:
त्रुटि घटना संभावित कारण उपचार
कनेक्शन अस्वीकृत सर्वर प्रारंभ नहीं हुआ है या stdio पथ ग़लत है पहले सत्यापित करने के लिए uv run mcp devserver.py का उपयोग करें
मॉडल टूल को कॉल नहीं करता टूल विवरण अस्पष्ट है या मॉडल बहुत कमज़ोर है टूल विवरण को फिर से लिखें और इसे एक मजबूत मॉडल से बदलें
उपकरण नहीं मिला एमसीपी क्लाइंट टूल पंजीकृत करने में विफल रहा get_tools() रिटर्न सूची जांचें
चीनी विकृत अक्षर एन्कोडिंग मुद्दे एकीकृत फ़ाइल पढ़ना और लिखना encoding='utf-8'

सत्यापन विधि

  1. टूल लेयर सत्यापन: एमसीपी इंस्पेक्टर प्रत्येक टूल का व्यक्तिगत रूप से परीक्षण करता है।
  2. लिंक सत्यापन: एजेंट को यह पुष्टि करने के लिए 3 अलग-अलग कार्य पूरा करने दें कि टूल हर बार सही ढंग से चुना गया है।
  3. प्रतिगमन सत्यापन: उपयोग के मामले को एक स्क्रिप्ट में समेकित करें और संशोधन के बाद इसे फिर से चलाएँ।

अक्सर पूछे जाने वाले प्रश्न (FAQ)

  1. क्या एमसीपी को पायथन का उपयोग करना होगा?

    नहीं। आधिकारिक एसडीके पायथन और टाइपस्क्रिप्ट का समर्थन करता है, और नोड वातावरण @modelcontextprotocol/sdk का उपयोग करता है।

  2. यदि मेरे पास स्थानीय जीपीयू नहीं है तो क्या मैं इस ट्यूटोरियल का उपयोग कर सकता हूं?

    योग्य। इस ट्यूटोरियल में एलएलएम एपीआई का उपयोग करता है, केवल बड़े मॉडल अनुमान के लिए कंप्यूटिंग शक्ति की आवश्यकता होती है, और केवल हल्के उपकरण सेवाएं स्थानीय रूप से चलाई जाती हैं।

  3. यदि एजेंट कभी भी टूल को कॉल नहीं करता तो मुझे क्या करना चाहिए?

पहले जांचें कि क्या टूल विवरण में "कब कॉल करना है" की ट्रिगर स्थिति शामिल है, दूसरी बार पुष्टि करें कि मॉडल में फ़ंक्शन कॉलिंग क्षमताएं हैं, और अंत में परीक्षण के लिए एक सरल संकेत का उपयोग करें।

  1. उत्पादन परिवेश में एमसीपी सर्वर कैसे तैनात करें?

    सर्वर को एक स्वतंत्र प्रक्रिया/कंटेनर के रूप में तैनात किया जा सकता है, stdio के बजाय स्ट्रीम करने योग्य HTTP ट्रांसपोर्ट का उपयोग करके, और एकीकृत प्रमाणीकरण तक पहुंच प्राप्त की जा सकती है।

  2. क्या अनेक उपकरण एक दूसरे के साथ हस्तक्षेप करेंगे?

    प्रत्येक उपकरण में एक स्वतंत्र नामस्थान और स्कीमा होता है। जब तक विवरण स्पष्ट है और अनुमतियाँ कम से कम हैं, तब तक आमतौर पर कोई हस्तक्षेप नहीं होगा; उच्च-समवर्ती परिदृश्यों में प्रवाह को सीमित करने की अनुशंसा की जाती है।

उन्नति और विस्तार

  • मल्टी-एजेंट ऑर्केस्ट्रेशन: "योजना-निष्पादन-समीक्षा" को कई भूमिकाओं में विभाजित करने के लिए लैंगग्राफ की राज्य मशीन का उपयोग करें।
  • एमसीपी रजिस्ट्री: संस्करणों और अनुमतियों को एकीकृत करने के लिए एक आंतरिक उपकरण पंजीकरण केंद्र बनाएं।
  • मूल्यांकन सेट: व्यवहारिक बहाव को रोकने के लिए व्यावसायिक उपयोग के मामलों को स्वचालित प्रतिगमन में शामिल करें।
  • निजीकरण: पूर्ण-लिंक इंट्रानेट ऑपरेशन प्राप्त करने के लिए एलएलएम को स्थानीय परिनियोजन मॉडल (जैसे Ollama) से बदलें।

उपयोगकर्ता समीक्षाएं

  • समीक्षाएं लोड हो रही हैं...