国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
主要特點:
首頁 后端開發(fā) Python教程 在 Python 中使用 Jina.ai 和 FastMCP 構建模型上下文協(xié)議服務器

在 Python 中使用 Jina.ai 和 FastMCP 構建模型上下文協(xié)議服務器

Jan 05, 2025 am 07:25 AM

在這篇文章中,我們將討論模型上下文協(xié)議,為什么它可能很重要,并逐步構建 MCP 服務器來幫助我們與 Jina.ai 對話,并能夠在 Claude 中添加網(wǎng)絡搜索和事實檢查功能使用 Python 和 FastMCP 的桌面。

模型上下文協(xié)議

Anthropic于去年感恩節(jié)前后宣布。盡管它引起了一些關注,但考慮到它可能是開發(fā)下一層人工智能軟件堆棧的關鍵墊腳石,它所獲得的認可可能還不夠。

什么

模型上下文協(xié)議(MCP)是專為大型語言模型(LLM)設計的標準化通信協(xié)議。

將其視為“AI 的 HTTP”——就像 HTTP 標準化了 Web 瀏覽器與 Web 服務器的通信方式一樣,MCP 標準化了 LLM 應用程序與工具和數(shù)據(jù)源的通信方式。

為什么我們需要 MCP?

目前LLM的發(fā)展面臨著幾個障礙:

  1. 工具集成復雜度:每個LLM服務(如OpenAI、Anthropic等)都有其實現(xiàn)工具調用和函數(shù)調用的方式,使得構建可移植工具變得復雜。

  2. 上下文管理:法學碩士需要訪問各種數(shù)據(jù)源和工具,但安全有效地管理此訪問權限一直具有挑戰(zhàn)性。

  3. 標準化:如果沒有標準協(xié)議,開發(fā)人員必須為他們想要支持的每個 LLM 平臺重建集成層。

MCP 通過提供以下功能來解決這些挑戰(zhàn):

  • 向法學碩士公開工具和數(shù)據(jù)的標準化方法
  • 安全的客戶端-服務器架構
  • 無論底層 LLM 如何,都有一致的接口

MCP 如何運作?

MCP 遵循客戶端-服務器架構,具有三個主要組件:

  1. MCP 服務器:公開的服務:

    • 工具(LLM可以調用的函數(shù))
    • 資源(數(shù)據(jù)源)
    • 提示(模板說明)
    • 上下文(動態(tài)信息)
  2. MCP 客戶端:應用程序連接到 MCP 服務器并管理 LLM 和服務器之間的通信??蛻舳酥С诌€處于早期階段,到目前為止,只有少數(shù)工具可以實現(xiàn)協(xié)議規(guī)范的任何部分,并且尚無客戶端支持一些功能。

Building a Model Context Protocol Server using Jina.ai and FastMCP in Python

當然還有法學碩士...

工作流程很簡單:

  1. MCP 服務器注冊其功能(工具、資源等)
  2. 客戶端連接到服務器
  3. 法學碩士可以通過標準化接口使用這些功能

傳輸協(xié)議

  • 多種運輸機制
    • SSE(服務器發(fā)送事件)
      • 通過 HTTP 雙向通信,服務器進程與客戶端隔離
    • Stdio(標準輸入/輸出)
      • 通過標準輸入/輸出管道進行通信,服務器進程本質上是客戶端的子進程

安全

安全局勢更加微妙。雖然使用 stdio 傳輸?shù)姆掌魍ǔEc客戶端位于同一位置,因此 API 密鑰不一定會暴露在互聯(lián)網(wǎng)上。在我看來,它們確實似乎相當隨意地被傳播。

這些密鑰需要在服務器啟動時加載到客戶端,以便將它們傳遞給子進程,它們甚至出現(xiàn)在桌面應用程序日志中,這是……令人擔憂的。

API 密鑰的廣泛使用是影響 Gen AI 服務、平臺和工具的更廣泛問題。 Okta 和 Auth0 等公司正在開發(fā)一種無需依賴密鑰即可管理和授權 Gen AI 的解決方案。

軟件開發(fā)工具包

Anthropic 官方支持 TypeScript、Python 和 Kotlin 的低級 SDK。最近創(chuàng)建的一些樣板包裝器已經(jīng)涵蓋了一些樣板文件,并具有其他不錯的功能,例如用于調試、檢查和在客戶端上安裝服務器的 CLI,以使開發(fā) MCP 服務器變得更容易。

FastMCP 入門

Building a Model Context Protocol Server using Jina.ai and FastMCP in Python 杰洛文 / 快速MCP

構建模型上下文協(xié)議服務器的快速、Pythonic 方法?

FastMCP?

構建 MCP 服務器的快速、Python 方式。

Building a Model Context Protocol Server using Jina.ai and FastMCP in Python Building a Model Context Protocol Server using Jina.ai and FastMCP in Python Building a Model Context Protocol Server using Jina.ai and FastMCP in Python

模型上下文協(xié)議 (MCP) 服務器是一種為 LLM 提供上下文和工具的全新標準化方式,F(xiàn)astMCP 使構建 MCP 服務器變得簡單直觀。使用干凈的 Python 代碼創(chuàng)建工具、公開資源并定義提示:

# demo.py

from fastmcp import FastMCP


mcp = FastMCP("Demo ?")


@<span>mcp.tool()</span>
def add(a: int, b: int) -> int:
    """Add two numbers"""
    return a + b
進入全屏模式 退出全屏模式

就是這樣!通過運行以下命令授予 Claude 訪問服務器的權限:

fastmcp install demo.py
進入全屏模式 退出全屏模式

FastMCP 處理所有復雜的協(xié)議細節(jié)和服務器管理,因此您可以專注于構建出色的工具。它被設計為高級且Pythonic - 在大多數(shù)情況下,裝飾一個函數(shù)就足夠了。

主要特點:

  • 快速:高級接口意味著更少的代碼和更快的開發(fā)
  • 簡單
在 GitHub 上查看

FastMCP 就是這樣一個框架。我們現(xiàn)在將探討如何創(chuàng)建一個幾乎實用的工具來閱讀網(wǎng)站、通過網(wǎng)絡回答搜索查詢以及事實檢查信息。我們將使用 Jina.ai。

這是一項非常巧妙的服務,提供了一個結合了“嵌入、重新排名和小語言模型”的“搜索基礎平臺”,以幫助企業(yè)構建 Gen AI 和多模式搜索體驗。

先決條件

  • 紫外線

您需要安裝 uv。這是創(chuàng)建和管理 Python 項目的推薦方法。它是一個相對較新但令人興奮的 Python 工具鏈 astral.sh 的一部分。我建議你檢查一下。

它的目標是成為管理項目、依賴項、虛擬環(huán)境、版本、linting 以及執(zhí)行 Python 腳本和模塊的一站式商店。它是用 Rust 編寫的。你會用這些信息做什么?

  • 克勞德桌面應用程序

您還需要安裝 Claude 桌面應用程序。就我們的目的而言,Claude 桌面應用程序將充當 MCP 客戶端,并且是 Anthropic 的關鍵目標客戶端。

Building a Model Context Protocol Server using Jina.ai and FastMCP in Python 阿斯拉加布 / mcp-jinaai-閱讀器

Jina.ai Reader API 的模型上下文協(xié)議 (MCP) 服務器

Jina.ai Reader API 的 MCP 服務器

完整演練在這里:

https://dev.to/asragab/building-a-model-context-protocol-server-using-jinaai-and-fastmcp-in-python-1od8


在 GitHub 上查看


項目設置

使用 uv 您可以使用以下方式初始化項目:

# demo.py

from fastmcp import FastMCP


mcp = FastMCP("Demo ?")


@<span>mcp.tool()</span>
def add(a: int, b: int) -> int:
    """Add two numbers"""
    return a + b

這將創(chuàng)建一個名為 mcp-jinaai-reader 的文件夾和一個 .python-version 以及 pyproject.toml。

fastmcp install demo.py

這將創(chuàng)建一個與我們選擇的 python 版本相對應的虛擬環(huán)境。

創(chuàng)建環(huán)境后,它將提供有關如何為會話激活它的說明。

uv init mcp-jinaai-reader --python 3.11

添加一個 src 目錄并安裝我們需要的一個依賴

cd mcp-jinaai-reader
uv venv 

在項目根目錄創(chuàng)建一個 .env 文件并將您的 JINAAI_API_KEY 添加到該文件中。您可以通過在 Jina 注冊來免費獲得一份。一般來說,您的服務器需要運行的任何 API 密鑰或其他環(huán)境變量都將放入此文件中。

source .venv/bin/activate

在 src 目錄中,創(chuàng)建一個 server.py 文件...我們應該能夠獲取代碼。

服務器代碼

uv add fastmcp

從導入開始:httpx,將是我們在這里用來發(fā)出 http 請求的庫;我們需要 urlparse 方法來幫助我們確定字符串是否可能是有效的 URL。

JINAAI_API_KEY=jina_*************

這會初始化服務器;第一個參數(shù)是工具的名稱。我不是 100% 確定為什么 uvicorn 需要在這里顯式添加為依賴項,因為它是 FastMCP 的傳遞依賴項,但它似乎確實是必需的。

這可能是由于 fastmcp cli(稍后會詳細介紹)安裝服務器的方式造成的。如果您還有其他依賴項,則必須在此處添加它們,以便客戶端知道您需要在運行客戶端之前安裝它們;我們稍后會看到它是如何工作的。

from fastmcp import FastMCP
import httpx
from urllib.parse import urlparse
import os

您可能可以在這里找出模式,但 Jina 使用不同的子域來路由特定請求。搜索端點需要一個查詢,讀取器端點需要一個 URL,而接地端點可以向 llm 提供特定的響應或答案。

接地是一個更大的主題,與 RAG 和微調等其他技術一起使用,以幫助法學碩士減少幻覺并改進決策。

我們的第一個工具

# Initialize the MCP server
mcp = FastMCP("search", dependencies=["uvicorn"])

注釋@mcp.tool 完成了很多繁重的工作。庫中存在類似的資源和提示注釋。該注釋提取函數(shù)簽名和返回類型的詳細信息,以創(chuàng)建供 llm 調用該工具的輸入和輸出架構。它配置該工具,以便客戶端了解服務器的功能。它還將函數(shù)調用注冊為已配置工具的處理程序。

接下來,您會注意到該函數(shù)是異步的。不需要運行時配置,也不需要 asyncio.run 的東西。如果出于某種原因您需要將服務器作為獨立服務運行,您確實需要自己處理其中的一些問題。 FastMCP 存儲庫中有一個示例說明如何執(zhí)行此操作。

函數(shù)體相當無趣;它驗證是否正在接收 URL、設置適當?shù)臉祟^、調用 Jina 端點并返回文本。

# demo.py

from fastmcp import FastMCP


mcp = FastMCP("Demo ?")


@<span>mcp.tool()</span>
def add(a: int, b: int) -> int:
    """Add two numbers"""
    return a + b

第二個工具

fastmcp install demo.py

就是這樣...

測試與調試

uv init mcp-jinaai-reader --python 3.11

運行上述命令將啟動 mcp 檢查器,它是 sdk 提供的一個工具,用于測試和調試服務器響應。 --with-editable 標志允許您對服務器進行更改,而無需重新啟動檢查器(強烈推薦)

你應該看到:

cd mcp-jinaai-reader
uv venv 

默認情況下,檢查器在端口 5173 上運行,而服務器(您剛剛編寫的代碼)將在端口 3000 上運行,您可以通過在調用前設置 SERVER_PORT 和 CLIENT_PORT 來更改此設置。

source .venv/bin/activate

督察

Building a Model Context Protocol Server using Jina.ai and FastMCP in Python

如果一切順利你應該看到類似下面的內容,在左側你可以添加你需要的環(huán)境變量,這里 JINAAI_API_KEY 是唯一的。

如果您單擊頂部菜單欄上的“工具”,然后單擊“列出工具”,您應該列出我們創(chuàng)建的工具,請注意文檔字符串作為該工具的描述。

單擊特定工具將彈出文本框,供您輸入調用該工具所需的參數(shù)。

安裝服務器

當您對一切按預期工作感到滿意后,您現(xiàn)在就可以在 Claude 桌面應用程序客戶端上安裝服務器了。

uv add fastmcp

會這樣做,我相信將來它會支持其他客戶端,但現(xiàn)在,這就是你需要做的。 -f .env 會將環(huán)境變量傳遞給應用程序客戶端。

這在幕后的作用是更新 claude_desktop_config.json 并提供運行服務器所需的命令和參數(shù)。默認情況下,這使用 uv ,它必須在您的 PATH 上可用。

如果您現(xiàn)在打開 Claude 桌面應用程序,然后轉到菜單欄并單擊 Claude >設置,然后單擊開發(fā)人員,您應該會看到初始化服務器時設置的工具的名稱。

Building a Model Context Protocol Server using Jina.ai and FastMCP in Python

點擊它應該會顯示它的配置。您不僅可以了解它是如何執(zhí)行的,而且在“高級選項”中您將看到已設置的環(huán)境變量。

你也可以直接編輯這個配置,但我不一定在這里推薦它。

運行它

如果一切順利,當您進入桌面應用程序時,您應該不會看到任何錯誤(如果出現(xiàn)錯誤,則轉到“設置”應該會為您提供一個按鈕來檢查日志并從那里進行調查)。

Building a Model Context Protocol Server using Jina.ai and FastMCP in Python

此外,您應該會看到一個錘子符號,其中包含您可以使用的單個工具的數(shù)量(注意:除非您安裝了其他 MCP 服務器,否則您的工具可能應該是兩個)

您不像平常那??樣直接調用該工具,而是與應用程序聊天,當它遇到推斷該工具有幫助的情況時,它會詢問您是否要使用它。這里不需要額外的代碼或配置。

我認為它依賴于工具名稱和描述來決定它是否合適,因此值得為該工具的功能制作一個清晰簡單的描述。

您將收到如下提示:

Building a Model Context Protocol Server using Jina.ai and FastMCP in Python

你可以與它“聊天”,不可否認,編寫的工具有時會遇到問題。有時它會決定無法訪問互聯(lián)網(wǎng),有時無法檢索結果,但有時您會得到以下結果:

Building a Model Context Protocol Server using Jina.ai and FastMCP in Python

這有一種自然的流程,它讀取頁面,提供摘要,然后你要求它轉到一篇特定的文章并閱讀該文章。

最后的注釋

希望這能讓您對 MCP 服務器有一些了解。有很多內容可供閱讀和觀看,但我推薦的另一個網(wǎng)站是 glama.ai,他們保留了一份相當全面的可用 MCP 服務器列表供下載和試用,其中包括比我們的玩具示例更可靠的其他網(wǎng)絡搜索工具??纯窗?,感謝您的關注。

以上是在 Python 中使用 Jina.ai 和 FastMCP 構建模型上下文協(xié)議服務器的詳細內容。更多信息請關注PHP中文網(wǎng)其他相關文章!

本站聲明
本文內容由網(wǎng)友自發(fā)貢獻,版權歸原作者所有,本站不承擔相應法律責任。如您發(fā)現(xiàn)有涉嫌抄襲侵權的內容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅動的應用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

Python的UNITDEST或PYTEST框架如何促進自動測試? Python的UNITDEST或PYTEST框架如何促進自動測試? Jun 19, 2025 am 01:10 AM

Python的unittest和pytest是兩種廣泛使用的測試框架,它們都簡化了自動化測試的編寫、組織和運行。1.二者均支持自動發(fā)現(xiàn)測試用例并提供清晰的測試結構:unittest通過繼承TestCase類并以test\_開頭的方法定義測試;pytest則更為簡潔,只需以test\_開頭的函數(shù)即可。2.它們都內置斷言支持:unittest提供assertEqual、assertTrue等方法,而pytest使用增強版的assert語句,能自動顯示失敗詳情。3.均具備處理測試準備與清理的機制:un

如何將Python用于數(shù)據(jù)分析和與Numpy和Pandas等文庫進行操作? 如何將Python用于數(shù)據(jù)分析和與Numpy和Pandas等文庫進行操作? Jun 19, 2025 am 01:04 AM

pythonisidealfordataanalysisionduetonumpyandpandas.1)numpyExccelSatnumericalComputationswithFast,多dimensionalArraysAndRaysAndOrsAndOrsAndOffectorizedOperationsLikenp.sqrt()

什么是動態(tài)編程技術,如何在Python中使用它們? 什么是動態(tài)編程技術,如何在Python中使用它們? Jun 20, 2025 am 12:57 AM

動態(tài)規(guī)劃(DP)通過將復雜問題分解為更簡單的子問題并存儲其結果以避免重復計算,來優(yōu)化求解過程。主要方法有兩種:1.自頂向下(記憶化):遞歸分解問題,使用緩存存儲中間結果;2.自底向上(表格化):從基礎情況開始迭代構建解決方案。適用于需要最大/最小值、最優(yōu)解或存在重疊子問題的場景,如斐波那契數(shù)列、背包問題等。在Python中,可通過裝飾器或數(shù)組實現(xiàn),并應注意識別遞推關系、定義基準情況及優(yōu)化空間復雜度。

如何使用__ITER__和__NEXT __在Python中實現(xiàn)自定義迭代器? 如何使用__ITER__和__NEXT __在Python中實現(xiàn)自定義迭代器? Jun 19, 2025 am 01:12 AM

要實現(xiàn)自定義迭代器,需在類中定義__iter__和__next__方法。①__iter__方法返回迭代器對象自身,通常為self,以兼容for循環(huán)等迭代環(huán)境;②__next__方法控制每次迭代的值,返回序列中的下一個元素,當無更多項時應拋出StopIteration異常;③需正確跟蹤狀態(tài)并設置終止條件,避免無限循環(huán);④可封裝復雜邏輯如文件行過濾,同時注意資源清理與內存管理;⑤對簡單邏輯可考慮使用生成器函數(shù)yield替代,但需結合具體場景選擇合適方式。

Python編程語言及其生態(tài)系統(tǒng)的新興趨勢或未來方向是什么? Python編程語言及其生態(tài)系統(tǒng)的新興趨勢或未來方向是什么? Jun 19, 2025 am 01:09 AM

Python的未來趨勢包括性能優(yōu)化、更強的類型提示、替代運行時的興起及AI/ML領域的持續(xù)增長。首先,CPython持續(xù)優(yōu)化,通過更快的啟動時間、函數(shù)調用優(yōu)化及擬議中的整數(shù)操作改進提升性能;其次,類型提示深度集成至語言與工具鏈,增強代碼安全性與開發(fā)體驗;第三,PyScript、Nuitka等替代運行時提供新功能與性能優(yōu)勢;最后,AI與數(shù)據(jù)科學領域持續(xù)擴張,新興庫推動更高效的開發(fā)與集成。這些趨勢表明Python正不斷適應技術變化,保持其領先地位。

如何使用插座在Python中執(zhí)行網(wǎng)絡編程? 如何使用插座在Python中執(zhí)行網(wǎng)絡編程? Jun 20, 2025 am 12:56 AM

Python的socket模塊是網(wǎng)絡編程的基礎,提供低級網(wǎng)絡通信功能,適用于構建客戶端和服務器應用。要設置基本TCP服務器,需使用socket.socket()創(chuàng)建對象,綁定地址和端口,調用.listen()監(jiān)聽連接,并通過.accept()接受客戶端連接。構建TCP客戶端需創(chuàng)建socket對象后調用.connect()連接服務器,再使用.sendall()發(fā)送數(shù)據(jù)和.recv()接收響應。處理多個客戶端可通過1.線程:每次連接啟動新線程;2.異步I/O:如asyncio庫實現(xiàn)無阻塞通信。注意事

Python類中的多態(tài)性 Python類中的多態(tài)性 Jul 05, 2025 am 02:58 AM

多態(tài)是Python面向對象編程中的核心概念,指“一種接口,多種實現(xiàn)”,允許統(tǒng)一處理不同類型的對象。1.多態(tài)通過方法重寫實現(xiàn),子類可重新定義父類方法,如Animal類的speak()方法在Dog和Cat子類中有不同實現(xiàn)。2.多態(tài)的實際用途包括簡化代碼結構、增強可擴展性,例如圖形繪制程序中統(tǒng)一調用draw()方法,或游戲開發(fā)中處理不同角色的共同行為。3.Python實現(xiàn)多態(tài)需滿足:父類定義方法,子類重寫該方法,但不要求繼承同一父類,只要對象實現(xiàn)相同方法即可,這稱為“鴨子類型”。4.注意事項包括保持方

如何在Python中切片列表? 如何在Python中切片列表? Jun 20, 2025 am 12:51 AM

Python列表切片的核心答案是掌握[start:end:step]語法并理解其行為。1.列表切片的基本格式為list[start:end:step],其中start是起始索引(包含)、end是結束索引(不包含)、step是步長;2.省略start默認從0開始,省略end默認到末尾,省略step默認為1;3.獲取前n項用my_list[:n],獲取后n項用my_list[-n:];4.使用step可跳過元素,如my_list[::2]取偶數(shù)位,負step值可反轉列表;5.常見誤區(qū)包括end索引不

See all articles