build_extra() — langchain Function Reference
Architecture documentation for the build_extra() function in huggingface_endpoint.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD b596ca66_6498_941e_5d78_6d567661596b["build_extra()"] e6b830e0_e492_47f6_6d0a_65d69c36da10["HuggingFaceEndpoint"] b596ca66_6498_941e_5d78_6d567661596b -->|defined in| e6b830e0_e492_47f6_6d0a_65d69c36da10 style b596ca66_6498_941e_5d78_6d567661596b fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
libs/partners/huggingface/langchain_huggingface/llms/huggingface_endpoint.py lines 169–229
def build_extra(cls, values: dict[str, Any]) -> Any:
"""Build extra kwargs from additional params that were passed in."""
all_required_field_names = get_pydantic_field_names(cls)
extra = values.get("model_kwargs", {})
for field_name in list(values):
if field_name in extra:
msg = f"Found {field_name} supplied twice."
raise ValueError(msg)
if field_name not in all_required_field_names:
logger.warning(
f"""WARNING! {field_name} is not default parameter.
{field_name} was transferred to model_kwargs.
Please make sure that {field_name} is what you intended."""
)
extra[field_name] = values.pop(field_name)
invalid_model_kwargs = all_required_field_names.intersection(extra.keys())
if invalid_model_kwargs:
msg = (
f"Parameters {invalid_model_kwargs} should be specified explicitly. "
f"Instead they were passed in as part of `model_kwargs` parameter."
)
raise ValueError(msg)
values["model_kwargs"] = extra
# to correctly create the InferenceClient and AsyncInferenceClient
# in validate_environment, we need to populate values["model"].
# from InferenceClient docstring:
# model (`str`, `optional`):
# The model to run inference with. Can be a model id hosted on the Hugging
# Face Hub, e.g. `bigcode/starcoder`
# or a URL to a deployed Inference Endpoint. Defaults to `None`, in which
# case a recommended model is
# automatically selected for the task.
# this string could be in 3 places of descending priority:
# 2. values["model"] or values["endpoint_url"] or values["repo_id"]
# (equal priority - don't allow both set)
# 3. values["HF_INFERENCE_ENDPOINT"] (if none above set)
model = values.get("model")
endpoint_url = values.get("endpoint_url")
repo_id = values.get("repo_id")
if sum([bool(model), bool(endpoint_url), bool(repo_id)]) > 1:
msg = (
"Please specify either a `model` OR an `endpoint_url` OR a `repo_id`,"
"not more than one."
)
raise ValueError(msg)
values["model"] = (
model or endpoint_url or repo_id or os.environ.get("HF_INFERENCE_ENDPOINT")
)
if not values["model"]:
msg = (
"Please specify a `model` or an `endpoint_url` or a `repo_id` for the "
"model."
)
raise ValueError(msg)
return values
Domain
Subdomains
Source
Frequently Asked Questions
What does build_extra() do?
build_extra() is a function in the langchain codebase, defined in libs/partners/huggingface/langchain_huggingface/llms/huggingface_endpoint.py.
Where is build_extra() defined?
build_extra() is defined in libs/partners/huggingface/langchain_huggingface/llms/huggingface_endpoint.py at line 169.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free