mirror of
				https://github.com/langgenius/dify.git
				synced 2025-10-31 02:42:59 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			94 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from enum import StrEnum
 | |
| from typing import Any, Optional, Union
 | |
| 
 | |
| from pydantic import BaseModel, Field
 | |
| 
 | |
| from core.tools.entities.tool_entities import ToolInvokeMessage, ToolProviderType
 | |
| 
 | |
| 
 | |
| class AgentToolEntity(BaseModel):
 | |
|     """
 | |
|     Agent Tool Entity.
 | |
|     """
 | |
| 
 | |
|     provider_type: ToolProviderType
 | |
|     provider_id: str
 | |
|     tool_name: str
 | |
|     tool_parameters: dict[str, Any] = Field(default_factory=dict)
 | |
|     plugin_unique_identifier: str | None = None
 | |
| 
 | |
| 
 | |
| 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(StrEnum):
 | |
|         """
 | |
|         Agent Strategy.
 | |
|         """
 | |
| 
 | |
|         CHAIN_OF_THOUGHT = "chain-of-thought"
 | |
|         FUNCTION_CALLING = "function-calling"
 | |
| 
 | |
|     provider: str
 | |
|     model: str
 | |
|     strategy: Strategy
 | |
|     prompt: Optional[AgentPromptEntity] = None
 | |
|     tools: Optional[list[AgentToolEntity]] = None
 | |
|     max_iteration: int = 5
 | |
| 
 | |
| 
 | |
| class AgentInvokeMessage(ToolInvokeMessage):
 | |
|     """
 | |
|     Agent Invoke Message.
 | |
|     """
 | |
| 
 | |
|     pass
 | 
