Hub Python Library documentation
MCP-клиент
MCP-клиент
Библиотека huggingface_hub теперь включает MCPClient, предназначенный для предоставления языковым моделям (LLM) возможности взаимодействия с внешними инструментами через Model Context Protocol (MCP). Этот клиент расширяет AsyncInferenceClient для бесшовной интеграции использования инструментов.
Класс MCPClient подключается к MCP-серверам (локальным stdio-скриптам или удалённым http/sse-сервисам), которые предоставляют инструменты. Он передаёт эти инструменты LLM (через AsyncInferenceClient). Если LLM решает использовать инструмент, MCPClient управляет запросом на выполнение на MCP-сервере и возвращает вывод инструмента обратно в LLM, часто транслируя результаты в реальном времени.
Мы также предоставляем класс Agent более высокого уровня. Этот «Tiny Agent» упрощает создание диалоговых агентов, управляя циклом чата и состоянием, выступая в роли обёртки над MCPClient.
MCP-клиент
класс 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 )
Параметры
- model (
str,optional) — Модель для выполнения инференса. Может быть идентификатором модели, размещённой на Hugging Face Hub, напримерmeta-llama/Meta-Llama-3-8B-Instruct, или URL-адресом развернутого Inference Endpoint или другого локального/удалённого эндпоинта. - provider (
str, необязательный) — Название провайдера, используемого для инференса. По умолчанию — «auto», то есть первый из доступных для модели провайдеров, отсортированных в соответствии с порядком, заданным пользователем в https://hf.co/settings/inference-providers. Если модель указана в виде URL или передан параметрbase_url, тоproviderне используется. - base_url (
str, необязательный) — Базовый URL для запуска инференса. По умолчанию — None. - api_key (
str,optional) — Токен для аутентификации. Если не указан, по умолчанию используется локально сохранённый токен Hugging Face. Также можно использовать собственный ключ API провайдера для прямого взаимодействия с его сервисом.
Клиент для подключения к одному или нескольким MCP-серверам и обработки ответов чата с инструментами.
Этот класс является экспериментальным и может быть изменён в будущем без предварительного уведомления.
add_mcp_server
< source >( type: typing.Literal['stdio', 'sse', 'http']**params: typing.Any )
Параметры
- type (
str) — Тип подключаемого сервера. Может быть одним из:- “stdio”: сервер стандартного ввода/вывода (локальный)
- “sse”: сервер событий, отправляемых сервером (SSE)
- “http”: сервер StreamableHTTP
- **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): URL SSE-сервера
- headers (dict[str, Any], optional): Заголовки для SSE-соединения
- timeout (float, optional): Таймаут подключения
- sse_read_timeout (float, optional): тайм-аут чтения SSE
- allowed_tools (list[str], optional): Список имён инструментов, разрешённых с этого сервера
- Для серверов StreamableHTTP:
- url (str): URL сервера StreamableHTTP
- headers (dict[str, Any], optional): Заголовки для подключения StreamableHTTP
- timeout (timedelta, необязательно): Тайм-аут подключения
- sse_read_timeout (timedelta, optional): тайм-аут чтения SSE
- terminate_on_close (bool, optional): Завершать ли процесс при закрытии
- allowed_tools (list[str], optional): Список имён инструментов, разрешённых с этого сервера
- Для серверов stdio:
Подключение к серверу MCP
Освобождение ресурсов
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 )
Параметры
- messages (
list[dict]) — Список объектов сообщений, представляющих историю диалога - exit_loop_tools (
list[ChatCompletionInputTool], необязательный) — Список инструментов, вызов которых должен завершить работу генератора - exit_if_first_chunk_no_tool (
bool, необязательный) — Завершить работу, если в первых чанках нет инструмента. По умолчанию False.
Обработайте запрос с помощью self.model и доступных инструментов, возвращая фрагменты и результаты инструментов.
Агент
класс 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 )
Параметры
- model (
str, необязательный) — Модель, с которой выполняется инференс. Может быть идентификатором модели, размещенной на Hugging Face Hub, напримерmeta-llama/Meta-Llama-3-8B-Instruct, или URL-адресом развернутого Inference Endpoint или другого локального или удаленного конечного пункта. - servers (
Iterable[dict]) — MCP-серверы для подключения. Каждый сервер представляет собой словарь, содержащий ключtypeи ключconfig. Значением ключаtypeможет быть"stdio"или"sse", а ключconfigсодержит словарь аргументов для сервера. - provider (
str, необязательный) — Название провайдера, используемого для инференса. По умолчанию — «auto», то есть первый из доступных для модели провайдеров, отсортированных в соответствии с порядком, заданным пользователем в https://hf.co/settings/inference-providers. Если модель указана в виде URL или передан параметрbase_url, тоproviderне используется. - base_url (
str, необязательный) — Базовый URL для запуска инференса. По умолчанию — None. - api_key (
str, необязательный) — Токен для аутентификации. Если не указан, по умолчанию используется локально сохранённый токен Hugging Face. Также можно использовать собственный ключ API провайдера для прямого взаимодействия с его сервисом. - prompt (
str, необязательный) — Системный промпт, используемый для агента. По умолчанию используется системный промпт по умолчанию изconstants.py.
Реализация простого агента, представляющего собой обычный цикл while, построенный непосредственно на базе MCPClient.
Этот класс является экспериментальным и может быть изменён в будущем без предварительного уведомления.
run
< source >( user_input: strabort_event: Optional[asyncio.Event] = None )
Запустите агента с указанным пользовательским вводом.