Hub Python 函式庫文件
MCP 用戶端
並獲得增強的文件體驗
開始使用
MCP 客戶端
huggingface_hub 函式庫現在包含一個 MCPClient,旨在賦予大型語言模型 (LLMs) 透過 Model Context Protocol (MCP) 與外部工具互動的能力。此客戶端擴展了 AsyncInferenceClient,以無縫整合工具使用。
MCPClient 會連接到公開工具的 MCP 伺服器(本地 stdio 腳本或遠端 http/sse 服務)。它將這些工具提供給 LLM(透過 AsyncInferenceClient)。如果 LLM 決定使用某個工具,MCPClient 會管理向 MCP 伺服器發送的執行請求,並將工具的輸出回傳給 LLM,通常是以即時串流方式呈現結果。
我們還提供了一個更高階的 Agent 類別。這個「Tiny Agent」透過管理對話迴圈和狀態,簡化了對話型 Agent 的創建,並作為 MCPClient 的封裝器。
MCP 客戶端 (MCP Client)
class huggingface_hub.MCPClient
< 原始碼 >( model: typing.Optional[str] = None provider: typing.Union[typing.Literal['black-forest-labs', 'cerebras', 'clarifai', 'cohere', 'deepinfra', 'fal-ai', 'featherless-ai', 'fireworks-ai', 'groq', 'hf-inference', 'hyperbolic', 'nebius', 'novita', 'nscale', 'nvidia', 'openai', 'ovhcloud', 'publicai', 'replicate', 'sambanova', 'scaleway', 'together', 'wavespeed', 'zai-org'], typing.Literal['auto'], NoneType] = None base_url: typing.Optional[str] = None api_key: typing.Optional[str] = None )
參數
- model (
str,選用) — 用於推理的模型。可以是託管在 Hugging Face Hub 上的模型 ID(例如meta-llama/Meta-Llama-3-8B-Instruct),或是已佈署的推理端點 (Inference Endpoint) URL,亦或其他本地或遠端端點。 - provider (
str, 選用) — 用於推理的提供者名稱。預設為 “auto”,即該模型可用提供者中的第一個,根據使用者在 https://huggingface.co/settings/inference-providers 中的排序而定。如果模型是 URL 或傳遞了base_url,則不使用provider。 - base_url (
str, 選用) — 運行推理的基礎 URL。預設為 None。 - api_key (
str,選用) — 用於身分驗證的權杖。如果未提供,將預設使用本地儲存的 Hugging Face 權杖。您也可以使用自有的提供者 API 金鑰直接與提供者的服務互動。
用於連接一個或多個 MCP 伺服器,並使用工具處理對話補全的客戶端。
此類別仍處於實驗階段,未來可能會發生重大變更,恕不另行通知。
add_mcp_server
< 原始碼 >( type: typing.Literal['stdio', 'sse', 'http'] **params: typing.Any )
參數
- type (
str) — 要連接的伺服器類型。可以是以下之一:- “stdio”:標準輸入/輸出伺服器(本地)
- “sse”:伺服器發送事件 (SSE) 伺服器
- “http”:可串流 HTTP (StreamableHTTP) 伺服器
- **params (
dict[str, Any]) — 伺服器參數,可以是:- 對於 stdio 伺服器:
- command (str):運行 MCP 伺服器的指令
- args (list[str], 選用):指令參數
- env (dict[str, str], 選用):指令的環境變數
- cwd (Union[str, Path, None], 選用):指令的工作目錄
- allowed_tools (list[str], 選用):允許此伺服器使用的工具名稱清單
- 對於 SSE 伺服器:
- url (str):SSE 伺服器的 URL
- headers (dict[str, Any], 選用):SSE 連接的標頭
- timeout (float, 選用):連接逾時
- sse_read_timeout (float, 選用):SSE 讀取逾時
- allowed_tools (list[str], 選用):允許此伺服器使用的工具名稱清單
- 對於 StreamableHTTP 伺服器:
- url (str):StreamableHTTP 伺服器的 URL
- headers (dict[str, Any], 選用):StreamableHTTP 連接的標頭
- timeout (timedelta, 選用):連接逾時
- sse_read_timeout (timedelta, 選用):SSE 讀取逾時
- terminate_on_close (bool, 選用):關閉時是否終止
- allowed_tools (list[str], 選用):允許此伺服器使用的工具名稱清單
- 對於 stdio 伺服器:
連接到 MCP 伺服器
清理資源
process_single_turn_with_tools
< 原始碼 >( messages: list exit_loop_tools: typing.Optional[list[huggingface_hub.inference._generated.types.chat_completion.ChatCompletionInputTool]] = None exit_if_first_chunk_no_tool: bool = False )
使用 self.model 和可用工具處理查詢,產生區塊和工具輸出。
Agent
class huggingface_hub.Agent
< 原始碼 >( model: Optional[str] = None servers: Iterable[ServerConfig] provider: Optional[PROVIDER_OR_POLICY_T] = None base_url: Optional[str] = None api_key: Optional[str] = None prompt: Optional[str] = None )
參數
- model (
str, 選用) — 用於推理的模型。可以是託管在 Hugging Face Hub 上的模型 ID(例如meta-llama/Meta-Llama-3-8B-Instruct),或是已佈署的推理端點 URL,亦或其他本地或遠端端點。 - servers (
Iterable[dict]) — 要連接的 MCP 伺服器。每個伺服器都是一個包含type鍵和config鍵的字典。type鍵可以是"stdio"或"sse",而config鍵是一個包含伺服器參數的字典。 - provider (
str, 選用) — 用於推理的提供者名稱。預設為 “auto”,即該模型可用提供者中的第一個。如果模型是 URL 或傳遞了base_url,則不使用provider。 - base_url (
str, 選用) — 運行推理的基礎 URL。預設為 None。 - api_key (
str, 選用) — 用於身分驗證的權杖。如果未提供,將預設使用本地儲存的 Hugging Face 權杖。 - prompt (
str, 選用) — Agent 使用的系統提示詞。預設為constants.py中的預設系統提示詞。
簡單 Agent 的實現,它是一個直接建構在 MCPClient 之上的簡單 while 迴圈。
此類別仍處於實驗階段,未來可能會發生重大變更,恕不另行通知。
run
< 原始碼 >( user_input: str abort_event: Optional[asyncio.Event] = None )
使用給定的使用者輸入運行 Agent。