classResourceProvider:"""Base class for resource providers. Provides tools, prompts, and other resources to agents. Default implementations return empty lists - override as needed. """def__init__(self,name:str,owner:str|None=None):"""Initialize the resource provider."""self.name=nameself.owner=ownerself.log=logger.bind(name=self.name,owner=self.owner)asyncdef__aenter__(self)->Self:"""Async context entry if required."""returnselfasyncdef__aexit__(self,exc_type:type[BaseException]|None,exc_val:BaseException|None,exc_tb:TracebackType|None,):"""Async context cleanup if required."""def__repr__(self)->str:returnf"{self.__class__.__name__}(name={self.name!r})"asyncdefget_tools(self)->list[Tool]:"""Get available tools. Override to provide tools."""return[]asyncdefget_prompts(self)->list[BasePrompt]:"""Get available prompts. Override to provide prompts."""return[]asyncdefget_resources(self)->list[ResourceInfo]:"""Get available resources. Override to provide resources."""return[]asyncdefget_request_parts(self,name:str,arguments:dict[str,str]|None=None)->list[ModelRequestPart]:"""Get a prompt formatted with arguments. Args: name: Name of the prompt to format arguments: Optional arguments for prompt formatting Returns: Single chat message with merged content Raises: KeyError: If prompt not found ValueError: If formatting fails """prompts=awaitself.get_prompts()prompt=next((pforpinpromptsifp.name==name),None)ifnotprompt:msg=f"Prompt {name!r} not found"raiseKeyError(msg)messages=awaitprompt.format(argumentsor{})ifnotmessages:msg=f"Prompt {name!r} produced no messages"raiseValueError(msg)return[pforprompt_msginmessagesforpinprompt_msg.to_pydantic_parts()]
Source code in src/llmling_agent/resource_providers/base.py
40414243444546
asyncdef__aexit__(self,exc_type:type[BaseException]|None,exc_val:BaseException|None,exc_tb:TracebackType|None,):"""Async context cleanup if required."""
Source code in src/llmling_agent/resource_providers/base.py
3031323334
def__init__(self,name:str,owner:str|None=None):"""Initialize the resource provider."""self.name=nameself.owner=ownerself.log=logger.bind(name=self.name,owner=self.owner)
asyncdefget_request_parts(self,name:str,arguments:dict[str,str]|None=None)->list[ModelRequestPart]:"""Get a prompt formatted with arguments. Args: name: Name of the prompt to format arguments: Optional arguments for prompt formatting Returns: Single chat message with merged content Raises: KeyError: If prompt not found ValueError: If formatting fails """prompts=awaitself.get_prompts()prompt=next((pforpinpromptsifp.name==name),None)ifnotprompt:msg=f"Prompt {name!r} not found"raiseKeyError(msg)messages=awaitprompt.format(argumentsor{})ifnotmessages:msg=f"Prompt {name!r} produced no messages"raiseValueError(msg)return[pforprompt_msginmessagesforpinprompt_msg.to_pydantic_parts()]