@drax/ai-back 3.40.0 → 3.42.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/dist/agents/DraxAgent.js +1 -1
  2. package/dist/config/DeepSeekConfig.js +9 -0
  3. package/dist/config/ElevenLabsTTSConfig.js +10 -0
  4. package/dist/controllers/AICrudController.js +1 -1
  5. package/dist/controllers/AIGenericController.js +1 -1
  6. package/dist/controllers/TTSGenericController.js +61 -0
  7. package/dist/factory/AiProviderFactory.js +4 -0
  8. package/dist/factory/DeepSeekProviderFactory.js +14 -0
  9. package/dist/factory/ElevenLabsTTSProviderFactory.js +13 -0
  10. package/dist/factory/TTSProviderFactory.js +27 -0
  11. package/dist/factory/ai/AiProviderFactory.js +30 -0
  12. package/dist/factory/ai/DeepSeekAiProviderFactory.js +14 -0
  13. package/dist/factory/ai/GoogleAiProviderFactory.js +14 -0
  14. package/dist/factory/ai/OllamaAiProviderFactory.js +14 -0
  15. package/dist/factory/ai/OpenAiProviderFactory.js +14 -0
  16. package/dist/factory/tts/ElevenLabsTTSProviderFactory.js +13 -0
  17. package/dist/factory/tts/TTSProviderFactory.js +27 -0
  18. package/dist/index.js +23 -11
  19. package/dist/interfaces/ITTSProvider.js +1 -0
  20. package/dist/permissions/TTSPermissions.js +6 -0
  21. package/dist/providers/DeepSeekProvider.js +34 -0
  22. package/dist/providers/ElevenLabsTTSProvider.js +108 -0
  23. package/dist/providers/ai/DeepSeekAiProvider.js +34 -0
  24. package/dist/providers/ai/GoogleAiProvider.js +367 -0
  25. package/dist/providers/ai/OllamaAiProvider.js +342 -0
  26. package/dist/providers/ai/OpenAiProvider.js +302 -0
  27. package/dist/providers/tts/ElevenLabsTTSProvider.js +108 -0
  28. package/dist/routes/TTSRoutes.js +8 -0
  29. package/dist/schemas/TTSRequestSchema.js +24 -0
  30. package/dist/services/TTSGenericService.js +21 -0
  31. package/package.json +2 -2
  32. package/src/agents/DraxAgent.ts +1 -1
  33. package/src/config/DeepSeekConfig.ts +14 -0
  34. package/src/config/ElevenLabsTTSConfig.ts +13 -0
  35. package/src/controllers/AICrudController.ts +1 -1
  36. package/src/controllers/AIGenericController.ts +1 -1
  37. package/src/controllers/TTSGenericController.ts +70 -0
  38. package/src/factory/{AiProviderFactory.ts → ai/AiProviderFactory.ts} +5 -1
  39. package/src/factory/ai/DeepSeekAiProviderFactory.ts +27 -0
  40. package/src/factory/{GoogleAiProviderFactory.ts → ai/GoogleAiProviderFactory.ts} +4 -4
  41. package/src/factory/{OllamaAiProviderFactory.ts → ai/OllamaAiProviderFactory.ts} +4 -4
  42. package/src/factory/{OpenAiProviderFactory.ts → ai/OpenAiProviderFactory.ts} +4 -4
  43. package/src/factory/tts/ElevenLabsTTSProviderFactory.ts +26 -0
  44. package/src/factory/tts/TTSProviderFactory.ts +42 -0
  45. package/src/index.ts +54 -7
  46. package/src/interfaces/ITTSProvider.ts +47 -0
  47. package/src/permissions/AIPermissions.ts +0 -1
  48. package/src/permissions/TTSPermissions.ts +8 -0
  49. package/src/providers/ai/DeepSeekAiProvider.ts +58 -0
  50. package/src/providers/{GoogleAiProvider.ts → ai/GoogleAiProvider.ts} +2 -2
  51. package/src/providers/{OllamaAiProvider.ts → ai/OllamaAiProvider.ts} +2 -2
  52. package/src/providers/{OpenAiProvider.ts → ai/OpenAiProvider.ts} +2 -2
  53. package/src/providers/tts/ElevenLabsTTSProvider.ts +132 -0
  54. package/src/routes/TTSRoutes.ts +13 -0
  55. package/src/schemas/TTSRequestSchema.ts +38 -0
  56. package/src/services/TTSGenericService.ts +41 -0
  57. package/test/DeepSeekProvider.test.ts +146 -0
  58. package/tsconfig.tsbuildinfo +1 -1
  59. package/types/config/DeepSeekConfig.d.ts +9 -0
  60. package/types/config/DeepSeekConfig.d.ts.map +1 -0
  61. package/types/config/ElevenLabsTTSConfig.d.ts +10 -0
  62. package/types/config/ElevenLabsTTSConfig.d.ts.map +1 -0
  63. package/types/controllers/TTSGenericController.d.ts +11 -0
  64. package/types/controllers/TTSGenericController.d.ts.map +1 -0
  65. package/types/factory/AiProviderFactory.d.ts.map +1 -1
  66. package/types/factory/DeepSeekProviderFactory.d.ts +8 -0
  67. package/types/factory/DeepSeekProviderFactory.d.ts.map +1 -0
  68. package/types/factory/ElevenLabsTTSProviderFactory.d.ts +8 -0
  69. package/types/factory/ElevenLabsTTSProviderFactory.d.ts.map +1 -0
  70. package/types/factory/TTSProviderFactory.d.ts +15 -0
  71. package/types/factory/TTSProviderFactory.d.ts.map +1 -0
  72. package/types/factory/ai/AiProviderFactory.d.ts +8 -0
  73. package/types/factory/ai/AiProviderFactory.d.ts.map +1 -0
  74. package/types/factory/ai/DeepSeekAiProviderFactory.d.ts +8 -0
  75. package/types/factory/ai/DeepSeekAiProviderFactory.d.ts.map +1 -0
  76. package/types/factory/ai/GoogleAiProviderFactory.d.ts +8 -0
  77. package/types/factory/ai/GoogleAiProviderFactory.d.ts.map +1 -0
  78. package/types/factory/ai/OllamaAiProviderFactory.d.ts +8 -0
  79. package/types/factory/ai/OllamaAiProviderFactory.d.ts.map +1 -0
  80. package/types/factory/ai/OpenAiProviderFactory.d.ts +8 -0
  81. package/types/factory/ai/OpenAiProviderFactory.d.ts.map +1 -0
  82. package/types/factory/tts/ElevenLabsTTSProviderFactory.d.ts +8 -0
  83. package/types/factory/tts/ElevenLabsTTSProviderFactory.d.ts.map +1 -0
  84. package/types/factory/tts/TTSProviderFactory.d.ts +15 -0
  85. package/types/factory/tts/TTSProviderFactory.d.ts.map +1 -0
  86. package/types/index.d.ts +28 -6
  87. package/types/index.d.ts.map +1 -1
  88. package/types/interfaces/ITTSProvider.d.ts +39 -0
  89. package/types/interfaces/ITTSProvider.d.ts.map +1 -0
  90. package/types/permissions/TTSPermissions.d.ts +6 -0
  91. package/types/permissions/TTSPermissions.d.ts.map +1 -0
  92. package/types/providers/DeepSeekProvider.d.ts +24 -0
  93. package/types/providers/DeepSeekProvider.d.ts.map +1 -0
  94. package/types/providers/ElevenLabsTTSProvider.d.ts +38 -0
  95. package/types/providers/ElevenLabsTTSProvider.d.ts.map +1 -0
  96. package/types/providers/ai/DeepSeekAiProvider.d.ts +24 -0
  97. package/types/providers/ai/DeepSeekAiProvider.d.ts.map +1 -0
  98. package/types/providers/ai/GoogleAiProvider.d.ts +63 -0
  99. package/types/providers/ai/GoogleAiProvider.d.ts.map +1 -0
  100. package/types/providers/ai/OllamaAiProvider.d.ts +78 -0
  101. package/types/providers/ai/OllamaAiProvider.d.ts.map +1 -0
  102. package/types/providers/ai/OpenAiProvider.d.ts +97 -0
  103. package/types/providers/ai/OpenAiProvider.d.ts.map +1 -0
  104. package/types/providers/tts/ElevenLabsTTSProvider.d.ts +38 -0
  105. package/types/providers/tts/ElevenLabsTTSProvider.d.ts.map +1 -0
  106. package/types/routes/TTSRoutes.d.ts +4 -0
  107. package/types/routes/TTSRoutes.d.ts.map +1 -0
  108. package/types/schemas/TTSRequestSchema.d.ts +37 -0
  109. package/types/schemas/TTSRequestSchema.d.ts.map +1 -0
  110. package/types/services/TTSGenericService.d.ts +17 -0
  111. package/types/services/TTSGenericService.d.ts.map +1 -0
@@ -0,0 +1,146 @@
1
+ import {describe, expect, test} from "vitest";
2
+ import {AiProviderFactory, DeepSeekAiProvider} from "../src";
3
+ import {IPromptTool} from "../src/interfaces/IAIProvider";
4
+
5
+ describe("DeepSeekProvider Test", () => {
6
+
7
+ test("DeepSeek prompt uses OpenAI-compatible chat completions", async () => {
8
+ let request: any
9
+
10
+ class MockedDeepSeekProvider extends DeepSeekAiProvider {
11
+ constructor() {
12
+ super("test-key", "deepseek-chat")
13
+ this._client = {
14
+ chat: {
15
+ completions: {
16
+ create: async (payload: any) => {
17
+ request = payload
18
+ return {
19
+ choices: [{message: {content: "Buenos Aires"}}],
20
+ usage: {
21
+ total_tokens: 8,
22
+ prompt_tokens: 6,
23
+ completion_tokens: 2
24
+ }
25
+ }
26
+ }
27
+ }
28
+ }
29
+ }
30
+ }
31
+ }
32
+
33
+ const deepSeek = new MockedDeepSeekProvider()
34
+
35
+ const r = await deepSeek.prompt({
36
+ systemPrompt: "You are an AI assistant.",
37
+ userInput: "What is the capital of Argentina?"
38
+ })
39
+
40
+ expect(r.output).toBe("Buenos Aires")
41
+ expect(request.model).toBe("deepseek-chat")
42
+ expect(request.messages[1]).toEqual({
43
+ role: "user",
44
+ content: "What is the capital of Argentina?"
45
+ })
46
+ })
47
+
48
+ test("DeepSeek prompt executes tools through OpenAI-compatible tool calls", async () => {
49
+ const requests: any[] = []
50
+ const weatherTool: IPromptTool = {
51
+ name: "get_weather",
52
+ description: "Get weather for a city",
53
+ parameters: {
54
+ type: "object",
55
+ properties: {
56
+ city: {type: "string"}
57
+ },
58
+ required: ["city"],
59
+ additionalProperties: false
60
+ },
61
+ execute: async ({city}) => ({city, temperature: 21})
62
+ }
63
+
64
+ class MockedDeepSeekProvider extends DeepSeekAiProvider {
65
+ constructor() {
66
+ super("test-key", "deepseek-chat")
67
+ this._client = {
68
+ chat: {
69
+ completions: {
70
+ create: async (payload: any) => {
71
+ requests.push(payload)
72
+
73
+ if(requests.length === 1){
74
+ return {
75
+ choices: [{
76
+ message: {
77
+ role: "assistant",
78
+ content: null,
79
+ tool_calls: [{
80
+ id: "call_123",
81
+ type: "function",
82
+ function: {
83
+ name: "get_weather",
84
+ arguments: "{\"city\":\"Buenos Aires\"}"
85
+ }
86
+ }]
87
+ }
88
+ }],
89
+ usage: {
90
+ total_tokens: 15,
91
+ prompt_tokens: 10,
92
+ completion_tokens: 5
93
+ }
94
+ }
95
+ }
96
+
97
+ return {
98
+ choices: [{message: {role: "assistant", content: "21 grados"}}],
99
+ usage: {
100
+ total_tokens: 9,
101
+ prompt_tokens: 7,
102
+ completion_tokens: 2
103
+ }
104
+ }
105
+ }
106
+ }
107
+ }
108
+ }
109
+ }
110
+ }
111
+
112
+ const deepSeek = new MockedDeepSeekProvider()
113
+ const r = await deepSeek.prompt({
114
+ systemPrompt: "You are an AI assistant.",
115
+ userInput: "How is the weather in Buenos Aires?",
116
+ tools: [weatherTool]
117
+ })
118
+
119
+ expect(r.output).toBe("21 grados")
120
+ expect(r.tokens).toBe(24)
121
+ expect(requests[0].tools).toEqual([{
122
+ type: "function",
123
+ function: {
124
+ name: "get_weather",
125
+ description: "Get weather for a city",
126
+ parameters: weatherTool.parameters
127
+ }
128
+ }])
129
+ expect(requests[1].messages[3]).toEqual({
130
+ role: "tool",
131
+ tool_call_id: "call_123",
132
+ content: "{\"city\":\"Buenos Aires\",\"temperature\":21}"
133
+ })
134
+ })
135
+
136
+ test("AiProviderFactory supports DeepSeek option", () => {
137
+ process.env.DEEPSEEK_API_KEY = "test-key"
138
+ process.env.DEEPSEEK_MODEL = "deepseek-chat"
139
+ process.env.DEEPSEEK_BASE_URL = "https://api.deepseek.com"
140
+ process.env.DEEPSEEK_VISION_MODEL = "deepseek-chat"
141
+ process.env.DRAX_DB_ENGINE = "mongo"
142
+
143
+ const deepSeek = AiProviderFactory.instance("DeepSeek")
144
+ expect(deepSeek).toBeInstanceOf(DeepSeekAiProvider)
145
+ })
146
+ })