Hub Python 庫文件

MCP 客戶端

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

MCP 客戶端

huggingface_hub 庫現在包含一個 MCPClient,旨在賦予大型語言模型 (LLM) 透過 Model Context Protocol (MCP) 與外部工具進行互動的能力。此客戶端擴充套件了 AsyncInferenceClient,以無縫整合工具使用。

MCPClient 連線到公開工具的 MCP 伺服器(本地 stdio 指令碼或遠端 http/sse 服務)。它透過 AsyncInferenceClient 將這些工具饋送給 LLM。如果 LLM 決定使用某個工具,MCPClient 會管理到 MCP 伺服器的執行請求,並將工具的輸出傳回給 LLM,通常會即時流式傳輸結果。

我們還提供了一個更高級別的 Agent 類。這個“微型 Agent”透過管理聊天迴圈和狀態,充當 MCPClient 的包裝器,簡化了建立會話式 Agent 的過程。

MCP 客戶端

class huggingface_hub.MCPClient

< >

( model: typing.Optional[str] = None provider: typing.Union[typing.Literal['black-forest-labs', 'cerebras', 'clarifai', 'cohere', 'fal-ai', 'featherless-ai', 'fireworks-ai', 'groq', 'hf-inference', 'hyperbolic', 'nebius', 'novita', 'nscale', '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, optional) — 要執行推理的模型。可以是託管在 Hugging Face Hub 上的模型 ID,例如 meta-llama/Meta-Llama-3-8B-Instruct,或指向已部署的推理端點或其他本地或遠端端點的 URL。
  • provider (str, optional) — 要用於推理的提供商名稱。預設為“auto”,即模型可用的提供商中第一個,按使用者在 https://huggingface.co/settings/inference-providers 中的順序排序。如果模型是 URL 或傳遞了 base_url,則不使用 provider
  • base_url (str, optional) — 要執行推理的基礎 URL。預設為 None。
  • api_key (str, optional) — 用於身份驗證的令牌。如果未提供,則預設為本地 Hugging Face 儲存的令牌。您也可以使用自己的提供商 API 金鑰直接與提供商的服務進行互動。

用於連線到一個或多個 MCP 伺服器並處理帶工具有的聊天補全的客戶端。

此類是實驗性的,未來可能在未事先通知的情況下進行重大更改。

add_mcp_server

< >

( type: typing.Literal['stdio', 'sse', 'http'] **params: typing.Any )

引數

  • type (str) — 要連線的伺服器型別。可以是以下之一:
    • “stdio”:標準輸入/輸出伺服器(本地)
    • “sse”:伺服器傳送事件 (SSE) 伺服器
    • “http”:可流式傳輸的 HTTP 伺服器
  • **params (dict[str, Any]) — 伺服器引數,可以是:
    • 對於 stdio 伺服器:
      • command (str): 執行 MCP 伺服器的命令
      • args (list[str], optional): 命令的引數
      • env (dict[str, str], optional): 命令的環境變數
      • cwd (Union[str, Path, None], optional): 命令的工作目錄
      • allowed_tools (list[str], optional): 此伺服器允許的工具名稱列表
    • 對於 SSE 伺服器:
      • url (str): SSE 伺服器的 URL
      • headers (dict[str, Any], optional): SSE 連線的標頭
      • timeout (float, optional): 連線超時
      • sse_read_timeout (float, optional): SSE 讀取超時
      • allowed_tools (list[str], optional): 此伺服器允許的工具名稱列表
    • 對於 StreamableHTTP 伺服器:
      • url (str): StreamableHTTP 伺服器的 URL
      • headers (dict[str, Any], optional): StreamableHTTP 連線的標頭
      • timeout (timedelta, optional): 連線超時
      • sse_read_timeout (timedelta, optional): SSE 讀取超時
      • terminate_on_close (bool, optional): 關閉時是否終止
      • allowed_tools (list[str], optional): 此伺服器允許的工具名稱列表

連線到 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 )

引數

  • messages (list[dict]) — 代表對話歷史的訊息物件列表
  • exit_loop_tools (list[ChatCompletionInputTool], optional) — 在被呼叫時應退出生成器的工具列表
  • exit_if_first_chunk_no_tool (bool, optional) — 如果第一個塊中沒有工具,則退出。預設為 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”,即按使用者在 https://huggingface.co/settings/inference-providers 中的順序排序的模型的第一個可用提供程式。如果 model 是一個 URL 或傳遞了 base_url,則不使用 provider
  • base_url (str, 可選) — 用於執行推理的基礎 URL。預設為 None。
  • api_key (str, 可選) — 用於身份驗證的令牌。如果未提供,則預設為本地儲存的 Hugging Face 令牌。您還可以使用自己的提供程式 API 金鑰直接與提供程式的*服務*進行互動。
  • prompt (str, 可選) — 用於代理系統的提示詞。預設為 constants.py 中的預設系統提示詞。

一個簡單代理的實現,它是一個直接建立在 MCPClient 之上的簡單 while 迴圈。

此類是實驗性的,未來可能在未事先通知的情況下進行重大更改。

run

< >

( user_input: str abort_event: Optional[asyncio.Event] = None )

引數

  • user_input (str) — 用於執行代理的*使用者輸入*。
  • abort_event (asyncio.Event, 可選) — 可用於中止代理的事件。如果設定了該事件,代理將停止執行。

使用給定的使用者輸入執行代理。

在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.