invoke_model.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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, err := 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. if err != nil {
  24. ctx.JSON(500, gin.H{"error": err.Error()})
  25. return
  26. }
  27. defer session.Close()
  28. baseSSEService(
  29. func() (*stream.StreamResponse[tool_entities.ToolResponseChunk], error) {
  30. return plugin_daemon.InvokeTool(session, &r.Data)
  31. },
  32. ctx,
  33. max_timeout_seconds,
  34. )
  35. }
  36. func ValidateToolCredentials(
  37. r *plugin_entities.InvokePluginRequest[requests.RequestValidateToolCredentials],
  38. ctx *gin.Context,
  39. max_timeout_seconds int,
  40. ) {
  41. // create session
  42. session, err := createSession(
  43. r,
  44. access_types.PLUGIN_ACCESS_TYPE_TOOL,
  45. access_types.PLUGIN_ACCESS_ACTION_VALIDATE_TOOL_CREDENTIALS,
  46. ctx.GetString("cluster_id"),
  47. )
  48. if err != nil {
  49. ctx.JSON(500, gin.H{"error": err.Error()})
  50. return
  51. }
  52. defer session.Close()
  53. baseSSEService(
  54. func() (*stream.StreamResponse[tool_entities.ValidateCredentialsResult], error) {
  55. return plugin_daemon.ValidateToolCredentials(session, &r.Data)
  56. },
  57. ctx,
  58. max_timeout_seconds,
  59. )
  60. }