plugin.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. from typing import Any, Generator, Optional, Sequence
  2. from core.agent.entities import AgentInvokeMessage
  3. from core.agent.plugin_entities import AgentParameter, AgentStrategyEntity
  4. from core.agent.strategy.base import BaseAgentStrategy
  5. from core.plugin.manager.agent import PluginAgentManager
  6. from core.tools.plugin_tool.tool import PluginTool
  7. class PluginAgentStrategy(BaseAgentStrategy):
  8. """
  9. Agent Strategy
  10. """
  11. tenant_id: str
  12. plugin_unique_identifier: str
  13. declaration: AgentStrategyEntity
  14. def __init__(self, tenant_id: str, plugin_unique_identifier: str, declaration: AgentStrategyEntity):
  15. self.tenant_id = tenant_id
  16. self.plugin_unique_identifier = plugin_unique_identifier
  17. self.declaration = declaration
  18. def get_parameters(self) -> Sequence[AgentParameter]:
  19. return self.declaration.parameters
  20. def _invoke(
  21. self,
  22. params: dict[str, Any],
  23. user_id: str,
  24. conversation_id: Optional[str] = None,
  25. app_id: Optional[str] = None,
  26. message_id: Optional[str] = None,
  27. ) -> Generator[AgentInvokeMessage, None, None]:
  28. """
  29. Invoke the agent strategy.
  30. """
  31. manager = PluginAgentManager()
  32. # convert agent parameters with File type to PluginFileEntity
  33. params = PluginTool._transform_image_parameters(params)
  34. yield from manager.invoke(
  35. tenant_id=self.tenant_id,
  36. user_id=user_id,
  37. agent_provider=self.declaration.identity.provider,
  38. agent_strategy=self.declaration.identity.name,
  39. agent_params=params,
  40. conversation_id=conversation_id,
  41. app_id=app_id,
  42. message_id=message_id,
  43. )