nat.builder.per_user_workflow_builder#
Attributes#
Classes#
Builder for per-user components that are lazily instantiated. |
Module Contents#
- logger#
- class PerUserWorkflowBuilder(
- user_id: str,
- shared_builder: nat.builder.workflow_builder.WorkflowBuilder,
- registry: nat.cli.type_registry.TypeRegistry | None = None,
Bases:
nat.builder.builder.Builder,contextlib.AbstractAsyncContextManagerBuilder for per-user components that are lazily instantiated.
This builder is created per-user and only builds functions/function_groups that are marked as per-user. It delegates to a shared WorkflowBuilder for all shared components (LLMs, embedders, memory, etc.).
Lifecycle: - Created when a user first makes a request - Kept alive while the user is active - Cleaned up after user inactivity timeout
- _user_id#
- _workflow: nat.builder.workflow_builder.ConfiguredFunction | None = None#
- _registry = None#
- _per_user_functions: dict[str, nat.builder.workflow_builder.ConfiguredFunction]#
- _per_user_function_groups: dict[str, nat.builder.workflow_builder.ConfiguredFunctionGroup]#
- _exit_stack: contextlib.AsyncExitStack | None = None#
- per_user_function_dependencies: dict[str, nat.data_models.function_dependencies.FunctionDependencies]#
- per_user_function_group_dependencies: dict[str, nat.data_models.function_dependencies.FunctionDependencies]#
- _get_exit_stack() contextlib.AsyncExitStack#
- property sync_builder: nat.builder.sync_builder.SyncBuilder#
- middleware_names: collections.abc.Sequence[str],
- component_type: str = 'function',
Resolve middleware names to FunctionMiddleware instances from the shared builder.
- async _build_per_user_function(
- name: str,
- config: nat.data_models.function.FunctionBaseConfig,
- async _build_per_user_function_group(
- name: str,
- config: nat.data_models.function.FunctionGroupBaseConfig,
- async add_function(
- name: str | nat.data_models.component_ref.FunctionRef,
- config: nat.data_models.function.FunctionBaseConfig,
- async get_function( ) nat.builder.function.Function#
- get_function_config( ) nat.data_models.function.FunctionBaseConfig#
- async add_function_group(
- name: str | nat.data_models.component_ref.FunctionGroupRef,
- config: nat.data_models.function.FunctionGroupBaseConfig,
- async get_function_group( ) nat.builder.function.FunctionGroup#
- get_function_group_config( ) nat.data_models.function.FunctionGroupBaseConfig#
- async set_workflow( ) nat.builder.function.Function#
- get_workflow() nat.builder.function.Function#
- get_workflow_config() nat.data_models.function.FunctionBaseConfig#
- get_function_dependencies(
- fn_name: str | nat.data_models.component_ref.FunctionRef,
- get_function_group_dependencies(
- fn_name: str | nat.data_models.component_ref.FunctionGroupRef,
- async get_tools(
- tool_names: collections.abc.Sequence[str | nat.data_models.component_ref.FunctionRef | nat.data_models.component_ref.FunctionGroupRef],
- wrapper_type: nat.builder.framework_enum.LLMFrameworkEnum | str,
- async get_tool(
- fn_name: str | nat.data_models.component_ref.FunctionRef,
- wrapper_type: nat.builder.framework_enum.LLMFrameworkEnum | str,
- async add_llm(name: str, config: nat.data_models.llm.LLMBaseConfig) None#
- async get_llm(
- llm_name: str,
- wrapper_type: nat.builder.framework_enum.LLMFrameworkEnum | str,
- get_llm_config(llm_name: str) nat.data_models.llm.LLMBaseConfig#
- async add_auth_provider(
- name: str,
- config: nat.data_models.authentication.AuthProviderBaseConfig,
- async get_auth_provider(
- auth_provider_name: str,
- async add_embedder(
- name: str,
- config: nat.data_models.embedder.EmbedderBaseConfig,
- async get_embedder(
- embedder_name: str,
- wrapper_type: nat.builder.framework_enum.LLMFrameworkEnum | str,
- get_embedder_config(
- embedder_name: str,
- async add_memory_client(
- name: str,
- config: nat.data_models.memory.MemoryBaseConfig,
- async get_memory_client(
- memory_name: str,
- get_memory_client_config(
- memory_name: str,
- async add_object_store(
- name: str,
- config: nat.data_models.object_store.ObjectStoreBaseConfig,
- async get_object_store_client(
- object_store_name: str,
- get_object_store_config(
- object_store_name: str,
- async add_retriever(
- name: str | nat.data_models.component_ref.RetrieverRef,
- config: nat.data_models.retriever.RetrieverBaseConfig,
- async get_retriever(
- retriever_name: str | nat.data_models.component_ref.RetrieverRef,
- wrapper_type: nat.builder.framework_enum.LLMFrameworkEnum | str | None = None,
- async get_retriever_config(
- retriever_name: str | nat.data_models.component_ref.RetrieverRef,
- async add_ttc_strategy(
- name: str | nat.data_models.component_ref.TTCStrategyRef,
- config: nat.data_models.ttc_strategy.TTCStrategyBaseConfig,
- async get_ttc_strategy(
- strategy_name: str | nat.data_models.component_ref.TTCStrategyRef,
- pipeline_type: nat.experimental.test_time_compute.models.stage_enums.PipelineTypeEnum,
- stage_type: nat.experimental.test_time_compute.models.stage_enums.StageTypeEnum,
- async get_ttc_strategy_config(
- strategy_name: str | nat.data_models.component_ref.TTCStrategyRef,
- pipeline_type: nat.experimental.test_time_compute.models.stage_enums.PipelineTypeEnum,
- stage_type: nat.experimental.test_time_compute.models.stage_enums.StageTypeEnum,
- get_user_manager() nat.builder.builder.UserManagerHolder#
- async add_middleware(
- name: str | nat.data_models.component_ref.MiddlewareRef,
- config: nat.data_models.middleware.MiddlewareBaseConfig,
- async get_middleware(
- middleware_name: str | nat.data_models.component_ref.MiddlewareRef,
- get_middleware_config(
- middleware_name: str | nat.data_models.component_ref.MiddlewareRef,
- async add_trainer(
- name: str | nat.data_models.component_ref.TrainerRef,
- config: nat.data_models.finetuning.TrainerConfig,
- async add_trainer_adapter(
- name: str | nat.data_models.component_ref.TrainerAdapterRef,
- config: nat.data_models.finetuning.TrainerAdapterConfig,
- async add_trajectory_builder(
- name: str | nat.data_models.component_ref.TrajectoryBuilderRef,
- config: nat.data_models.finetuning.TrajectoryBuilderConfig,
- async get_trainer(
- trainer_name: str | nat.data_models.component_ref.TrainerRef,
- trajectory_builder: nat.finetuning.interfaces.trajectory_builder.TrajectoryBuilder,
- trainer_adapter: nat.finetuning.interfaces.trainer_adapter.TrainerAdapter,
- async get_trainer_adapter(
- trainer_adapter_name: str | nat.data_models.component_ref.TrainerAdapterRef,
- async get_trajectory_builder(
- trajectory_builder_name: str | nat.data_models.component_ref.TrajectoryBuilderRef,
- async get_trainer_config(
- trainer_name: str | nat.data_models.component_ref.TrainerRef,
- async get_trainer_adapter_config(
- trainer_adapter_name: str | nat.data_models.component_ref.TrainerAdapterRef,
- async get_trajectory_builder_config(
- trajectory_builder_name: str | nat.data_models.component_ref.TrajectoryBuilderRef,
- async populate_builder(
- config: nat.data_models.config.Config,
- skip_workflow: bool = False,
Populate the per-user builder with per-user components from config.
Only builds components that are marked as per-user. Builds in dependency order to handle per-user functions depending on other per-user functions.
- Args:
config: The full configuration object skip_workflow: If True, skips the workflow instantiation step. Defaults to False.
- Raises:
ValueError: If a per-user component has invalid dependencies
- async build( ) nat.builder.workflow.Workflow#
Creates a workflow instance for this specific user.
Combines per-user functions with shared components from the shared builder.
Parameters#
- entry_functionstr | None, optional
The function name to use as the entry point. If None, uses the workflow. By default None
Returns#
- Workflow
A per-user workflow instance
Raises#
- ValueError
If no workflow is set (neither per-user nor shared)
- classmethod from_config(
- user_id: str,
- config: nat.data_models.config.Config,
- shared_builder: nat.builder.workflow_builder.WorkflowBuilder,
- Async:
Create and populate a PerUserWorkflowBuilder from config.
This is the primary entry point for creating per-user builders.
- Args:
user_id: Unique identifier for the user config: Full configuration object shared_builder: The shared WorkflowBuilder instance
- Yields:
PerUserWorkflowBuilder: Populated per-user builder instance