Skip to content
Back to skills

Inference And Endpoints

ASecurity

Run hosted model inference and manage Hugging Face Inference Endpoints with sync or async clients, provider-aware payloads, streaming, tools, structured outputs, MCP, and safe lifecycle recovery.

  • 247 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 8, 2026
toolspythonrustbashtestingapibackenddocumentation

Works with

  • cli
  • api
  • mcp

Security analysis

A92/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 8 files and shows the line behind each finding

Scanned September 8, 2026

npx -y skills add VectorSpaceLab/AREX-Skill --skill inference-and-endpoints --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Inference And Endpoints?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Inference And Endpoints
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vectorspacelab-inference-and-endpoints/badge)](https://www.skillsdirectory.com/skills/vectorspacelab-inference-and-endpoints)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: inference-and-endpoints
description: "Run hosted model inference and manage Hugging Face Inference Endpoints with sync or async clients, provider-aware payloads, streaming, tools, structured outputs, MCP, and safe lifecycle recovery."
license: Apache-2.0
disable-model-invocation: true
metadata:
  disco-role: operating
---

# Inference And Endpoints

Use this route for hosted inference through `InferenceClient` or
`AsyncInferenceClient`, a provider/token/base URL decision, task payloads or
binary media, OpenAI-compatible chat, streaming, tools or structured JSON,
MCP client/agent workflows, or the deployment and lifecycle of an Inference
Endpoint. This skill targets `huggingface_hub` 1.29.0 evidence.

## Route Before Calling

| Request | Route |
|---|---|
| Serverless Hub/provider prediction | `InferenceClient` or `AsyncInferenceClient`; read [providers and tasks](references/providers-and-tasks.md). |
| Dedicated HF-managed deployment | `HfApi`/root endpoint helpers and `InferenceEndpoint`; read [workflows](references/workflows.md). |
| Chat with an OpenAI-shaped API | `client.chat.completions.create`, an alias of `chat_completion`. |
| Tools, function calls, JSON mode, or schema output | Chat route plus [task types](references/task-types.md) and provider caveats. |
| MCP servers or a tiny tool-using agent | Install the optional `mcp` extra, then read [workflows](references/workflows.md). |
| Local vLLM/TGI/Ollama/LiteLLM server | Use `model`/`base_url` as an OpenAI-compatible URL; this route does not install or run the server. |
| Hub repositories, downloads, jobs, Spaces, or CLI output in general | Use the sibling sub-skill rather than this route. |

Do not confuse `InferenceClient` (an HTTP prediction client for the HF router,
providers, deployed URLs, or compatible servers) with `InferenceEndpoints` API
methods (deployment configuration and lifecycle). An Inference Endpoint can
later be used as the client's URL.

## Safe Setup And Identity

- Base hosted inference needs the package and its HTTP dependencies; it does
  **not** require a local GPU, CUDA, `torch`, or model download. Install only
  what the requested surface needs: `pip install "huggingface_hub"`,
  `pip install Pillow` to decode image outputs, `pip install numpy` for
  embedding arrays, or `pip install "huggingface_hub[mcp]"` before connecting
  to MCP servers. There is no runtime `inference` extra; the repository's
  `testing` extra is for maintainers, not application setup.
- Keep credentials out of prompts, request bodies, logs, notebooks, and
  examples. Prefer a secret manager or `HF_TOKEN`/an existing `hf auth login`;
  pass a placeholder in documentation. A Hugging Face `hf_...` key uses HF
  routing/billing; a provider key uses direct provider access. `bill_to` only
  applies to an eligible HF organization and is ignored for external keys.
- Resolve model identity before the request: a Hub model ID must support the
  selected task, and a third-party provider route also needs a compatible
  provider mapping; a deployed/local URL is a direct target. With a model ID,
  `provider="auto"` selects from mapped providers (chat uses the server-side
  auto-router). With no model, `None` or `"auto"` falls back to the recommended
  `hf-inference` model for that task. A URL is direct and should not be paired
  with a provider. Pin `model` explicitly for repeatability.
- `model` and `base_url` are constructor aliases and mutually exclusive, as are
  `token` and `api_key`. For chat, a URL supplied by either constructor name is
  normalized to a `/v1/chat/completions` route unless it already ends in
  `/chat/completions`; other tasks use the URL unchanged. The implementation
  stores either constructor spelling identically; `base_url` is the
  OpenAI-compatible name. With a constructor URL and a call-time `model=`, the
  URL remains the transport target and the call-time value becomes the JSON
  payload model.
- Set `timeout` when a bounded request is required. `None` means no client-side
  request deadline. Use one client per configured identity and close it,
  especially the async client and any partially consumed stream.

Read [API reference](references/api-reference.md) for inspected signatures,
return types, endpoint classes, and sync/async parity before coding.

## Task And Output Workflow

1. Select a task family and a model/provider combination from [providers and
   tasks](references/providers-and-tasks.md); do not assume every provider
   supports every task.
2. Construct the task-specific input. Text tasks take strings or batches;
   vision/audio tasks accept bytes, binary file objects, `Path`, URL, or PIL
   input where supported. A string is a URL or path, not raw binary content.
3. Call the typed method. Representative contracts are `text_generation`
   (string, detailed output, or iterable), `chat_completion` (output object or
   stream), `feature_extraction` (`numpy.ndarray`), and `text_to_image`
   (`PIL.Image`). [Task types](references/task-types.md) covers generated
   dataclasses and payload shapes without making the router a catalog.
4. For `stream=True`, consume synchronously with `for` or asynchronously with
   `async for` over the awaited async result. Chat deltas may contain content,
   reasoning, tool-call fragments, finish reasons, or a usage-only final chunk;
   do not assume every chunk has content.
5. Record model, provider mode, task, non-secret request ID/status, output
   shape, and typed exception. Never record authorization headers or raw
   private media.

`text_generation` is for a prompt. Use chat for message history so the client
and server apply the model's chat format. `details=True` and detailed stream
objects are backend-dependent, especially for TGI. Provider-specific options
belong in `extra_body` only after checking that provider's contract.

## Chat, Tools, And Structured Output

Use OpenAI-shaped `messages` with valid roles and content. Function tools are
schemas, not executable Python: validate names and JSON arguments yourself,
apply least privilege, and only execute an approved function after checking
its arguments. `tool_choice` may be `"auto"`, `"none"`, `"required"`, or a
provider-supported named function object. Provider/model support is not
uniform; see [providers and tasks](references/providers-and-tasks.md).

Use `response_format={"type": "json_object"}` for valid JSON where supported,
or `{"type": "json_schema", "json_schema": {"name": ..., "schema": ...,
"strict": True}}` for schema-constrained output. Keep the schema finite,
valid JSON Schema, and aligned with the prompt. Parse and validate the returned
message content; a response-format request is not a substitute for validation.
For HF Inference, the implementation translates JSON schema to its supported
grammar form, so check the provider before relying on strict behavior.

OpenAI migration requires replacing the import/client and selecting a valid
HF model/provider or compatible URL; it is not a promise that every OpenAI
parameter or provider feature is portable. `client.chat.completions.create` is
an alias, not a separate transport.

## Async And MCP

`AsyncInferenceClient` has the same representative input signatures and
returns awaitables or `AsyncIterable` streams. Run it inside an asyncio
context, `await` ordinary calls and the stream-producing call, then cancel or
close the consumer on early termination. Do not use synchronous iteration on an
async stream.

MCP is experimental and optional. Importing the public class can succeed
without the optional dependency because the MCP package is loaded when a
server connection is opened; install the `mcp` extra before using that path.
`MCPClient` can attach `stdio`, `sse`, or streamable `http` servers, discover
allowed tools, stream a turn, and execute a tool only through the session that
registered its name. `Agent` wraps a bounded MCP loop. Use placeholder
URLs/commands, an explicit narrow `allowed_tools` list (empty to expose none),
isolated working directories, and explicit headers; never put real credentials
in a sample or allow an untrusted stdio command. Use an async context manager
and call `cleanup` on manual paths.

## Endpoint Lifecycle

Use `list_inference_endpoints_hardware` first to resolve valid vendor, region,
accelerator, instance type/size and quota. Then create with
`create_inference_endpoint` (or the experimental catalog helper), inspect the
returned `InferenceEndpoint`, and wait for a healthy `running` state before
accessing `.client`/`.async_client`. `wait(timeout=..., refresh_every=...)`
mutates the object and raises typed endpoint errors on failure or timeout.

The object aliases `fetch`, `update`, `pause`, `resume`, `scale_to_zero`, and
`delete` to HfApi operations; root helpers are also available. Paused endpoints
need explicit resume; scaled-to-zero endpoints restart on request with cold
start. Delete is irreversible. Treat `secrets` and custom image credentials
as write-only. For engine images, parallelism belongs in the image config;
`container_args` are engine flags and are not equivalent. See [workflows](references/workflows.md).

## Diagnose And Verify

Start with the exact signature and selected task/provider, then inspect the
prepared request only with a mock transport. A missing token/provider mapping,
unsupported task/provider, malformed messages/tools/schema, binary MIME/path,
stream event, timeout/rate-limit, billing, endpoint state, or custom-image
error should be diagnosed using [troubleshooting](references/troubleshooting.md).
Use typed errors and bounded recovery; do not blindly retry non-idempotent
endpoint mutations or repeat paid inference.

No live inference, model download, deployment, or endpoint deletion is part of
this skill verification. Run the safe synthetic transport case instead:

```bash
PYTHONPATH=src python skills/huggingface-hub/sub-skills/inference-and-endpoints/scripts/mock_chat_recovery.py
# In an installed-package project, omit `PYTHONPATH=src`.
```

The script asserts no real network or token use while exercising chat tools and
JSON schema, async stream cancellation, and an explicit provider fallback.
Native VCR/production tests cover individual payloads and recorded services,
not this full cross-provider recovery/cancellation composition; its limitation
is documented in the script and [workflows](references/workflows.md).

## Progressive Disclosure

- [api-reference.md](references/api-reference.md) — verified constructors,
  representative task signatures, output types, endpoint APIs, and aliases.
- [workflows.md](references/workflows.md) — safe mocked client flows, async
  streaming/cancellation, MCP setup, endpoint planning, and `hf endpoints
  --help` discovery.
- [providers-and-tasks.md](references/providers-and-tasks.md) — provider/task
  matrix, routing semantics, billing and capability caveats.
- [task-types.md](references/task-types.md) — generated type system and
  practical text/chat/binary/embedding payload shapes.
- [troubleshooting.md](references/troubleshooting.md) — typed failure diagnosis
  and narrow recovery for all supported surfaces.
- [development.md](references/development.md) — maintainer-only generated-file
  policy; never ask runtime users to invoke source generators.

Files in this skill

  • SKILL.md11 KB
  • references/api-reference.md11.2 KB
  • references/development.md2.5 KB
  • references/providers-and-tasks.md6.1 KB
  • references/task-types.md7.7 KB
  • references/troubleshooting.md10.8 KB
  • references/workflows.md8.8 KB
  • scripts/mock_chat_recovery.py8.2 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…