invoke_model.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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/types/entities/plugin_entities"
  7. "github.com/langgenius/dify-plugin-daemon/internal/types/entities/requests"
  8. "github.com/langgenius/dify-plugin-daemon/internal/types/entities/tool_entities"
  9. "github.com/langgenius/dify-plugin-daemon/internal/utils/stream"
  10. )
  11. func InvokeTool(
  12. r *plugin_entities.InvokePluginRequest[requests.RequestInvokeTool],
  13. ctx *gin.Context,
  14. max_timeout_seconds int,
  15. ) {
  16. // create session
  17. session := createSession(
  18. r,
  19. access_types.PLUGIN_ACCESS_TYPE_TOOL,
  20. access_types.PLUGIN_ACCESS_ACTION_INVOKE_TOOL,
  21. ctx.GetString("cluster_id"),
  22. )
  23. defer session.Close()
  24. baseSSEService(
  25. func() (*stream.StreamResponse[tool_entities.ToolResponseChunk], error) {
  26. return plugin_daemon.InvokeTool(session, &r.Data)
  27. },
  28. ctx,
  29. max_timeout_seconds,
  30. )
  31. }
  32. func ValidateToolCredentials(
  33. r *plugin_entities.InvokePluginRequest[requests.RequestValidateToolCredentials],
  34. ctx *gin.Context,
  35. max_timeout_seconds int,
  36. ) {
  37. // create session
  38. session := createSession(
  39. r,
  40. access_types.PLUGIN_ACCESS_TYPE_TOOL,
  41. access_types.PLUGIN_ACCESS_ACTION_VALIDATE_TOOL_CREDENTIALS,
  42. ctx.GetString("cluster_id"),
  43. )
  44. defer session.Close()
  45. baseSSEService(
  46. func() (*stream.StreamResponse[tool_entities.ValidateCredentialsResult], error) {
  47. return plugin_daemon.ValidateToolCredentials(session, &r.Data)
  48. },
  49. ctx,
  50. max_timeout_seconds,
  51. )
  52. }