huggingfaceR 2.1.0
New features
hf_extract()turns unstructured text into tidy columns with chat-model structured JSON output. Pass a lightweight named schema such asc(name = "string", score = "number")or a full JSON Schema list, and the function returns one row per input text with one column per schema field (#55).hf_chat()now supports tool/function calling, streaming callbacks, and image inputs for vision-capable chat models. New helpershf_tool(),hf_run_tools(), andhf_describe_image()make these capabilities available from R pipelines (#55).Multimodal inference wrappers. New functions add audio, image, and generation workflows:
hf_transcribe(),hf_text_to_image(),hf_classify_image(),hf_caption_image(),hf_detect_objects(), andhf_text_to_speech()(#55). Live verification passed for ASR, text-to-image, image classification, captioning, and object detection; public hosted TTS provider support is currently blocked, sohf_text_to_speech()is documented for compatible providers or dedicated Inference Endpoints.Hub files, providers, and guarded writes. New Hub helpers include
hf_hub_download(),hf_list_repo_files(),hf_search_spaces(),hf_search_papers(),hf_list_providers(),hf_create_repo(),hf_upload_file(),hf_push_dataset(), and guardedhf_delete_repo()(#55). Search helpers now follow Hub pagination links, and write/destructive operations requireconfirm = TRUE.First-class text tasks. New API-first, tidyverse-native wrappers round out the text toolkit, each accepting character vectors and returning tibbles:
hf_summarize()(summarization),hf_translate()(translation),hf_ner()(named-entity recognition, one tidy row per entity with character offsets),hf_question_answer()(extractive QA), andhf_table_question_answer()(ask a data frame a question in plain language).
Improvements
Centralized default models. A new exported helper,
hf_default_model(), is the single source of truth for every task’s default model. Allhf_*functions now resolve theirmodeldefault through it (no behavior change — the resolved values are identical), so defaults can be audited or updated in one place. Callhf_default_model()to see the whole registry, orhf_default_model("translate")for a single task’s default.hf_whoami()now returns billing/pro status and token-role metadata so users can check whether their token is read-only or write-capable before Hub write operations.Beginner-friendly default translation model.
hf_translate()now defaults toHelsinki-NLP/opus-mt-en-fr(English to French) instead offacebook/nllb-200-distilled-600M. The Helsinki-NLPopus-mt-*family encodes the translation direction in the model ID, sohf_translate("Hello")works with no FLORES-200 language codes — a smoother first experience. NLLB remains fully supported for multilingual translation via themodel,source, andtargetarguments.Unified request engine with inference-provider routing. Internal request construction is consolidated in
R/request.R(hf_parse_model(),hf_inference_url(),hf_error_body(),hf_is_transient(),hf_task_request()). As a result, themodel = "id:provider"suffix now selects an inference provider for all serverless tasks — including embeddings, classification, and the new text tasks — not just chat. Retries now back off only on genuinely transient status codes (429/5xx), and error messages are consistent across every inference function.
huggingfaceR 2.0.0
Breaking changes
The package no longer requires Python or reticulate for core functionality. All inference is handled through the Hugging Face Inference API via httr2. Legacy functions that depend on Python/reticulate remain available but are not required for new workflows.
Default chat and generation model changed from
HuggingFaceTB/SmolLM3-3Btometa-llama/Llama-3.1-8B-Instruct, which has broader provider support.
New features
API-first architecture: All core functions (
hf_classify(),hf_embed(),hf_chat(),hf_generate(),hf_fill_mask()) use the Hugging Face Inference API directly. No Python installation needed.Text classification:
hf_classify()for sentiment analysis andhf_classify_zero_shot()for custom label classification without training.Embeddings and similarity:
hf_embed()generates dense vector representations.hf_similarity()computes pairwise cosine similarity.hf_nearest_neighbors(),hf_cluster_texts(), andhf_extract_topics()provide higher-level semantic analysis.hf_embed_umap()reduces embeddings to 2D for visualization.Chat and generation:
hf_chat()for single-turn LLM interaction with system prompts.hf_conversation()andchat()for multi-turn conversations with persistent history.hf_generate()for text completion.hf_fill_mask()for BERT-style masked token prediction.Hub discovery:
hf_search_models(),hf_model_info(),hf_search_datasets(),hf_dataset_info(), andhf_list_tasks()for exploring the Hugging Face Hub from R.Datasets:
hf_load_dataset()loads dataset rows directly into tibbles, with support for splits, pagination, and column selection.Batch processing:
hf_embed_batch(),hf_classify_batch(), andhf_classify_zero_shot_batch()process large inputs with parallel requests.hf_embed_chunks()andhf_classify_chunks()add disk checkpointing for datasets too large to hold in memory.tidymodels integration:
step_hf_embed()recipe step embeds text columns as part of a tidymodels preprocessing pipeline.tidytext integration:
hf_embed_text()works directly with data frame text columns for tidytext-style workflows.Model availability checking:
hf_check_inference()queries model metadata to verify whether a model supports the free serverless Inference API before you make inference calls.Dedicated Inference Endpoints: All inference functions accept an
endpoint_urlparameter to route requests to a dedicated Inference Endpoint instead of the public serverless API. This supports models not available on the free tier and production workloads requiring dedicated capacity.
Improvements
All functions return tibbles and accept character vectors, enabling natural composition with dplyr, tidyr, and the rest of the tidyverse.
Improved error messages for 404 responses explain that the model may exist on the Hub but not be available for serverless inference, and suggest using
hf_check_inference().Documentation updated to clarify that the Inference API serves a curated subset of the Hub’s 500,000+ models, not all of them.