http_request.go 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package dify_invocation
  2. import (
  3. "github.com/langgenius/dify-plugin-daemon/internal/types/entities/model_entities"
  4. "github.com/langgenius/dify-plugin-daemon/internal/types/entities/tool_entities"
  5. "github.com/langgenius/dify-plugin-daemon/internal/utils/http_requests"
  6. "github.com/langgenius/dify-plugin-daemon/internal/utils/stream"
  7. )
  8. func Request[T any](method string, path string, options ...http_requests.HttpOptions) (*T, error) {
  9. options = append(options,
  10. http_requests.HttpHeader(map[string]string{
  11. "X-Inner-Api-Key": PLUGIN_INNER_API_KEY,
  12. }),
  13. http_requests.HttpWriteTimeout(5000),
  14. http_requests.HttpReadTimeout(60000),
  15. )
  16. return http_requests.RequestAndParse[T](client, difyPath(path), method, options...)
  17. }
  18. func StreamResponse[T any](method string, path string, options ...http_requests.HttpOptions) (*stream.StreamResponse[T], error) {
  19. options = append(
  20. options, http_requests.HttpHeader(map[string]string{
  21. "X-Inner-Api-Key": PLUGIN_INNER_API_KEY,
  22. }),
  23. http_requests.HttpWriteTimeout(5000),
  24. http_requests.HttpReadTimeout(60000),
  25. )
  26. return http_requests.RequestAndParseStream[T](client, difyPath(path), method, options...)
  27. }
  28. func StreamResponseMap(method string, path string, options ...http_requests.HttpOptions) (*stream.StreamResponse[map[string]any], error) {
  29. options = append(
  30. options, http_requests.HttpHeader(map[string]string{
  31. "X-Inner-Api-Key": PLUGIN_INNER_API_KEY,
  32. }),
  33. http_requests.HttpWriteTimeout(5000),
  34. http_requests.HttpReadTimeout(60000),
  35. )
  36. return http_requests.RequestAndParseStreamMap(client, difyPath(path), method, options...)
  37. }
  38. func InvokeLLM(payload *InvokeLLMRequest) (*stream.StreamResponse[model_entities.LLMResultChunk], error) {
  39. return StreamResponse[model_entities.LLMResultChunk]("POST", "invoke/llm", http_requests.HttpPayloadJson(payload))
  40. }
  41. func InvokeTextEmbedding(payload *InvokeTextEmbeddingRequest) (*model_entities.TextEmbeddingResult, error) {
  42. return Request[model_entities.TextEmbeddingResult]("POST", "invoke/text-embedding", http_requests.HttpPayloadJson(payload))
  43. }
  44. func InvokeRerank(payload *InvokeRerankRequest) (*model_entities.RerankResult, error) {
  45. return Request[model_entities.RerankResult]("POST", "invoke/rerank", http_requests.HttpPayloadJson(payload))
  46. }
  47. func InvokeTTS(payload *InvokeTTSRequest) (*stream.StreamResponse[model_entities.TTSResult], error) {
  48. return StreamResponse[model_entities.TTSResult]("POST", "invoke/tts", http_requests.HttpPayloadJson(payload))
  49. }
  50. func InvokeSpeech2Text(payload *InvokeSpeech2TextRequest) (*model_entities.Speech2TextResult, error) {
  51. return Request[model_entities.Speech2TextResult]("POST", "invoke/speech2text", http_requests.HttpPayloadJson(payload))
  52. }
  53. func InvokeModeration(payload *InvokeModerationRequest) (*model_entities.ModerationResult, error) {
  54. return Request[model_entities.ModerationResult]("POST", "invoke/moderation", http_requests.HttpPayloadJson(payload))
  55. }
  56. func InvokeTool(payload *InvokeToolRequest) (*stream.StreamResponse[tool_entities.ToolResponseChunk], error) {
  57. return StreamResponse[tool_entities.ToolResponseChunk]("POST", "invoke/tool", http_requests.HttpPayloadJson(payload))
  58. }
  59. func InvokeApp(payload *InvokeAppRequest) (*stream.StreamResponse[map[string]any], error) {
  60. return StreamResponseMap("POST", "invoke/app", http_requests.HttpPayloadJson(payload))
  61. }