Hub Python Library documentation
MCP Client
MCP Client
Thư viện huggingface_hub hiện bao gồm MCPClient, được thiết kế để trao cho các Mô hình Ngôn ngữ Lớn (LLM) khả năng tương tác với các công cụ bên ngoài thông qua Model Context Protocol (MCP). Client này mở rộng AsyncInferenceClient để tích hợp việc sử dụng công cụ một cách liền mạch.
MCPClient kết nối với các máy chủ MCP (các script stdio cục bộ hoặc dịch vụ http/sse từ xa) cung cấp các công cụ. Nó truyền các công cụ này cho một LLM (thông qua AsyncInferenceClient). Nếu LLM quyết định sử dụng một công cụ, MCPClient sẽ quản lý yêu cầu thực thi đến máy chủ MCP và chuyển kết quả đầu ra của công cụ đó ngược lại cho LLM, thường là phát trực tiếp kết quả theo thời gian thực.
Chúng tôi cũng cung cấp lớp Agent ở cấp độ cao hơn. ‘Tiny Agent’ này đơn giản hóa việc tạo các Agent hội thoại bằng cách quản lý vòng lặp chat và trạng thái, đóng vai trò là lớp bọc quanh MCPClient.
MCP Client
lớp huggingface_hub.MCPClient
< source >( model: typing.Optional[str] = Noneprovider: typing.Union[typing.Literal['baseten', 'cerebras', 'cohere', 'deepinfra', 'fal-ai', 'featherless-ai', 'fireworks-ai', 'groq', 'hf-inference', 'novita', 'nscale', 'openai', 'ovhcloud', 'publicai', 'replicate', 'scaleway', 'together', 'wavespeed', 'zai-org'], typing.Literal['auto'], NoneType] = Nonebase_url: typing.Optional[str] = Noneapi_key: typing.Optional[str] = None )
Tham số
- model (
str,optional) — Mô hình để chạy suy luận. Có thể là model id được lưu trữ trên Hugging Face Hub, ví dụmeta-llama/Meta-Llama-3-8B-Instructhoặc một URL trỏ đến một Inference Endpoint đã triển khai hoặc một endpoint cục bộ hoặc từ xa khác. - provider (
str, tùy chọn) — Tên của nhà cung cấp được sử dụng cho suy luận. Mặc định là “auto”, tức là nhà cung cấp đầu tiên trong số các nhà cung cấp khả dụng cho mô hình, được sắp xếp theo thứ tự của người dùng tại https://hf.co/settings/inference-providers. Nếu model là một URL hoặcbase_urlđược truyền vào, thìprovidersẽ không được sử dụng. - base_url (
str, tùy chọn) — URL gốc để chạy suy luận. Mặc định là None. - api_key (
str,optional) — Token để xác thực. Nếu không được cung cấp, sẽ mặc định dùng token Hugging Face đã lưu cục bộ. Bạn cũng có thể dùng API key của nhà cung cấp riêng để tương tác trực tiếp với dịch vụ của nhà cung cấp đó.
Client để kết nối với một hoặc nhiều máy chủ MCP và xử lý hoàn tất chat với các công cụ.
Lớp này mang tính thử nghiệm và có thể bị thay đổi gây lỗi trong tương lai mà không có thông báo trước.
add_mcp_server
< source >( type: typing.Literal['stdio', 'sse', 'http']**params: typing.Any )
Tham số
- type (
str) — Loại server cần kết nối. Có thể là một trong các loại sau:- “stdio”: Máy chủ đầu vào/đầu ra chuẩn (cục bộ)
- “sse”: Máy chủ sự kiện do máy chủ gửi (SSE)
- “http”: Máy chủ StreamableHTTP
- **params (
dict[str, Any]) — Các tham số của server, có thể là:- Đối với server stdio:
- command (str): Lệnh để chạy máy chủ MCP
- args (list[str], tùy chọn): Các đối số cho lệnh
- env (dict[str, str], optional): Các biến môi trường cho lệnh
- cwd (Union[str, Path, None], optional): Thư mục làm việc cho lệnh
- allowed_tools (list[str], optional): Danh sách tên công cụ được cho phép từ máy chủ này
- Đối với máy chủ SSE:
- url (str): URL của máy chủ SSE
- headers (dict[str, Any], optional): Các header cho kết nối SSE
- timeout (float, tùy chọn): Thời gian chờ kết nối
- sse_read_timeout (float, tùy chọn): Thời gian chờ đọc SSE
- allowed_tools (list[str], optional): Danh sách tên công cụ được cho phép từ máy chủ này
- Đối với các máy chủ StreamableHTTP:
- url (str): URL của máy chủ StreamableHTTP
- headers (dict[str, Any], optional): Các header cho kết nối StreamableHTTP
- timeout (timedelta, tùy chọn): Thời gian chờ kết nối
- sse_read_timeout (timedelta, tùy chọn): Thời gian chờ đọc SSE
- terminate_on_close (bool, tùy chọn): Có nên kết thúc khi đóng hay không
- allowed_tools (list[str], optional): Danh sách tên công cụ được cho phép từ máy chủ này
- Đối với server stdio:
Kết nối với máy chủ MCP
Dọn dẹp tài nguyên
process_single_turn_with_tools
< source >( messages: listexit_loop_tools: typing.Optional[list[huggingface_hub.inference._generated.types.chat_completion.ChatCompletionInputTool]] = Noneexit_if_first_chunk_no_tool: bool = False )
Tham số
- messages (
list[dict]) — Danh sách các đối tượng tin nhắn đại diện cho lịch sử hội thoại - exit_loop_tools (
list[ChatCompletionInputTool], tùy chọn) — Danh sách các công cụ sẽ khiến trình tạo (generator) thoát ra khi được gọi - exit_if_first_chunk_no_tool (
bool, tuỳ chọn) — Thoát nếu không có công cụ nào trong các chunk đầu tiên. Mặc định là False.
Xử lý truy vấn bằng self.model và các công cụ khả dụng, trả về các khối và kết quả công cụ.
Agent
lớp huggingface_hub.Agent
< source >( model: Optional[str] = Noneservers: Iterable[ServerConfig]provider: Optional[PROVIDER_OR_POLICY_T] = Nonebase_url: Optional[str] = Noneapi_key: Optional[str] = Noneprompt: Optional[str] = None )
Tham số
- model (
str, tùy chọn) — Mô hình để chạy suy luận. Có thể là id mô hình được lưu trữ trên Hugging Face Hub, ví dụmeta-llama/Meta-Llama-3-8B-Instructhoặc một URL trỏ đến Inference Endpoint đã triển khai hoặc các endpoint cục bộ hoặc từ xa khác. - servers (
Iterable[dict]) — Các MCP server cần kết nối. Mỗi server là một từ điển chứa khóatypevà khóaconfig. Khóatypecó thể là"stdio"hoặc"sse", và khóaconfiglà một từ điển chứa các đối số cho server. - provider (
str, tùy chọn) — Tên của nhà cung cấp được sử dụng cho suy luận. Mặc định là “auto”, tức là nhà cung cấp đầu tiên trong số các nhà cung cấp khả dụng cho mô hình, được sắp xếp theo thứ tự của người dùng tại https://hf.co/settings/inference-providers. Nếu model là một URL hoặcbase_urlđược truyền vào, thìprovidersẽ không được sử dụng. - base_url (
str, tùy chọn) — URL gốc để chạy suy luận. Mặc định là None. - api_key (
str, tùy chọn) — Token dùng để xác thực. Nếu không được cung cấp, sẽ mặc định dùng token Hugging Face đã lưu cục bộ. Bạn cũng có thể dùng API key của nhà cung cấp riêng để tương tác trực tiếp với dịch vụ của nhà cung cấp đó. - prompt (
str, tùy chọn) — Prompt hệ thống để sử dụng cho agent. Mặc định là prompt hệ thống mặc định trongconstants.py.
Cài đặt một Agent đơn giản, là một vòng lặp while đơn giản được xây dựng trực tiếp trên MCPClient.
Lớp này mang tính thử nghiệm và có thể bị thay đổi gây lỗi trong tương lai mà không có thông báo trước.
chạy
< source >( user_input: strabort_event: Optional[asyncio.Event] = None )
Chạy agent với đầu vào người dùng đã cho.