| 
                        123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 | 
                        - from enum import Enum
 - from typing import Any, Literal, Optional, Union
 - 
 - from pydantic import BaseModel
 - 
 - 
 - class AgentToolEntity(BaseModel):
 -     """
 -     Agent Tool Entity.
 -     """
 -     provider_type: Literal["builtin", "api"]
 -     provider_id: str
 -     tool_name: str
 -     tool_parameters: dict[str, Any] = {}
 - 
 - 
 - class AgentPromptEntity(BaseModel):
 -     """
 -     Agent Prompt Entity.
 -     """
 -     first_prompt: str
 -     next_iteration: str
 - 
 - 
 - class AgentScratchpadUnit(BaseModel):
 -     """
 -     Agent First Prompt Entity.
 -     """
 - 
 -     class Action(BaseModel):
 -         """
 -         Action Entity.
 -         """
 -         action_name: str
 -         action_input: Union[dict, str]
 - 
 -         def to_dict(self) -> dict:
 -             """
 -             Convert to dictionary.
 -             """
 -             return {
 -                 'action': self.action_name,
 -                 'action_input': self.action_input,
 -             }
 - 
 -     agent_response: Optional[str] = None
 -     thought: Optional[str] = None
 -     action_str: Optional[str] = None
 -     observation: Optional[str] = None
 -     action: Optional[Action] = None
 - 
 -     def is_final(self) -> bool:
 -         """
 -         Check if the scratchpad unit is final.
 -         """
 -         return self.action is None or (
 -             'final' in self.action.action_name.lower() and 
 -             'answer' in self.action.action_name.lower()
 -         )
 - 
 - class AgentEntity(BaseModel):
 -     """
 -     Agent Entity.
 -     """
 - 
 -     class Strategy(Enum):
 -         """
 -         Agent Strategy.
 -         """
 -         CHAIN_OF_THOUGHT = 'chain-of-thought'
 -         FUNCTION_CALLING = 'function-calling'
 - 
 -     provider: str
 -     model: str
 -     strategy: Strategy
 -     prompt: Optional[AgentPromptEntity] = None
 -     tools: list[AgentToolEntity] = None
 -     max_iteration: int = 5
 
 
  |