@dataclouder/nest-vertex 0.0.42 → 0.0.44
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/controllers/vertex-gemini-chat.controller.js +2 -2
- package/index.d.ts +1 -1
- package/index.js +1 -1
- package/package.json +1 -1
- package/services/google-genai.service.d.ts +7 -1
- package/services/google-genai.service.js +5 -5
- package/services/key-balancer-api.service.js +1 -1
- package/services/vertex-gemini-chat.service.js +16 -4
- package/services/vertex-veo-genai.service.js +10 -2
|
@@ -45,8 +45,8 @@ __decorate([
|
|
|
45
45
|
__metadata("design:returntype", Promise)
|
|
46
46
|
], GeminiChatController.prototype, "generateText", null);
|
|
47
47
|
exports.GeminiChatController = GeminiChatController = GeminiChatController_1 = __decorate([
|
|
48
|
-
(0, swagger_1.ApiTags)('
|
|
49
|
-
(0, common_1.Controller)('api/
|
|
48
|
+
(0, swagger_1.ApiTags)('LLM Gemini '),
|
|
49
|
+
(0, common_1.Controller)('api/ai-services/gemini'),
|
|
50
50
|
__metadata("design:paramtypes", [vertex_gemini_chat_service_1.GeminiChatService])
|
|
51
51
|
], GeminiChatController);
|
|
52
52
|
//# sourceMappingURL=vertex-gemini-chat.controller.js.map
|
package/index.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export * from './services/adapter-llm.service';
|
|
|
14
14
|
export * from './services/adapter-image-gen.service';
|
|
15
15
|
export * from './services/generated-asset.service';
|
|
16
16
|
export * from './services/vertex-veo-genai.service';
|
|
17
|
+
export * from './services/whisper/groq.service';
|
|
17
18
|
export * from './models/gemini-models';
|
|
18
19
|
export * from './models/adapter.models';
|
|
19
20
|
export * from './models/google-voices';
|
|
@@ -21,4 +22,3 @@ export * from './models/generated-asset.entity';
|
|
|
21
22
|
export * from './models/generated-asset.model';
|
|
22
23
|
export * from './models/key-balancer.models';
|
|
23
24
|
export * from './models/llm.models';
|
|
24
|
-
export * from './services/whisper/groq.service';
|
package/index.js
CHANGED
|
@@ -30,6 +30,7 @@ __exportStar(require("./services/adapter-llm.service"), exports);
|
|
|
30
30
|
__exportStar(require("./services/adapter-image-gen.service"), exports);
|
|
31
31
|
__exportStar(require("./services/generated-asset.service"), exports);
|
|
32
32
|
__exportStar(require("./services/vertex-veo-genai.service"), exports);
|
|
33
|
+
__exportStar(require("./services/whisper/groq.service"), exports);
|
|
33
34
|
__exportStar(require("./models/gemini-models"), exports);
|
|
34
35
|
__exportStar(require("./models/adapter.models"), exports);
|
|
35
36
|
__exportStar(require("./models/google-voices"), exports);
|
|
@@ -37,5 +38,4 @@ __exportStar(require("./models/generated-asset.entity"), exports);
|
|
|
37
38
|
__exportStar(require("./models/generated-asset.model"), exports);
|
|
38
39
|
__exportStar(require("./models/key-balancer.models"), exports);
|
|
39
40
|
__exportStar(require("./models/llm.models"), exports);
|
|
40
|
-
__exportStar(require("./services/whisper/groq.service"), exports);
|
|
41
41
|
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
import { GoogleGenAI } from '@google/genai';
|
|
2
2
|
import { AvailableKeyResult, ModelType, TierType } from '../models/key-balancer.models';
|
|
3
3
|
import { KeyBalancerApiService } from './key-balancer-api.service';
|
|
4
|
+
interface GeminiClientRequest {
|
|
5
|
+
model: string;
|
|
6
|
+
keyTierType: TierType;
|
|
7
|
+
aiType: ModelType;
|
|
8
|
+
}
|
|
4
9
|
export declare class GoogleGenaiService {
|
|
5
10
|
private readonly keyBalancer;
|
|
6
11
|
private readonly logger;
|
|
7
12
|
private readonly defaultApiKey;
|
|
8
13
|
constructor(keyBalancer: KeyBalancerApiService);
|
|
9
|
-
getGoogleGenAIClient(
|
|
14
|
+
getGoogleGenAIClient(request: GeminiClientRequest): Promise<{
|
|
10
15
|
client: GoogleGenAI;
|
|
11
16
|
balancedKey?: AvailableKeyResult;
|
|
12
17
|
}>;
|
|
13
18
|
}
|
|
19
|
+
export {};
|
|
@@ -26,14 +26,14 @@ let GoogleGenaiService = GoogleGenaiService_1 = class GoogleGenaiService {
|
|
|
26
26
|
this.logger.warn('GEMINI_API_KEY environment variable not set. This service will not work without available keys in the balancer.');
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
async getGoogleGenAIClient(
|
|
29
|
+
async getGoogleGenAIClient(request) {
|
|
30
30
|
this.logger.warn('getGoogleGenAIClient() Getting key from redis');
|
|
31
|
-
if (process.env.KEY_BALANCER_HOST && aiType) {
|
|
31
|
+
if (process.env.KEY_BALANCER_HOST && request.aiType) {
|
|
32
32
|
const balancedKey = await this.keyBalancer.postQueryKey({
|
|
33
33
|
provider: 'google',
|
|
34
|
-
model:
|
|
35
|
-
tier: keyTierType,
|
|
36
|
-
aiType: aiType,
|
|
34
|
+
model: request.model,
|
|
35
|
+
tier: request.keyTierType,
|
|
36
|
+
aiType: request.aiType,
|
|
37
37
|
});
|
|
38
38
|
if (balancedKey?.apiKey) {
|
|
39
39
|
this.logger.debug(`Using balanced key: ${balancedKey.name} ${balancedKey.id}`);
|
|
@@ -28,8 +28,8 @@ let KeyBalancerApiService = KeyBalancerApiService_1 = class KeyBalancerApiServic
|
|
|
28
28
|
}
|
|
29
29
|
try {
|
|
30
30
|
const url = `${keyBalancerHost}/api/key-balancer/redis/key`;
|
|
31
|
-
this.logger.warn(`Request to: ${url}`);
|
|
32
31
|
const { data } = await (0, rxjs_1.firstValueFrom)(this.httpService.post(url, request));
|
|
32
|
+
this.logger.verbose(`Request to: ${url} for key :${request.provider} getting key: ${data.name}`);
|
|
33
33
|
return data;
|
|
34
34
|
}
|
|
35
35
|
catch (error) {
|
|
@@ -23,7 +23,7 @@ let GeminiChatService = GeminiChatService_1 = class GeminiChatService {
|
|
|
23
23
|
keyBalancer;
|
|
24
24
|
googleGenaiService;
|
|
25
25
|
logger = new common_1.Logger(GeminiChatService_1.name);
|
|
26
|
-
defaultModel =
|
|
26
|
+
defaultModel = gemini_models_1.GeminiModels.Gemini2_5Lite;
|
|
27
27
|
constructor(keyBalancer, googleGenaiService) {
|
|
28
28
|
this.keyBalancer = keyBalancer;
|
|
29
29
|
this.googleGenaiService = googleGenaiService;
|
|
@@ -57,7 +57,11 @@ let GeminiChatService = GeminiChatService_1 = class GeminiChatService {
|
|
|
57
57
|
if (!messages || messages.length === 0) {
|
|
58
58
|
return { content: '', role: adapter_models_1.ChatRole.Assistant, metadata: { finishReason: 'NO_INPUT' } };
|
|
59
59
|
}
|
|
60
|
-
const { client, balancedKey } = await this.googleGenaiService.getGoogleGenAIClient(
|
|
60
|
+
const { client, balancedKey } = await this.googleGenaiService.getGoogleGenAIClient({
|
|
61
|
+
model: model,
|
|
62
|
+
keyTierType: keyType || key_balancer_models_1.TierType.FREE_TIER,
|
|
63
|
+
aiType: key_balancer_models_1.ModelType.LLM,
|
|
64
|
+
});
|
|
61
65
|
try {
|
|
62
66
|
const systemMessage = messages
|
|
63
67
|
.filter(msg => msg.role === 'system')
|
|
@@ -140,7 +144,11 @@ let GeminiChatService = GeminiChatService_1 = class GeminiChatService {
|
|
|
140
144
|
}
|
|
141
145
|
const formattedContents = this.formatMessagesToContent(messages);
|
|
142
146
|
const processStream = async function* () {
|
|
143
|
-
const { client, balancedKey } = await this.googleGenaiService.getGoogleGenAIClient(
|
|
147
|
+
const { client, balancedKey } = await this.googleGenaiService.getGoogleGenAIClient({
|
|
148
|
+
model: model,
|
|
149
|
+
keyTierType: keyType || key_balancer_models_1.TierType.FREE_TIER,
|
|
150
|
+
aiType: key_balancer_models_1.ModelType.LLM,
|
|
151
|
+
});
|
|
144
152
|
try {
|
|
145
153
|
this.logger.debug(`Sending stream request to Gemini model ${model} with ${formattedContents.length} content parts and system instruction: ${!!systemMessage}`);
|
|
146
154
|
const stream = await client.models.generateContentStream({
|
|
@@ -229,7 +237,11 @@ let GeminiChatService = GeminiChatService_1 = class GeminiChatService {
|
|
|
229
237
|
const textModelForFix = gemini_models_1.GeminiModels.Gemini2_5Lite;
|
|
230
238
|
const prompt = dto.prompt ||
|
|
231
239
|
'Describe this image, return a json with {"description": "description of image in 1 paragraph", "video": "idea of video in 1 paragraph, describe movements and camera movements, animation, actions or anything that can fit in 6 seconds video "}';
|
|
232
|
-
const { client, balancedKey } = await this.googleGenaiService.getGoogleGenAIClient(
|
|
240
|
+
const { client, balancedKey } = await this.googleGenaiService.getGoogleGenAIClient({
|
|
241
|
+
model: visionModelLLM,
|
|
242
|
+
keyTierType: key_balancer_models_1.TierType.TIER_1,
|
|
243
|
+
aiType: key_balancer_models_1.ModelType.LLM,
|
|
244
|
+
});
|
|
233
245
|
this.logger.log(`Fetching image from URL: ${dto.url}`);
|
|
234
246
|
const imageResponse = await fetch(dto.url);
|
|
235
247
|
if (!imageResponse.ok) {
|
|
@@ -75,7 +75,11 @@ let VertexVeoGenaiService = class VertexVeoGenaiService {
|
|
|
75
75
|
}
|
|
76
76
|
async generateVideo() {
|
|
77
77
|
const prompt = 'Panning wide shot of a calico kitten sleeping in the sunshine';
|
|
78
|
-
const { client, balancedKey } = await this.googleGenaiService.getGoogleGenAIClient(
|
|
78
|
+
const { client, balancedKey } = await this.googleGenaiService.getGoogleGenAIClient({
|
|
79
|
+
model: gemini_models_1.GeminiVideoModels.Veo3Fast,
|
|
80
|
+
keyTierType: key_balancer_models_1.TierType.TIER_1,
|
|
81
|
+
aiType: key_balancer_models_1.ModelType.VIDEO,
|
|
82
|
+
});
|
|
79
83
|
console.log('the balance key for video is ', balancedKey);
|
|
80
84
|
const imagenResponse = await client.models.generateImages({
|
|
81
85
|
model: 'imagen-3.0-generate-002',
|
|
@@ -123,7 +127,11 @@ let VertexVeoGenaiService = class VertexVeoGenaiService {
|
|
|
123
127
|
}
|
|
124
128
|
async _generateVideo(videoRequest) {
|
|
125
129
|
console.log('Generating video...', videoRequest);
|
|
126
|
-
const { client, balancedKey } = await this.googleGenaiService.getGoogleGenAIClient(
|
|
130
|
+
const { client, balancedKey } = await this.googleGenaiService.getGoogleGenAIClient({
|
|
131
|
+
model: gemini_models_1.GeminiVideoModels.Veo3Fast,
|
|
132
|
+
keyTierType: key_balancer_models_1.TierType.TIER_1,
|
|
133
|
+
aiType: key_balancer_models_1.ModelType.VIDEO,
|
|
134
|
+
});
|
|
127
135
|
console.log('the balance key for video is ', balancedKey);
|
|
128
136
|
let operation = await client.models.generateVideos(videoRequest);
|
|
129
137
|
const filename = `veo_video_${(0, uuid_1.v4)()}.mp4`;
|