model.go 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. package controllers
  2. import (
  3. "net/http"
  4. "github.com/gin-gonic/gin"
  5. "github.com/langgenius/dify-plugin-daemon/internal/service"
  6. "github.com/langgenius/dify-plugin-daemon/internal/types/app"
  7. "github.com/langgenius/dify-plugin-daemon/internal/types/entities/plugin_entities"
  8. "github.com/langgenius/dify-plugin-daemon/internal/types/entities/requests"
  9. )
  10. func InvokeLLM(config *app.Config) gin.HandlerFunc {
  11. type request = plugin_entities.InvokePluginRequest[requests.RequestInvokeLLM]
  12. return func(c *gin.Context) {
  13. BindPluginDispatchRequest(
  14. c,
  15. func(itr request) {
  16. service.InvokeLLM(&itr, c, config.PluginMaxExecutionTimeout)
  17. },
  18. )
  19. }
  20. }
  21. func InvokeTextEmbedding(config *app.Config) gin.HandlerFunc {
  22. type request = plugin_entities.InvokePluginRequest[requests.RequestInvokeTextEmbedding]
  23. return func(c *gin.Context) {
  24. BindPluginDispatchRequest(
  25. c,
  26. func(itr request) {
  27. service.InvokeTextEmbedding(&itr, c, config.PluginMaxExecutionTimeout)
  28. },
  29. )
  30. }
  31. }
  32. func InvokeRerank(config *app.Config) gin.HandlerFunc {
  33. type request = plugin_entities.InvokePluginRequest[requests.RequestInvokeRerank]
  34. return func(c *gin.Context) {
  35. BindPluginDispatchRequest(
  36. c,
  37. func(itr request) {
  38. service.InvokeRerank(&itr, c, config.PluginMaxExecutionTimeout)
  39. },
  40. )
  41. }
  42. }
  43. func InvokeTTS(config *app.Config) gin.HandlerFunc {
  44. type request = plugin_entities.InvokePluginRequest[requests.RequestInvokeTTS]
  45. return func(c *gin.Context) {
  46. BindPluginDispatchRequest(
  47. c,
  48. func(itr request) {
  49. service.InvokeTTS(&itr, c, config.PluginMaxExecutionTimeout)
  50. },
  51. )
  52. }
  53. }
  54. func InvokeSpeech2Text(config *app.Config) gin.HandlerFunc {
  55. type request = plugin_entities.InvokePluginRequest[requests.RequestInvokeSpeech2Text]
  56. return func(c *gin.Context) {
  57. BindPluginDispatchRequest(
  58. c,
  59. func(itr request) {
  60. service.InvokeSpeech2Text(&itr, c, config.PluginMaxExecutionTimeout)
  61. },
  62. )
  63. }
  64. }
  65. func InvokeModeration(config *app.Config) gin.HandlerFunc {
  66. type request = plugin_entities.InvokePluginRequest[requests.RequestInvokeModeration]
  67. return func(c *gin.Context) {
  68. BindPluginDispatchRequest(
  69. c,
  70. func(itr request) {
  71. service.InvokeModeration(&itr, c, config.PluginMaxExecutionTimeout)
  72. },
  73. )
  74. }
  75. }
  76. func ValidateProviderCredentials(config *app.Config) gin.HandlerFunc {
  77. type request = plugin_entities.InvokePluginRequest[requests.RequestValidateProviderCredentials]
  78. return func(c *gin.Context) {
  79. BindPluginDispatchRequest(
  80. c,
  81. func(itr request) {
  82. service.ValidateProviderCredentials(&itr, c, config.PluginMaxExecutionTimeout)
  83. },
  84. )
  85. }
  86. }
  87. func ValidateModelCredentials(config *app.Config) gin.HandlerFunc {
  88. type request = plugin_entities.InvokePluginRequest[requests.RequestValidateModelCredentials]
  89. return func(c *gin.Context) {
  90. BindPluginDispatchRequest(
  91. c,
  92. func(itr request) {
  93. service.ValidateModelCredentials(&itr, c, config.PluginMaxExecutionTimeout)
  94. },
  95. )
  96. }
  97. }
  98. func GetTTSModelVoices(config *app.Config) gin.HandlerFunc {
  99. type request = plugin_entities.InvokePluginRequest[requests.RequestGetTTSModelVoices]
  100. return func(c *gin.Context) {
  101. BindPluginDispatchRequest(
  102. c,
  103. func(itr request) {
  104. service.GetTTSModelVoices(&itr, c, config.PluginMaxExecutionTimeout)
  105. },
  106. )
  107. }
  108. }
  109. func GetTextEmbeddingNumTokens(config *app.Config) gin.HandlerFunc {
  110. type request = plugin_entities.InvokePluginRequest[requests.RequestGetTextEmbeddingNumTokens]
  111. return func(c *gin.Context) {
  112. BindPluginDispatchRequest(
  113. c,
  114. func(itr request) {
  115. service.GetTextEmbeddingNumTokens(&itr, c, config.PluginMaxExecutionTimeout)
  116. },
  117. )
  118. }
  119. }
  120. func GetLLMNumTokens(config *app.Config) gin.HandlerFunc {
  121. type request = plugin_entities.InvokePluginRequest[requests.RequestGetLLMNumTokens]
  122. return func(c *gin.Context) {
  123. BindPluginDispatchRequest(
  124. c,
  125. func(itr request) {
  126. service.GetLLMNumTokens(&itr, c, config.PluginMaxExecutionTimeout)
  127. },
  128. )
  129. }
  130. }
  131. func GetAIModelSchema(config *app.Config) gin.HandlerFunc {
  132. type request = plugin_entities.InvokePluginRequest[requests.RequestGetAIModelSchema]
  133. return func(c *gin.Context) {
  134. BindPluginDispatchRequest(
  135. c,
  136. func(itr request) {
  137. service.GetAIModelSchema(&itr, c, config.PluginMaxExecutionTimeout)
  138. },
  139. )
  140. }
  141. }
  142. func ListModels(c *gin.Context) {
  143. BindRequest(c, func(request struct {
  144. TenantID string `uri:"tenant_id" validate:"required"`
  145. Page int `form:"page" validate:"required,min=1"`
  146. PageSize int `form:"page_size" validate:"required,min=1,max=256"`
  147. }) {
  148. c.JSON(http.StatusOK, service.ListModels(request.TenantID, request.Page, request.PageSize))
  149. })
  150. }