| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- from collections.abc import Generator, Sequence
- from typing import Any
-
- from core.agent.entities import AgentInvokeMessage
- from core.agent.plugin_entities import AgentStrategyEntity, AgentStrategyParameter
- from core.agent.strategy.base import BaseAgentStrategy
- from core.plugin.entities.request import InvokeCredentials, PluginInvokeContext
- from core.plugin.impl.agent import PluginAgentClient
- from core.plugin.utils.converter import convert_parameters_to_plugin_format
-
-
- class PluginAgentStrategy(BaseAgentStrategy):
- """
- Agent Strategy
- """
-
- tenant_id: str
- declaration: AgentStrategyEntity
- meta_version: str | None = None
-
- def __init__(self, tenant_id: str, declaration: AgentStrategyEntity, meta_version: str | None):
- self.tenant_id = tenant_id
- self.declaration = declaration
- self.meta_version = meta_version
-
- def get_parameters(self) -> Sequence[AgentStrategyParameter]:
- return self.declaration.parameters
-
- def initialize_parameters(self, params: dict[str, Any]) -> dict[str, Any]:
- """
- Initialize the parameters for the agent strategy.
- """
- for parameter in self.declaration.parameters:
- params[parameter.name] = parameter.init_frontend_parameter(params.get(parameter.name))
- return params
-
- def _invoke(
- self,
- params: dict[str, Any],
- user_id: str,
- conversation_id: str | None = None,
- app_id: str | None = None,
- message_id: str | None = None,
- credentials: InvokeCredentials | None = None,
- ) -> Generator[AgentInvokeMessage, None, None]:
- """
- Invoke the agent strategy.
- """
- manager = PluginAgentClient()
-
- initialized_params = self.initialize_parameters(params)
- params = convert_parameters_to_plugin_format(initialized_params)
-
- yield from manager.invoke(
- tenant_id=self.tenant_id,
- user_id=user_id,
- agent_provider=self.declaration.identity.provider,
- agent_strategy=self.declaration.identity.name,
- agent_params=params,
- conversation_id=conversation_id,
- app_id=app_id,
- message_id=message_id,
- context=PluginInvokeContext(credentials=credentials or InvokeCredentials()),
- )
|