invoke_agent.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package service
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "github.com/langgenius/dify-plugin-daemon/internal/core/plugin_daemon"
  5. "github.com/langgenius/dify-plugin-daemon/internal/core/plugin_daemon/access_types"
  6. "github.com/langgenius/dify-plugin-daemon/internal/core/session_manager"
  7. "github.com/langgenius/dify-plugin-daemon/internal/types/entities/agent_entities"
  8. "github.com/langgenius/dify-plugin-daemon/internal/types/entities/plugin_entities"
  9. "github.com/langgenius/dify-plugin-daemon/internal/types/entities/requests"
  10. "github.com/langgenius/dify-plugin-daemon/internal/types/exception"
  11. "github.com/langgenius/dify-plugin-daemon/internal/utils/stream"
  12. )
  13. func InvokeAgent(
  14. r *plugin_entities.InvokePluginRequest[requests.RequestInvokeAgent],
  15. ctx *gin.Context,
  16. max_timeout_seconds int,
  17. ) {
  18. // create session
  19. session, err := createSession(
  20. r,
  21. access_types.PLUGIN_ACCESS_TYPE_AGENT,
  22. access_types.PLUGIN_ACCESS_ACTION_INVOKE_AGENT,
  23. ctx.GetString("cluster_id"),
  24. )
  25. if err != nil {
  26. ctx.JSON(500, exception.InternalServerError(err).ToResponse())
  27. return
  28. }
  29. defer session.Close(session_manager.CloseSessionPayload{
  30. IgnoreCache: false,
  31. })
  32. baseSSEService(
  33. func() (*stream.Stream[agent_entities.AgentResponseChunk], error) {
  34. return plugin_daemon.InvokeAgent(session, &r.Data)
  35. },
  36. ctx,
  37. max_timeout_seconds,
  38. )
  39. }