@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.
- package/dist/agents/DraxAgent.js +1 -1
- package/dist/config/DeepSeekConfig.js +9 -0
- package/dist/config/ElevenLabsTTSConfig.js +10 -0
- package/dist/controllers/AICrudController.js +1 -1
- package/dist/controllers/AIGenericController.js +1 -1
- package/dist/controllers/TTSGenericController.js +61 -0
- package/dist/factory/AiProviderFactory.js +4 -0
- package/dist/factory/DeepSeekProviderFactory.js +14 -0
- package/dist/factory/ElevenLabsTTSProviderFactory.js +13 -0
- package/dist/factory/TTSProviderFactory.js +27 -0
- package/dist/factory/ai/AiProviderFactory.js +30 -0
- package/dist/factory/ai/DeepSeekAiProviderFactory.js +14 -0
- package/dist/factory/ai/GoogleAiProviderFactory.js +14 -0
- package/dist/factory/ai/OllamaAiProviderFactory.js +14 -0
- package/dist/factory/ai/OpenAiProviderFactory.js +14 -0
- package/dist/factory/tts/ElevenLabsTTSProviderFactory.js +13 -0
- package/dist/factory/tts/TTSProviderFactory.js +27 -0
- package/dist/index.js +23 -11
- package/dist/interfaces/ITTSProvider.js +1 -0
- package/dist/permissions/TTSPermissions.js +6 -0
- package/dist/providers/DeepSeekProvider.js +34 -0
- package/dist/providers/ElevenLabsTTSProvider.js +108 -0
- package/dist/providers/ai/DeepSeekAiProvider.js +34 -0
- package/dist/providers/ai/GoogleAiProvider.js +367 -0
- package/dist/providers/ai/OllamaAiProvider.js +342 -0
- package/dist/providers/ai/OpenAiProvider.js +302 -0
- package/dist/providers/tts/ElevenLabsTTSProvider.js +108 -0
- package/dist/routes/TTSRoutes.js +8 -0
- package/dist/schemas/TTSRequestSchema.js +24 -0
- package/dist/services/TTSGenericService.js +21 -0
- package/package.json +2 -2
- package/src/agents/DraxAgent.ts +1 -1
- package/src/config/DeepSeekConfig.ts +14 -0
- package/src/config/ElevenLabsTTSConfig.ts +13 -0
- package/src/controllers/AICrudController.ts +1 -1
- package/src/controllers/AIGenericController.ts +1 -1
- package/src/controllers/TTSGenericController.ts +70 -0
- package/src/factory/{AiProviderFactory.ts → ai/AiProviderFactory.ts} +5 -1
- package/src/factory/ai/DeepSeekAiProviderFactory.ts +27 -0
- package/src/factory/{GoogleAiProviderFactory.ts → ai/GoogleAiProviderFactory.ts} +4 -4
- package/src/factory/{OllamaAiProviderFactory.ts → ai/OllamaAiProviderFactory.ts} +4 -4
- package/src/factory/{OpenAiProviderFactory.ts → ai/OpenAiProviderFactory.ts} +4 -4
- package/src/factory/tts/ElevenLabsTTSProviderFactory.ts +26 -0
- package/src/factory/tts/TTSProviderFactory.ts +42 -0
- package/src/index.ts +54 -7
- package/src/interfaces/ITTSProvider.ts +47 -0
- package/src/permissions/AIPermissions.ts +0 -1
- package/src/permissions/TTSPermissions.ts +8 -0
- package/src/providers/ai/DeepSeekAiProvider.ts +58 -0
- package/src/providers/{GoogleAiProvider.ts → ai/GoogleAiProvider.ts} +2 -2
- package/src/providers/{OllamaAiProvider.ts → ai/OllamaAiProvider.ts} +2 -2
- package/src/providers/{OpenAiProvider.ts → ai/OpenAiProvider.ts} +2 -2
- package/src/providers/tts/ElevenLabsTTSProvider.ts +132 -0
- package/src/routes/TTSRoutes.ts +13 -0
- package/src/schemas/TTSRequestSchema.ts +38 -0
- package/src/services/TTSGenericService.ts +41 -0
- package/test/DeepSeekProvider.test.ts +146 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/types/config/DeepSeekConfig.d.ts +9 -0
- package/types/config/DeepSeekConfig.d.ts.map +1 -0
- package/types/config/ElevenLabsTTSConfig.d.ts +10 -0
- package/types/config/ElevenLabsTTSConfig.d.ts.map +1 -0
- package/types/controllers/TTSGenericController.d.ts +11 -0
- package/types/controllers/TTSGenericController.d.ts.map +1 -0
- package/types/factory/AiProviderFactory.d.ts.map +1 -1
- package/types/factory/DeepSeekProviderFactory.d.ts +8 -0
- package/types/factory/DeepSeekProviderFactory.d.ts.map +1 -0
- package/types/factory/ElevenLabsTTSProviderFactory.d.ts +8 -0
- package/types/factory/ElevenLabsTTSProviderFactory.d.ts.map +1 -0
- package/types/factory/TTSProviderFactory.d.ts +15 -0
- package/types/factory/TTSProviderFactory.d.ts.map +1 -0
- package/types/factory/ai/AiProviderFactory.d.ts +8 -0
- package/types/factory/ai/AiProviderFactory.d.ts.map +1 -0
- package/types/factory/ai/DeepSeekAiProviderFactory.d.ts +8 -0
- package/types/factory/ai/DeepSeekAiProviderFactory.d.ts.map +1 -0
- package/types/factory/ai/GoogleAiProviderFactory.d.ts +8 -0
- package/types/factory/ai/GoogleAiProviderFactory.d.ts.map +1 -0
- package/types/factory/ai/OllamaAiProviderFactory.d.ts +8 -0
- package/types/factory/ai/OllamaAiProviderFactory.d.ts.map +1 -0
- package/types/factory/ai/OpenAiProviderFactory.d.ts +8 -0
- package/types/factory/ai/OpenAiProviderFactory.d.ts.map +1 -0
- package/types/factory/tts/ElevenLabsTTSProviderFactory.d.ts +8 -0
- package/types/factory/tts/ElevenLabsTTSProviderFactory.d.ts.map +1 -0
- package/types/factory/tts/TTSProviderFactory.d.ts +15 -0
- package/types/factory/tts/TTSProviderFactory.d.ts.map +1 -0
- package/types/index.d.ts +28 -6
- package/types/index.d.ts.map +1 -1
- package/types/interfaces/ITTSProvider.d.ts +39 -0
- package/types/interfaces/ITTSProvider.d.ts.map +1 -0
- package/types/permissions/TTSPermissions.d.ts +6 -0
- package/types/permissions/TTSPermissions.d.ts.map +1 -0
- package/types/providers/DeepSeekProvider.d.ts +24 -0
- package/types/providers/DeepSeekProvider.d.ts.map +1 -0
- package/types/providers/ElevenLabsTTSProvider.d.ts +38 -0
- package/types/providers/ElevenLabsTTSProvider.d.ts.map +1 -0
- package/types/providers/ai/DeepSeekAiProvider.d.ts +24 -0
- package/types/providers/ai/DeepSeekAiProvider.d.ts.map +1 -0
- package/types/providers/ai/GoogleAiProvider.d.ts +63 -0
- package/types/providers/ai/GoogleAiProvider.d.ts.map +1 -0
- package/types/providers/ai/OllamaAiProvider.d.ts +78 -0
- package/types/providers/ai/OllamaAiProvider.d.ts.map +1 -0
- package/types/providers/ai/OpenAiProvider.d.ts +97 -0
- package/types/providers/ai/OpenAiProvider.d.ts.map +1 -0
- package/types/providers/tts/ElevenLabsTTSProvider.d.ts +38 -0
- package/types/providers/tts/ElevenLabsTTSProvider.d.ts.map +1 -0
- package/types/routes/TTSRoutes.d.ts +4 -0
- package/types/routes/TTSRoutes.d.ts.map +1 -0
- package/types/schemas/TTSRequestSchema.d.ts +37 -0
- package/types/schemas/TTSRequestSchema.d.ts.map +1 -0
- package/types/services/TTSGenericService.d.ts +17 -0
- 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
|
+
})
|