Skip to content

callable_provider

Class info

Classes

Name Children Inherits
CallableResourceProvider
llmling_agent.resource_providers.callable_provider
Wraps callables as a resource provider.
    ResourceProvider
    llmling_agent.resource_providers.base
    Base class for resource providers.

    🛈 DocStrings

    Resource provider wrapper for callable functions.

    CallableResourceProvider

    Bases: ResourceProvider

    Wraps callables as a resource provider.

    Handles both sync and async functions transparently.

    Source code in src/llmling_agent/resource_providers/callable_provider.py
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    class CallableResourceProvider(ResourceProvider):
        """Wraps callables as a resource provider.
    
        Handles both sync and async functions transparently.
        """
    
        def __init__(
            self,
            name: str = "callable",
            tool_callable: ResourceCallable[list[ToolInfo]] | None = None,
            prompt_callable: ResourceCallable[list[BasePrompt]] | None = None,
            resource_callable: ResourceCallable[list[ResourceInfo]] | None = None,
        ):
            """Initialize provider with optional callables.
    
            Args:
                name: Name of the provider
                tool_callable: Function providing tools
                prompt_callable: Function providing prompts
                resource_callable: Function providing resources
    
            Each callable can be sync or async.
            """
            super().__init__(name=name)
            self.tool_callable = tool_callable
            self.prompt_callable = prompt_callable
            self.resource_callable = resource_callable
    
        async def _call_provider[T](
            self,
            provider: ResourceCallable[T] | None,
            default: T,
        ) -> T:
            """Helper to handle sync/async provider calls."""
            if not provider:
                return default
            return await execute(provider)
    
        async def get_tools(self) -> list[ToolInfo]:
            """Get tools from callable if provided."""
            return await self._call_provider(self.tool_callable, [])
    
        async def get_prompts(self) -> list[BasePrompt]:
            """Get prompts from callable if provided."""
            return await self._call_provider(self.prompt_callable, [])
    
        async def get_resources(self) -> list[ResourceInfo]:
            """Get resources from callable if provided."""
            return await self._call_provider(self.resource_callable, [])
    

    __init__

    __init__(
        name: str = "callable",
        tool_callable: ResourceCallable[list[ToolInfo]] | None = None,
        prompt_callable: ResourceCallable[list[BasePrompt]] | None = None,
        resource_callable: ResourceCallable[list[ResourceInfo]] | None = None,
    )
    

    Initialize provider with optional callables.

    Parameters:

    Name Type Description Default
    name str

    Name of the provider

    'callable'
    tool_callable ResourceCallable[list[ToolInfo]] | None

    Function providing tools

    None
    prompt_callable ResourceCallable[list[BasePrompt]] | None

    Function providing prompts

    None
    resource_callable ResourceCallable[list[ResourceInfo]] | None

    Function providing resources

    None

    Each callable can be sync or async.

    Source code in src/llmling_agent/resource_providers/callable_provider.py
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    def __init__(
        self,
        name: str = "callable",
        tool_callable: ResourceCallable[list[ToolInfo]] | None = None,
        prompt_callable: ResourceCallable[list[BasePrompt]] | None = None,
        resource_callable: ResourceCallable[list[ResourceInfo]] | None = None,
    ):
        """Initialize provider with optional callables.
    
        Args:
            name: Name of the provider
            tool_callable: Function providing tools
            prompt_callable: Function providing prompts
            resource_callable: Function providing resources
    
        Each callable can be sync or async.
        """
        super().__init__(name=name)
        self.tool_callable = tool_callable
        self.prompt_callable = prompt_callable
        self.resource_callable = resource_callable
    

    _call_provider async

    _call_provider(provider: ResourceCallable[T] | None, default: T) -> T
    

    Helper to handle sync/async provider calls.

    Source code in src/llmling_agent/resource_providers/callable_provider.py
    51
    52
    53
    54
    55
    56
    57
    58
    59
    async def _call_provider[T](
        self,
        provider: ResourceCallable[T] | None,
        default: T,
    ) -> T:
        """Helper to handle sync/async provider calls."""
        if not provider:
            return default
        return await execute(provider)
    

    get_prompts async

    get_prompts() -> list[BasePrompt]
    

    Get prompts from callable if provided.

    Source code in src/llmling_agent/resource_providers/callable_provider.py
    65
    66
    67
    async def get_prompts(self) -> list[BasePrompt]:
        """Get prompts from callable if provided."""
        return await self._call_provider(self.prompt_callable, [])
    

    get_resources async

    get_resources() -> list[ResourceInfo]
    

    Get resources from callable if provided.

    Source code in src/llmling_agent/resource_providers/callable_provider.py
    69
    70
    71
    async def get_resources(self) -> list[ResourceInfo]:
        """Get resources from callable if provided."""
        return await self._call_provider(self.resource_callable, [])
    

    get_tools async

    get_tools() -> list[ToolInfo]
    

    Get tools from callable if provided.

    Source code in src/llmling_agent/resource_providers/callable_provider.py
    61
    62
    63
    async def get_tools(self) -> list[ToolInfo]:
        """Get tools from callable if provided."""
        return await self._call_provider(self.tool_callable, [])