@hed-hog/core 0.0.232 → 0.0.233
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/ai/ai.controller.d.ts +2 -2
- package/dist/ai/ai.controller.d.ts.map +1 -1
- package/dist/ai/ai.controller.js +11 -6
- package/dist/ai/ai.controller.js.map +1 -1
- package/dist/ai/ai.module.d.ts.map +1 -1
- package/dist/ai/ai.module.js +6 -1
- package/dist/ai/ai.module.js.map +1 -1
- package/dist/ai/ai.service.d.ts +10 -3
- package/dist/ai/ai.service.d.ts.map +1 -1
- package/dist/ai/ai.service.js +82 -9
- package/dist/ai/ai.service.js.map +1 -1
- package/dist/ai/dto/chat-agent.dto.d.ts +1 -0
- package/dist/ai/dto/chat-agent.dto.d.ts.map +1 -1
- package/dist/ai/dto/chat-agent.dto.js +7 -0
- package/dist/ai/dto/chat-agent.dto.js.map +1 -1
- package/dist/ai/dto/chat.dto.d.ts +1 -0
- package/dist/ai/dto/chat.dto.d.ts.map +1 -1
- package/dist/ai/dto/chat.dto.js +7 -0
- package/dist/ai/dto/chat.dto.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/hedhog/frontend/app/ai_agent/page.tsx.ejs +27 -30
- package/package.json +2 -2
- package/src/ai/ai.controller.ts +12 -5
- package/src/ai/ai.module.ts +6 -1
- package/src/ai/ai.service.ts +106 -6
- package/src/ai/dto/chat-agent.dto.ts +7 -1
- package/src/ai/dto/chat.dto.ts +7 -1
- package/src/index.ts +2 -0
|
@@ -7,7 +7,7 @@ import { UpdateAgentDTO } from './dto/update-agent.dto';
|
|
|
7
7
|
export declare class AiController {
|
|
8
8
|
private readonly aiService;
|
|
9
9
|
constructor(aiService: AiService);
|
|
10
|
-
chat(data: ChatDTO): Promise<{
|
|
10
|
+
chat(data: ChatDTO, file?: MulterFile): Promise<{
|
|
11
11
|
provider: "openai";
|
|
12
12
|
model: string;
|
|
13
13
|
content: any;
|
|
@@ -75,7 +75,7 @@ export declare class AiController {
|
|
|
75
75
|
deleteAgents(data: DeleteDTO): Promise<{
|
|
76
76
|
count: number;
|
|
77
77
|
}>;
|
|
78
|
-
chatWithAgent(slug: string, data: ChatAgentDTO): Promise<{
|
|
78
|
+
chatWithAgent(slug: string, data: ChatAgentDTO, file?: MulterFile): Promise<{
|
|
79
79
|
slug: string;
|
|
80
80
|
provider: "openai";
|
|
81
81
|
model: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.controller.d.ts","sourceRoot":"","sources":["../../src/ai/ai.controller.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ai.controller.d.ts","sourceRoot":"","sources":["../../src/ai/ai.controller.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,qBAEa,YAAY;IAGrB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,SAAS;IAKjC,IAAI,CAAS,IAAI,EAAE,OAAO,EAAkB,IAAI,CAAC,EAAE,UAAU;;;;;;;;;IAK7D,WAAW,CAAS,IAAI,EAAE,cAAc;;;;;;;;;;IAKxC,UAAU,CAAe,gBAAgB,KAAA;;;;;;;;;;;;;;;;IAKzC,YAAY,CAAiC,OAAO,EAAE,MAAM;;;;;;;;;;IAK5D,QAAQ,CAAgB,IAAI,EAAE,MAAM;;;;;;;;;;IAKpC,WAAW,CACiB,OAAO,EAAE,MAAM,EACvC,IAAI,EAAE,cAAc;;;;;;;;;;IAMxB,YAAY,CAAS,IAAI,EAAE,SAAS;;;IAMpC,aAAa,CACF,IAAI,EAAE,MAAM,EACnB,IAAI,EAAE,YAAY,EACV,IAAI,CAAC,EAAE,UAAU;;;;;;;;;;;CAIpC"}
|
package/dist/ai/ai.controller.js
CHANGED
|
@@ -16,6 +16,7 @@ exports.AiController = void 0;
|
|
|
16
16
|
const api_1 = require("@hed-hog/api");
|
|
17
17
|
const api_pagination_1 = require("@hed-hog/api-pagination");
|
|
18
18
|
const common_1 = require("@nestjs/common");
|
|
19
|
+
const platform_express_1 = require("@nestjs/platform-express");
|
|
19
20
|
const delete_dto_1 = require("../dto/delete.dto");
|
|
20
21
|
const ai_service_1 = require("./ai.service");
|
|
21
22
|
const chat_agent_dto_1 = require("./dto/chat-agent.dto");
|
|
@@ -26,8 +27,8 @@ let AiController = class AiController {
|
|
|
26
27
|
constructor(aiService) {
|
|
27
28
|
this.aiService = aiService;
|
|
28
29
|
}
|
|
29
|
-
async chat(data) {
|
|
30
|
-
return this.aiService.chat(data);
|
|
30
|
+
async chat(data, file) {
|
|
31
|
+
return this.aiService.chat(data, file);
|
|
31
32
|
}
|
|
32
33
|
async createAgent(data) {
|
|
33
34
|
return this.aiService.createAgent(data);
|
|
@@ -47,16 +48,18 @@ let AiController = class AiController {
|
|
|
47
48
|
async deleteAgents(data) {
|
|
48
49
|
return this.aiService.deleteAgents(data);
|
|
49
50
|
}
|
|
50
|
-
async chatWithAgent(slug, data) {
|
|
51
|
-
return this.aiService.chatWithAgent(slug, data);
|
|
51
|
+
async chatWithAgent(slug, data, file) {
|
|
52
|
+
return this.aiService.chatWithAgent(slug, data, file);
|
|
52
53
|
}
|
|
53
54
|
};
|
|
54
55
|
exports.AiController = AiController;
|
|
55
56
|
__decorate([
|
|
56
57
|
(0, common_1.Post)('chat'),
|
|
58
|
+
(0, common_1.UseInterceptors)((0, platform_express_1.FileInterceptor)('file')),
|
|
57
59
|
__param(0, (0, common_1.Body)()),
|
|
60
|
+
__param(1, (0, common_1.UploadedFile)()),
|
|
58
61
|
__metadata("design:type", Function),
|
|
59
|
-
__metadata("design:paramtypes", [chat_dto_1.ChatDTO]),
|
|
62
|
+
__metadata("design:paramtypes", [chat_dto_1.ChatDTO, Object]),
|
|
60
63
|
__metadata("design:returntype", Promise)
|
|
61
64
|
], AiController.prototype, "chat", null);
|
|
62
65
|
__decorate([
|
|
@@ -104,10 +107,12 @@ __decorate([
|
|
|
104
107
|
], AiController.prototype, "deleteAgents", null);
|
|
105
108
|
__decorate([
|
|
106
109
|
(0, common_1.Post)('agent/:slug/chat'),
|
|
110
|
+
(0, common_1.UseInterceptors)((0, platform_express_1.FileInterceptor)('file')),
|
|
107
111
|
__param(0, (0, common_1.Param)('slug')),
|
|
108
112
|
__param(1, (0, common_1.Body)()),
|
|
113
|
+
__param(2, (0, common_1.UploadedFile)()),
|
|
109
114
|
__metadata("design:type", Function),
|
|
110
|
-
__metadata("design:paramtypes", [String, chat_agent_dto_1.ChatAgentDTO]),
|
|
115
|
+
__metadata("design:paramtypes", [String, chat_agent_dto_1.ChatAgentDTO, Object]),
|
|
111
116
|
__metadata("design:returntype", Promise)
|
|
112
117
|
], AiController.prototype, "chatWithAgent", null);
|
|
113
118
|
exports.AiController = AiController = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.controller.js","sourceRoot":"","sources":["../../src/ai/ai.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,sCAAoC;AACpC,4DAAqD;AACrD,
|
|
1
|
+
{"version":3,"file":"ai.controller.js","sourceRoot":"","sources":["../../src/ai/ai.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.module.d.ts","sourceRoot":"","sources":["../../src/ai/ai.module.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ai.module.d.ts","sourceRoot":"","sources":["../../src/ai/ai.module.ts"],"names":[],"mappings":"AAOA,qBAUa,QAAQ;CAAG"}
|
package/dist/ai/ai.module.js
CHANGED
|
@@ -9,6 +9,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
9
9
|
exports.AiModule = void 0;
|
|
10
10
|
const api_prisma_1 = require("@hed-hog/api-prisma");
|
|
11
11
|
const common_1 = require("@nestjs/common");
|
|
12
|
+
const file_module_1 = require("../file/file.module");
|
|
12
13
|
const setting_module_1 = require("../setting/setting.module");
|
|
13
14
|
const ai_controller_1 = require("./ai.controller");
|
|
14
15
|
const ai_service_1 = require("./ai.service");
|
|
@@ -17,7 +18,11 @@ let AiModule = class AiModule {
|
|
|
17
18
|
exports.AiModule = AiModule;
|
|
18
19
|
exports.AiModule = AiModule = __decorate([
|
|
19
20
|
(0, common_1.Module)({
|
|
20
|
-
imports: [
|
|
21
|
+
imports: [
|
|
22
|
+
(0, common_1.forwardRef)(() => api_prisma_1.PrismaModule),
|
|
23
|
+
(0, common_1.forwardRef)(() => setting_module_1.SettingModule),
|
|
24
|
+
(0, common_1.forwardRef)(() => file_module_1.FileModule),
|
|
25
|
+
],
|
|
21
26
|
controllers: [ai_controller_1.AiController],
|
|
22
27
|
providers: [ai_service_1.AiService],
|
|
23
28
|
exports: [ai_service_1.AiService],
|
package/dist/ai/ai.module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.module.js","sourceRoot":"","sources":["../../src/ai/ai.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,oDAAmD;AACnD,2CAAoD;AACpD,8DAA0D;AAC1D,mDAA+C;AAC/C,6CAAyC;
|
|
1
|
+
{"version":3,"file":"ai.module.js","sourceRoot":"","sources":["../../src/ai/ai.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,oDAAmD;AACnD,2CAAoD;AACpD,qDAAiD;AACjD,8DAA0D;AAC1D,mDAA+C;AAC/C,6CAAyC;AAYlC,IAAM,QAAQ,GAAd,MAAM,QAAQ;CAAG,CAAA;AAAX,4BAAQ;mBAAR,QAAQ;IAVpB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,yBAAY,CAAC;YAC9B,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,8BAAa,CAAC;YAC/B,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,wBAAU,CAAC;SAC7B;QACD,WAAW,EAAE,CAAC,4BAAY,CAAC;QAC3B,SAAS,EAAE,CAAC,sBAAS,CAAC;QACtB,OAAO,EAAE,CAAC,sBAAS,CAAC;KACrB,CAAC;GACW,QAAQ,CAAG"}
|
package/dist/ai/ai.service.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { PaginationDTO } from '@hed-hog/api-pagination';
|
|
2
2
|
import { PrismaService } from '@hed-hog/api-prisma';
|
|
3
3
|
import { DeleteDTO } from '../dto/delete.dto';
|
|
4
|
+
import { FileService } from '../file/file.service';
|
|
4
5
|
import { SettingService } from '../setting/setting.service';
|
|
5
6
|
import { ChatAgentDTO } from './dto/chat-agent.dto';
|
|
6
7
|
import { ChatDTO } from './dto/chat.dto';
|
|
@@ -20,8 +21,9 @@ type AiAgentRecord = {
|
|
|
20
21
|
export declare class AiService {
|
|
21
22
|
private readonly prismaService;
|
|
22
23
|
private readonly settingService;
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
private readonly fileService;
|
|
25
|
+
constructor(prismaService: PrismaService, settingService: SettingService, fileService: FileService);
|
|
26
|
+
chat(data: ChatDTO, file?: MulterFile): Promise<{
|
|
25
27
|
provider: "openai";
|
|
26
28
|
model: string;
|
|
27
29
|
content: any;
|
|
@@ -43,7 +45,7 @@ export declare class AiService {
|
|
|
43
45
|
deleteAgents({ ids }: DeleteDTO): Promise<{
|
|
44
46
|
count: number;
|
|
45
47
|
}>;
|
|
46
|
-
chatWithAgent(slug: string, data: ChatAgentDTO): Promise<{
|
|
48
|
+
chatWithAgent(slug: string, data: ChatAgentDTO, file?: MulterFile): Promise<{
|
|
47
49
|
slug: string;
|
|
48
50
|
provider: "openai";
|
|
49
51
|
model: string;
|
|
@@ -64,6 +66,11 @@ export declare class AiService {
|
|
|
64
66
|
private chatWithOpenAiAssistant;
|
|
65
67
|
private chatWithGemini;
|
|
66
68
|
private sleep;
|
|
69
|
+
private resolveAttachment;
|
|
70
|
+
private buildOpenAiUserContent;
|
|
71
|
+
private isImageMime;
|
|
72
|
+
private isTextMime;
|
|
73
|
+
private toUtf8Text;
|
|
67
74
|
}
|
|
68
75
|
export {};
|
|
69
76
|
//# sourceMappingURL=ai.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.service.d.ts","sourceRoot":"","sources":["../../src/ai/ai.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAUpD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,KAAK,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEtC,KAAK,aAAa,GAAG;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,UAAU,CAAC;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,UAAU,EAAE,IAAI,CAAC;IACjB,UAAU,EAAE,IAAI,CAAC;CAClB,CAAC;
|
|
1
|
+
{"version":3,"file":"ai.service.d.ts","sourceRoot":"","sources":["../../src/ai/ai.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAUpD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,KAAK,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEtC,KAAK,aAAa,GAAG;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,UAAU,CAAC;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,UAAU,EAAE,IAAI,CAAC;IACjB,UAAU,EAAE,IAAI,CAAC;CAClB,CAAC;AAQF,qBACa,SAAS;IAGlB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAE9B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAJX,aAAa,EAAE,aAAa,EAE5B,cAAc,EAAE,cAAc,EAE9B,WAAW,EAAE,WAAW;IAGrC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,UAAU;;;;;;;;;IAmCrC,WAAW,CAAC,IAAI,EAAE,cAAc;IA6BhC,UAAU,CAAC,gBAAgB,EAAE,aAAa;;;;;;;IAuC1C,YAAY,CAAC,OAAO,EAAE,MAAM;IAU5B,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc;IA6CjD,YAAY,CAAC,EAAE,GAAG,EAAE,EAAE,SAAS;;;IAyB/B,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,UAAU;;;;;;;;;;;IAqDjE,cAAc,CAAC,IAAI,EAAE,MAAM;YAUnB,eAAe;YAWf,aAAa;IAW3B,OAAO,CAAC,eAAe;YAQT,UAAU;YAYV,cAAc;YA6Cd,qBAAqB;YA0CrB,uBAAuB;YAiGvB,cAAc;YA0Dd,KAAK;YAIL,iBAAiB;IAwB/B,OAAO,CAAC,sBAAsB;IAuB9B,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,UAAU;CAGnB"}
|
package/dist/ai/ai.service.js
CHANGED
|
@@ -20,20 +20,24 @@ const api_prisma_1 = require("@hed-hog/api-prisma");
|
|
|
20
20
|
const common_1 = require("@nestjs/common");
|
|
21
21
|
const client_1 = require("@prisma/client");
|
|
22
22
|
const axios_1 = __importDefault(require("axios"));
|
|
23
|
+
const file_service_1 = require("../file/file.service");
|
|
23
24
|
const setting_service_1 = require("../setting/setting.service");
|
|
24
25
|
let AiService = class AiService {
|
|
25
|
-
constructor(prismaService, settingService) {
|
|
26
|
+
constructor(prismaService, settingService, fileService) {
|
|
26
27
|
this.prismaService = prismaService;
|
|
27
28
|
this.settingService = settingService;
|
|
29
|
+
this.fileService = fileService;
|
|
28
30
|
}
|
|
29
|
-
async chat(data) {
|
|
31
|
+
async chat(data, file) {
|
|
30
32
|
const provider = data.provider || 'openai';
|
|
33
|
+
const attachment = await this.resolveAttachment(file, data.file_id);
|
|
31
34
|
if (provider === 'openai') {
|
|
32
35
|
const model = data.model || 'gpt-4o-mini';
|
|
33
36
|
const content = await this.chatWithOpenAi({
|
|
34
37
|
message: data.message,
|
|
35
38
|
model,
|
|
36
39
|
systemPrompt: data.systemPrompt,
|
|
40
|
+
attachment,
|
|
37
41
|
});
|
|
38
42
|
return {
|
|
39
43
|
provider,
|
|
@@ -46,6 +50,7 @@ let AiService = class AiService {
|
|
|
46
50
|
message: data.message,
|
|
47
51
|
model,
|
|
48
52
|
systemPrompt: data.systemPrompt,
|
|
53
|
+
attachment,
|
|
49
54
|
});
|
|
50
55
|
return {
|
|
51
56
|
provider,
|
|
@@ -173,13 +178,14 @@ let AiService = class AiService {
|
|
|
173
178
|
count: Number(deletedCount || 0),
|
|
174
179
|
};
|
|
175
180
|
}
|
|
176
|
-
async chatWithAgent(slug, data) {
|
|
181
|
+
async chatWithAgent(slug, data, file) {
|
|
177
182
|
const agent = await this.findAgentBySlug(slug);
|
|
183
|
+
const attachment = await this.resolveAttachment(file, data.file_id);
|
|
178
184
|
if (!agent) {
|
|
179
185
|
throw new common_1.NotFoundException(`AI agent with slug "${slug}" was not found.`);
|
|
180
186
|
}
|
|
181
187
|
if (agent.provider === 'openai') {
|
|
182
|
-
if (agent.external_agent_id) {
|
|
188
|
+
if (agent.external_agent_id && !attachment) {
|
|
183
189
|
const content = await this.chatWithOpenAiAssistant(agent.external_agent_id, data.message);
|
|
184
190
|
return {
|
|
185
191
|
slug: agent.slug,
|
|
@@ -192,6 +198,7 @@ let AiService = class AiService {
|
|
|
192
198
|
message: data.message,
|
|
193
199
|
model: agent.model || this.getDefaultModel('openai'),
|
|
194
200
|
systemPrompt: agent.instructions || undefined,
|
|
201
|
+
attachment,
|
|
195
202
|
});
|
|
196
203
|
return {
|
|
197
204
|
slug: agent.slug,
|
|
@@ -204,6 +211,7 @@ let AiService = class AiService {
|
|
|
204
211
|
message: data.message,
|
|
205
212
|
model: agent.model || this.getDefaultModel('gemini'),
|
|
206
213
|
systemPrompt: agent.instructions || undefined,
|
|
214
|
+
attachment,
|
|
207
215
|
});
|
|
208
216
|
return {
|
|
209
217
|
slug: agent.slug,
|
|
@@ -253,7 +261,7 @@ let AiService = class AiService {
|
|
|
253
261
|
gemini: settings['ai-gemini-api-key'],
|
|
254
262
|
};
|
|
255
263
|
}
|
|
256
|
-
async chatWithOpenAi({ message, model, systemPrompt, }) {
|
|
264
|
+
async chatWithOpenAi({ message, model, systemPrompt, attachment, }) {
|
|
257
265
|
var _a, _b, _c, _d;
|
|
258
266
|
const { openai } = await this.getApiKeys();
|
|
259
267
|
if (!openai) {
|
|
@@ -263,7 +271,8 @@ let AiService = class AiService {
|
|
|
263
271
|
if (systemPrompt) {
|
|
264
272
|
messages.push({ role: 'system', content: systemPrompt });
|
|
265
273
|
}
|
|
266
|
-
|
|
274
|
+
const userContent = this.buildOpenAiUserContent(message, attachment);
|
|
275
|
+
messages.push({ role: 'user', content: userContent });
|
|
267
276
|
const response = await axios_1.default.post('https://api.openai.com/v1/chat/completions', {
|
|
268
277
|
model,
|
|
269
278
|
messages,
|
|
@@ -356,15 +365,31 @@ let AiService = class AiService {
|
|
|
356
365
|
const output = (_h = (_g = (_f = assistantMessage === null || assistantMessage === void 0 ? void 0 : assistantMessage.content) === null || _f === void 0 ? void 0 : _f[0]) === null || _g === void 0 ? void 0 : _g.text) === null || _h === void 0 ? void 0 : _h.value;
|
|
357
366
|
return output || '';
|
|
358
367
|
}
|
|
359
|
-
async chatWithGemini({ message, model, systemPrompt, }) {
|
|
368
|
+
async chatWithGemini({ message, model, systemPrompt, attachment, }) {
|
|
360
369
|
var _a, _b, _c, _d;
|
|
361
370
|
const { gemini } = await this.getApiKeys();
|
|
362
371
|
if (!gemini) {
|
|
363
372
|
throw new common_1.BadRequestException('Gemini API key is not configured (setting "ai-gemini-api-key").');
|
|
364
373
|
}
|
|
365
374
|
const url = `https://generativelanguage.googleapis.com/v1beta/models/${model}:generateContent?key=${gemini}`;
|
|
375
|
+
const userParts = [{ text: message }];
|
|
376
|
+
if (attachment) {
|
|
377
|
+
if (this.isTextMime(attachment.mimeType)) {
|
|
378
|
+
userParts.push({
|
|
379
|
+
text: `\n\n[Attached file: ${attachment.filename}]\n${this.toUtf8Text(attachment.buffer)}`,
|
|
380
|
+
});
|
|
381
|
+
}
|
|
382
|
+
else {
|
|
383
|
+
userParts.push({
|
|
384
|
+
inline_data: {
|
|
385
|
+
mime_type: attachment.mimeType,
|
|
386
|
+
data: attachment.buffer.toString('base64'),
|
|
387
|
+
},
|
|
388
|
+
});
|
|
389
|
+
}
|
|
390
|
+
}
|
|
366
391
|
const payload = {
|
|
367
|
-
contents: [{ parts:
|
|
392
|
+
contents: [{ parts: userParts }],
|
|
368
393
|
};
|
|
369
394
|
if (systemPrompt) {
|
|
370
395
|
payload.systemInstruction = {
|
|
@@ -382,13 +407,61 @@ let AiService = class AiService {
|
|
|
382
407
|
async sleep(ms) {
|
|
383
408
|
await new Promise((resolve) => setTimeout(resolve, ms));
|
|
384
409
|
}
|
|
410
|
+
async resolveAttachment(uploadFile, fileId) {
|
|
411
|
+
var _a;
|
|
412
|
+
if (uploadFile) {
|
|
413
|
+
return {
|
|
414
|
+
filename: uploadFile.originalname,
|
|
415
|
+
mimeType: uploadFile.mimetype,
|
|
416
|
+
buffer: uploadFile.buffer,
|
|
417
|
+
};
|
|
418
|
+
}
|
|
419
|
+
if (fileId) {
|
|
420
|
+
const { file, buffer } = await this.fileService.getBuffer(fileId);
|
|
421
|
+
return {
|
|
422
|
+
filename: file.filename,
|
|
423
|
+
mimeType: ((_a = file.file_mimetype) === null || _a === void 0 ? void 0 : _a.name) || 'application/octet-stream',
|
|
424
|
+
buffer,
|
|
425
|
+
};
|
|
426
|
+
}
|
|
427
|
+
return null;
|
|
428
|
+
}
|
|
429
|
+
buildOpenAiUserContent(message, attachment) {
|
|
430
|
+
if (!attachment) {
|
|
431
|
+
return message;
|
|
432
|
+
}
|
|
433
|
+
if (this.isImageMime(attachment.mimeType)) {
|
|
434
|
+
const dataUri = `data:${attachment.mimeType};base64,${attachment.buffer.toString('base64')}`;
|
|
435
|
+
return [
|
|
436
|
+
{ type: 'text', text: message },
|
|
437
|
+
{ type: 'image_url', image_url: { url: dataUri } },
|
|
438
|
+
];
|
|
439
|
+
}
|
|
440
|
+
const text = this.isTextMime(attachment.mimeType)
|
|
441
|
+
? this.toUtf8Text(attachment.buffer)
|
|
442
|
+
: `[Binary attachment: ${attachment.filename} | ${attachment.mimeType} | ${attachment.buffer.length} bytes]`;
|
|
443
|
+
return `${message}\n\n[Attached file: ${attachment.filename}]\n${text}`;
|
|
444
|
+
}
|
|
445
|
+
isImageMime(mimeType) {
|
|
446
|
+
return mimeType.startsWith('image/');
|
|
447
|
+
}
|
|
448
|
+
isTextMime(mimeType) {
|
|
449
|
+
return (mimeType.startsWith('text/') ||
|
|
450
|
+
mimeType === 'application/json' ||
|
|
451
|
+
mimeType === 'application/xml');
|
|
452
|
+
}
|
|
453
|
+
toUtf8Text(buffer) {
|
|
454
|
+
return buffer.toString('utf8');
|
|
455
|
+
}
|
|
385
456
|
};
|
|
386
457
|
exports.AiService = AiService;
|
|
387
458
|
exports.AiService = AiService = __decorate([
|
|
388
459
|
(0, common_1.Injectable)(),
|
|
389
460
|
__param(0, (0, common_1.Inject)((0, common_1.forwardRef)(() => api_prisma_1.PrismaService))),
|
|
390
461
|
__param(1, (0, common_1.Inject)((0, common_1.forwardRef)(() => setting_service_1.SettingService))),
|
|
462
|
+
__param(2, (0, common_1.Inject)((0, common_1.forwardRef)(() => file_service_1.FileService))),
|
|
391
463
|
__metadata("design:paramtypes", [api_prisma_1.PrismaService,
|
|
392
|
-
setting_service_1.SettingService
|
|
464
|
+
setting_service_1.SettingService,
|
|
465
|
+
file_service_1.FileService])
|
|
393
466
|
], AiService);
|
|
394
467
|
//# sourceMappingURL=ai.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.service.js","sourceRoot":"","sources":["../../src/ai/ai.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ai.service.js","sourceRoot":"","sources":["../../src/ai/ai.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-agent.dto.d.ts","sourceRoot":"","sources":["../../../src/ai/dto/chat-agent.dto.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chat-agent.dto.d.ts","sourceRoot":"","sources":["../../../src/ai/dto/chat-agent.dto.ts"],"names":[],"mappings":"AAGA,qBAAa,YAAY;IAGvB,OAAO,EAAE,MAAM,CAAC;IAKhB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
|
|
@@ -10,6 +10,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.ChatAgentDTO = void 0;
|
|
13
|
+
const class_transformer_1 = require("class-transformer");
|
|
13
14
|
const class_validator_1 = require("class-validator");
|
|
14
15
|
class ChatAgentDTO {
|
|
15
16
|
}
|
|
@@ -19,4 +20,10 @@ __decorate([
|
|
|
19
20
|
(0, class_validator_1.IsNotEmpty)(),
|
|
20
21
|
__metadata("design:type", String)
|
|
21
22
|
], ChatAgentDTO.prototype, "message", void 0);
|
|
23
|
+
__decorate([
|
|
24
|
+
(0, class_validator_1.IsOptional)(),
|
|
25
|
+
(0, class_transformer_1.Type)(() => Number),
|
|
26
|
+
(0, class_validator_1.IsInt)(),
|
|
27
|
+
__metadata("design:type", Number)
|
|
28
|
+
], ChatAgentDTO.prototype, "file_id", void 0);
|
|
22
29
|
//# sourceMappingURL=chat-agent.dto.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-agent.dto.js","sourceRoot":"","sources":["../../../src/ai/dto/chat-agent.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"chat-agent.dto.js","sourceRoot":"","sources":["../../../src/ai/dto/chat-agent.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yDAAyC;AACzC,qDAA0E;AAE1E,MAAa,YAAY;CASxB;AATD,oCASC;AANC;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;6CACG;AAKhB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,IAAA,uBAAK,GAAE;;6CACS"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.dto.d.ts","sourceRoot":"","sources":["../../../src/ai/dto/chat.dto.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chat.dto.d.ts","sourceRoot":"","sources":["../../../src/ai/dto/chat.dto.ts"],"names":[],"mappings":"AAGA,qBAAa,OAAO;IAGlB,OAAO,EAAE,MAAM,CAAC;IAKhB,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAI/B,KAAK,CAAC,EAAE,MAAM,CAAC;IAIf,YAAY,CAAC,EAAE,MAAM,CAAC;IAKtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
|
package/dist/ai/dto/chat.dto.js
CHANGED
|
@@ -10,6 +10,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.ChatDTO = void 0;
|
|
13
|
+
const class_transformer_1 = require("class-transformer");
|
|
13
14
|
const class_validator_1 = require("class-validator");
|
|
14
15
|
class ChatDTO {
|
|
15
16
|
}
|
|
@@ -35,4 +36,10 @@ __decorate([
|
|
|
35
36
|
(0, class_validator_1.IsString)(),
|
|
36
37
|
__metadata("design:type", String)
|
|
37
38
|
], ChatDTO.prototype, "systemPrompt", void 0);
|
|
39
|
+
__decorate([
|
|
40
|
+
(0, class_validator_1.IsOptional)(),
|
|
41
|
+
(0, class_transformer_1.Type)(() => Number),
|
|
42
|
+
(0, class_validator_1.IsInt)(),
|
|
43
|
+
__metadata("design:type", Number)
|
|
44
|
+
], ChatDTO.prototype, "file_id", void 0);
|
|
38
45
|
//# sourceMappingURL=chat.dto.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.dto.js","sourceRoot":"","sources":["../../../src/ai/dto/chat.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"chat.dto.js","sourceRoot":"","sources":["../../../src/ai/dto/chat.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yDAAyC;AACzC,qDAAgF;AAEhF,MAAa,OAAO;CAsBnB;AAtBD,0BAsBC;AAnBC;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;wCACG;AAKhB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,sBAAI,EAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;;yCACI;AAI/B;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;sCACI;AAIf;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;6CACW;AAKtB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,IAAA,uBAAK,GAAE;;wCACS"}
|
package/dist/index.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ export * from './user/user.service';
|
|
|
10
10
|
export * from './mail/mail.module';
|
|
11
11
|
export * from './mail/mail.service';
|
|
12
12
|
export * from './setting/setting.service';
|
|
13
|
+
export * from './ai/ai.module';
|
|
13
14
|
export * from './ai/ai.service';
|
|
14
15
|
export * from './validators/is-email-with-settings.validator';
|
|
15
16
|
export * from './validators/is-pin-code-with-setting.validator';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,eAAe,CAAC;AAG9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AAGzC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,yBAAyB,CAAC;AAGxC,cAAc,iCAAiC,CAAC;AAChD,cAAc,qBAAqB,CAAC;AAEpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AAEpC,cAAc,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,eAAe,CAAC;AAG9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AAGzC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,yBAAyB,CAAC;AAGxC,cAAc,iCAAiC,CAAC;AAChD,cAAc,qBAAqB,CAAC;AAEpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AAEpC,cAAc,2BAA2B,CAAC;AAE1C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,+CAA+C,CAAC;AAC9D,cAAc,iDAAiD,CAAC;AAChE,cAAc,yDAAyD,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -32,6 +32,7 @@ __exportStar(require("./user/user.service"), exports);
|
|
|
32
32
|
__exportStar(require("./mail/mail.module"), exports);
|
|
33
33
|
__exportStar(require("./mail/mail.service"), exports);
|
|
34
34
|
__exportStar(require("./setting/setting.service"), exports);
|
|
35
|
+
__exportStar(require("./ai/ai.module"), exports);
|
|
35
36
|
__exportStar(require("./ai/ai.service"), exports);
|
|
36
37
|
// Validators
|
|
37
38
|
__exportStar(require("./validators/is-email-with-settings.validator"), exports);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,cAAc;AACd,gDAA8B;AAE9B,cAAc;AACd,sDAAoC;AACpC,2DAAyC;AAEzC,cAAc;AACd,sDAAoC;AAEpC,oBAAoB;AACpB,2DAAyC;AACzC,sDAAoC;AAEpC,gBAAgB;AAChB,0DAAwC;AAExC,cAAc;AACd,kEAAgD;AAChD,sDAAoC;AAEpC,qDAAmC;AACnC,sDAAoC;AAEpC,4DAA0C;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,cAAc;AACd,gDAA8B;AAE9B,cAAc;AACd,sDAAoC;AACpC,2DAAyC;AAEzC,cAAc;AACd,sDAAoC;AAEpC,oBAAoB;AACpB,2DAAyC;AACzC,sDAAoC;AAEpC,gBAAgB;AAChB,0DAAwC;AAExC,cAAc;AACd,kEAAgD;AAChD,sDAAoC;AAEpC,qDAAmC;AACnC,sDAAoC;AAEpC,4DAA0C;AAE1C,iDAA+B;AAC/B,kDAAgC;AAEhC,aAAa;AACb,gFAA8D;AAC9D,kFAAgE;AAChE,0FAAwE"}
|
|
@@ -18,14 +18,6 @@ import {
|
|
|
18
18
|
} from '@/components/ui/alert-dialog';
|
|
19
19
|
import { Button } from '@/components/ui/button';
|
|
20
20
|
import { Card, CardContent } from '@/components/ui/card';
|
|
21
|
-
import {
|
|
22
|
-
Dialog,
|
|
23
|
-
DialogContent,
|
|
24
|
-
DialogDescription,
|
|
25
|
-
DialogFooter,
|
|
26
|
-
DialogHeader,
|
|
27
|
-
DialogTitle,
|
|
28
|
-
} from '@/components/ui/dialog';
|
|
29
21
|
import {
|
|
30
22
|
Form,
|
|
31
23
|
FormControl,
|
|
@@ -42,6 +34,14 @@ import {
|
|
|
42
34
|
SelectTrigger,
|
|
43
35
|
SelectValue,
|
|
44
36
|
} from '@/components/ui/select';
|
|
37
|
+
import {
|
|
38
|
+
Sheet,
|
|
39
|
+
SheetContent,
|
|
40
|
+
SheetDescription,
|
|
41
|
+
SheetFooter,
|
|
42
|
+
SheetHeader,
|
|
43
|
+
SheetTitle,
|
|
44
|
+
} from '@/components/ui/sheet';
|
|
45
45
|
import {
|
|
46
46
|
Table,
|
|
47
47
|
TableBody,
|
|
@@ -330,17 +330,20 @@ export default function AiAgentPage() {
|
|
|
330
330
|
}}
|
|
331
331
|
/>
|
|
332
332
|
|
|
333
|
-
<
|
|
334
|
-
<
|
|
335
|
-
<
|
|
336
|
-
<
|
|
333
|
+
<Sheet open={isDialogOpen} onOpenChange={setIsDialogOpen}>
|
|
334
|
+
<SheetContent side="right" className="sm:max-w-xl overflow-y-auto">
|
|
335
|
+
<SheetHeader>
|
|
336
|
+
<SheetTitle>
|
|
337
337
|
{editingAgent ? t('editTitle') : t('createTitle')}
|
|
338
|
-
</
|
|
339
|
-
<
|
|
340
|
-
</
|
|
338
|
+
</SheetTitle>
|
|
339
|
+
<SheetDescription>{t('dialogDescription')}</SheetDescription>
|
|
340
|
+
</SheetHeader>
|
|
341
341
|
|
|
342
342
|
<Form {...form}>
|
|
343
|
-
<form
|
|
343
|
+
<form
|
|
344
|
+
className="flex flex-col px-4 gap-4"
|
|
345
|
+
onSubmit={form.handleSubmit(onSubmit)}
|
|
346
|
+
>
|
|
344
347
|
<FormField
|
|
345
348
|
control={form.control}
|
|
346
349
|
name="slug"
|
|
@@ -369,7 +372,7 @@ export default function AiAgentPage() {
|
|
|
369
372
|
value={field.value}
|
|
370
373
|
onValueChange={field.onChange}
|
|
371
374
|
>
|
|
372
|
-
<SelectTrigger>
|
|
375
|
+
<SelectTrigger className="w-full">
|
|
373
376
|
<SelectValue
|
|
374
377
|
placeholder={t('fieldProviderPlaceholder')}
|
|
375
378
|
/>
|
|
@@ -415,7 +418,8 @@ export default function AiAgentPage() {
|
|
|
415
418
|
<FormControl>
|
|
416
419
|
<Textarea
|
|
417
420
|
placeholder={t('fieldInstructionsPlaceholder')}
|
|
418
|
-
rows={
|
|
421
|
+
rows={10}
|
|
422
|
+
className="min-h-24"
|
|
419
423
|
{...field}
|
|
420
424
|
/>
|
|
421
425
|
</FormControl>
|
|
@@ -424,23 +428,16 @@ export default function AiAgentPage() {
|
|
|
424
428
|
)}
|
|
425
429
|
/>
|
|
426
430
|
|
|
427
|
-
<
|
|
428
|
-
<Button
|
|
429
|
-
type="button"
|
|
430
|
-
variant="outline"
|
|
431
|
-
onClick={() => setIsDialogOpen(false)}
|
|
432
|
-
>
|
|
433
|
-
{t('cancel')}
|
|
434
|
-
</Button>
|
|
431
|
+
<SheetFooter className="p-0">
|
|
435
432
|
<Button type="submit">
|
|
436
|
-
<Bot className="h-4 w-4
|
|
433
|
+
<Bot className="h-4 w-4" />
|
|
437
434
|
{editingAgent ? t('saveChanges') : t('createAgent')}
|
|
438
435
|
</Button>
|
|
439
|
-
</
|
|
436
|
+
</SheetFooter>
|
|
440
437
|
</form>
|
|
441
438
|
</Form>
|
|
442
|
-
</
|
|
443
|
-
</
|
|
439
|
+
</SheetContent>
|
|
440
|
+
</Sheet>
|
|
444
441
|
|
|
445
442
|
<AlertDialog
|
|
446
443
|
open={Boolean(agentToDelete)}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hed-hog/core",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.233",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"dependencies": {
|
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
"@hed-hog/api": "0.0.3",
|
|
33
33
|
"@hed-hog/api-prisma": "0.0.4",
|
|
34
34
|
"@hed-hog/api-types": "0.0.1",
|
|
35
|
-
"@hed-hog/api-locale": "0.0.11",
|
|
36
35
|
"@hed-hog/api-pagination": "0.0.5",
|
|
36
|
+
"@hed-hog/api-locale": "0.0.11",
|
|
37
37
|
"@hed-hog/api-mail": "0.0.7"
|
|
38
38
|
},
|
|
39
39
|
"exports": {
|
package/src/ai/ai.controller.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Role } from '@hed-hog/api';
|
|
2
2
|
import { Pagination } from '@hed-hog/api-pagination';
|
|
3
|
-
import { Body, Controller, Delete, Get, Inject, Param, ParseIntPipe, Patch, Post, forwardRef } from '@nestjs/common';
|
|
3
|
+
import { Body, Controller, Delete, Get, Inject, Param, ParseIntPipe, Patch, Post, UploadedFile, UseInterceptors, forwardRef } from '@nestjs/common';
|
|
4
|
+
import { FileInterceptor } from '@nestjs/platform-express';
|
|
4
5
|
import { DeleteDTO } from '../dto/delete.dto';
|
|
5
6
|
import { AiService } from './ai.service';
|
|
6
7
|
import { ChatAgentDTO } from './dto/chat-agent.dto';
|
|
@@ -17,8 +18,9 @@ export class AiController {
|
|
|
17
18
|
) {}
|
|
18
19
|
|
|
19
20
|
@Post('chat')
|
|
20
|
-
|
|
21
|
-
|
|
21
|
+
@UseInterceptors(FileInterceptor('file'))
|
|
22
|
+
async chat(@Body() data: ChatDTO, @UploadedFile() file?: MulterFile) {
|
|
23
|
+
return this.aiService.chat(data, file);
|
|
22
24
|
}
|
|
23
25
|
|
|
24
26
|
@Post('agent')
|
|
@@ -55,7 +57,12 @@ export class AiController {
|
|
|
55
57
|
}
|
|
56
58
|
|
|
57
59
|
@Post('agent/:slug/chat')
|
|
58
|
-
|
|
59
|
-
|
|
60
|
+
@UseInterceptors(FileInterceptor('file'))
|
|
61
|
+
async chatWithAgent(
|
|
62
|
+
@Param('slug') slug: string,
|
|
63
|
+
@Body() data: ChatAgentDTO,
|
|
64
|
+
@UploadedFile() file?: MulterFile,
|
|
65
|
+
) {
|
|
66
|
+
return this.aiService.chatWithAgent(slug, data, file);
|
|
60
67
|
}
|
|
61
68
|
}
|
package/src/ai/ai.module.ts
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import { PrismaModule } from '@hed-hog/api-prisma';
|
|
2
2
|
import { Module, forwardRef } from '@nestjs/common';
|
|
3
|
+
import { FileModule } from '../file/file.module';
|
|
3
4
|
import { SettingModule } from '../setting/setting.module';
|
|
4
5
|
import { AiController } from './ai.controller';
|
|
5
6
|
import { AiService } from './ai.service';
|
|
6
7
|
|
|
7
8
|
@Module({
|
|
8
|
-
imports: [
|
|
9
|
+
imports: [
|
|
10
|
+
forwardRef(() => PrismaModule),
|
|
11
|
+
forwardRef(() => SettingModule),
|
|
12
|
+
forwardRef(() => FileModule),
|
|
13
|
+
],
|
|
9
14
|
controllers: [AiController],
|
|
10
15
|
providers: [AiService],
|
|
11
16
|
exports: [AiService],
|
package/src/ai/ai.service.ts
CHANGED
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
import { Prisma } from '@prisma/client';
|
|
11
11
|
import axios from 'axios';
|
|
12
12
|
import { DeleteDTO } from '../dto/delete.dto';
|
|
13
|
+
import { FileService } from '../file/file.service';
|
|
13
14
|
import { SettingService } from '../setting/setting.service';
|
|
14
15
|
import { ChatAgentDTO } from './dto/chat-agent.dto';
|
|
15
16
|
import { ChatDTO } from './dto/chat.dto';
|
|
@@ -29,6 +30,12 @@ type AiAgentRecord = {
|
|
|
29
30
|
updated_at: Date;
|
|
30
31
|
};
|
|
31
32
|
|
|
33
|
+
type AiAttachment = {
|
|
34
|
+
filename: string;
|
|
35
|
+
mimeType: string;
|
|
36
|
+
buffer: Buffer;
|
|
37
|
+
};
|
|
38
|
+
|
|
32
39
|
@Injectable()
|
|
33
40
|
export class AiService {
|
|
34
41
|
constructor(
|
|
@@ -36,10 +43,13 @@ export class AiService {
|
|
|
36
43
|
private readonly prismaService: PrismaService,
|
|
37
44
|
@Inject(forwardRef(() => SettingService))
|
|
38
45
|
private readonly settingService: SettingService,
|
|
46
|
+
@Inject(forwardRef(() => FileService))
|
|
47
|
+
private readonly fileService: FileService,
|
|
39
48
|
) {}
|
|
40
49
|
|
|
41
|
-
async chat(data: ChatDTO) {
|
|
50
|
+
async chat(data: ChatDTO, file?: MulterFile) {
|
|
42
51
|
const provider = data.provider || 'openai';
|
|
52
|
+
const attachment = await this.resolveAttachment(file, data.file_id);
|
|
43
53
|
|
|
44
54
|
if (provider === 'openai') {
|
|
45
55
|
const model = data.model || 'gpt-4o-mini';
|
|
@@ -47,6 +57,7 @@ export class AiService {
|
|
|
47
57
|
message: data.message,
|
|
48
58
|
model,
|
|
49
59
|
systemPrompt: data.systemPrompt,
|
|
60
|
+
attachment,
|
|
50
61
|
});
|
|
51
62
|
|
|
52
63
|
return {
|
|
@@ -61,6 +72,7 @@ export class AiService {
|
|
|
61
72
|
message: data.message,
|
|
62
73
|
model,
|
|
63
74
|
systemPrompt: data.systemPrompt,
|
|
75
|
+
attachment,
|
|
64
76
|
});
|
|
65
77
|
|
|
66
78
|
return {
|
|
@@ -218,15 +230,16 @@ export class AiService {
|
|
|
218
230
|
};
|
|
219
231
|
}
|
|
220
232
|
|
|
221
|
-
async chatWithAgent(slug: string, data: ChatAgentDTO) {
|
|
233
|
+
async chatWithAgent(slug: string, data: ChatAgentDTO, file?: MulterFile) {
|
|
222
234
|
const agent = await this.findAgentBySlug(slug);
|
|
235
|
+
const attachment = await this.resolveAttachment(file, data.file_id);
|
|
223
236
|
|
|
224
237
|
if (!agent) {
|
|
225
238
|
throw new NotFoundException(`AI agent with slug "${slug}" was not found.`);
|
|
226
239
|
}
|
|
227
240
|
|
|
228
241
|
if (agent.provider === 'openai') {
|
|
229
|
-
if (agent.external_agent_id) {
|
|
242
|
+
if (agent.external_agent_id && !attachment) {
|
|
230
243
|
const content = await this.chatWithOpenAiAssistant(
|
|
231
244
|
agent.external_agent_id,
|
|
232
245
|
data.message,
|
|
@@ -244,6 +257,7 @@ export class AiService {
|
|
|
244
257
|
message: data.message,
|
|
245
258
|
model: agent.model || this.getDefaultModel('openai'),
|
|
246
259
|
systemPrompt: agent.instructions || undefined,
|
|
260
|
+
attachment,
|
|
247
261
|
});
|
|
248
262
|
|
|
249
263
|
return {
|
|
@@ -258,6 +272,7 @@ export class AiService {
|
|
|
258
272
|
message: data.message,
|
|
259
273
|
model: agent.model || this.getDefaultModel('gemini'),
|
|
260
274
|
systemPrompt: agent.instructions || undefined,
|
|
275
|
+
attachment,
|
|
261
276
|
});
|
|
262
277
|
|
|
263
278
|
return {
|
|
@@ -324,10 +339,12 @@ export class AiService {
|
|
|
324
339
|
message,
|
|
325
340
|
model,
|
|
326
341
|
systemPrompt,
|
|
342
|
+
attachment,
|
|
327
343
|
}: {
|
|
328
344
|
message: string;
|
|
329
345
|
model: string;
|
|
330
346
|
systemPrompt?: string;
|
|
347
|
+
attachment?: AiAttachment | null;
|
|
331
348
|
}) {
|
|
332
349
|
const { openai } = await this.getApiKeys();
|
|
333
350
|
|
|
@@ -337,13 +354,14 @@ export class AiService {
|
|
|
337
354
|
);
|
|
338
355
|
}
|
|
339
356
|
|
|
340
|
-
const messages: Array<
|
|
357
|
+
const messages: Array<any> = [];
|
|
341
358
|
|
|
342
359
|
if (systemPrompt) {
|
|
343
360
|
messages.push({ role: 'system', content: systemPrompt });
|
|
344
361
|
}
|
|
345
362
|
|
|
346
|
-
|
|
363
|
+
const userContent = this.buildOpenAiUserContent(message, attachment);
|
|
364
|
+
messages.push({ role: 'user', content: userContent });
|
|
347
365
|
|
|
348
366
|
const response = await axios.post(
|
|
349
367
|
'https://api.openai.com/v1/chat/completions',
|
|
@@ -505,10 +523,12 @@ export class AiService {
|
|
|
505
523
|
message,
|
|
506
524
|
model,
|
|
507
525
|
systemPrompt,
|
|
526
|
+
attachment,
|
|
508
527
|
}: {
|
|
509
528
|
message: string;
|
|
510
529
|
model: string;
|
|
511
530
|
systemPrompt?: string;
|
|
531
|
+
attachment?: AiAttachment | null;
|
|
512
532
|
}) {
|
|
513
533
|
const { gemini } = await this.getApiKeys();
|
|
514
534
|
|
|
@@ -520,8 +540,25 @@ export class AiService {
|
|
|
520
540
|
|
|
521
541
|
const url = `https://generativelanguage.googleapis.com/v1beta/models/${model}:generateContent?key=${gemini}`;
|
|
522
542
|
|
|
543
|
+
const userParts: any[] = [{ text: message }];
|
|
544
|
+
|
|
545
|
+
if (attachment) {
|
|
546
|
+
if (this.isTextMime(attachment.mimeType)) {
|
|
547
|
+
userParts.push({
|
|
548
|
+
text: `\n\n[Attached file: ${attachment.filename}]\n${this.toUtf8Text(attachment.buffer)}`,
|
|
549
|
+
});
|
|
550
|
+
} else {
|
|
551
|
+
userParts.push({
|
|
552
|
+
inline_data: {
|
|
553
|
+
mime_type: attachment.mimeType,
|
|
554
|
+
data: attachment.buffer.toString('base64'),
|
|
555
|
+
},
|
|
556
|
+
});
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
|
|
523
560
|
const payload: any = {
|
|
524
|
-
contents: [{ parts:
|
|
561
|
+
contents: [{ parts: userParts }],
|
|
525
562
|
};
|
|
526
563
|
|
|
527
564
|
if (systemPrompt) {
|
|
@@ -543,4 +580,67 @@ export class AiService {
|
|
|
543
580
|
private async sleep(ms: number) {
|
|
544
581
|
await new Promise((resolve) => setTimeout(resolve, ms));
|
|
545
582
|
}
|
|
583
|
+
|
|
584
|
+
private async resolveAttachment(
|
|
585
|
+
uploadFile?: MulterFile,
|
|
586
|
+
fileId?: number,
|
|
587
|
+
): Promise<AiAttachment | null> {
|
|
588
|
+
if (uploadFile) {
|
|
589
|
+
return {
|
|
590
|
+
filename: uploadFile.originalname,
|
|
591
|
+
mimeType: uploadFile.mimetype,
|
|
592
|
+
buffer: uploadFile.buffer,
|
|
593
|
+
};
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
if (fileId) {
|
|
597
|
+
const { file, buffer } = await this.fileService.getBuffer(fileId);
|
|
598
|
+
return {
|
|
599
|
+
filename: file.filename,
|
|
600
|
+
mimeType: file.file_mimetype?.name || 'application/octet-stream',
|
|
601
|
+
buffer,
|
|
602
|
+
};
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
return null;
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
private buildOpenAiUserContent(
|
|
609
|
+
message: string,
|
|
610
|
+
attachment?: AiAttachment | null,
|
|
611
|
+
) {
|
|
612
|
+
if (!attachment) {
|
|
613
|
+
return message;
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
if (this.isImageMime(attachment.mimeType)) {
|
|
617
|
+
const dataUri = `data:${attachment.mimeType};base64,${attachment.buffer.toString('base64')}`;
|
|
618
|
+
return [
|
|
619
|
+
{ type: 'text', text: message },
|
|
620
|
+
{ type: 'image_url', image_url: { url: dataUri } },
|
|
621
|
+
];
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
const text = this.isTextMime(attachment.mimeType)
|
|
625
|
+
? this.toUtf8Text(attachment.buffer)
|
|
626
|
+
: `[Binary attachment: ${attachment.filename} | ${attachment.mimeType} | ${attachment.buffer.length} bytes]`;
|
|
627
|
+
|
|
628
|
+
return `${message}\n\n[Attached file: ${attachment.filename}]\n${text}`;
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
private isImageMime(mimeType: string) {
|
|
632
|
+
return mimeType.startsWith('image/');
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
private isTextMime(mimeType: string) {
|
|
636
|
+
return (
|
|
637
|
+
mimeType.startsWith('text/') ||
|
|
638
|
+
mimeType === 'application/json' ||
|
|
639
|
+
mimeType === 'application/xml'
|
|
640
|
+
);
|
|
641
|
+
}
|
|
642
|
+
|
|
643
|
+
private toUtf8Text(buffer: Buffer) {
|
|
644
|
+
return buffer.toString('utf8');
|
|
645
|
+
}
|
|
546
646
|
}
|
|
@@ -1,7 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Type } from 'class-transformer';
|
|
2
|
+
import { IsInt, IsNotEmpty, IsOptional, IsString } from 'class-validator';
|
|
2
3
|
|
|
3
4
|
export class ChatAgentDTO {
|
|
4
5
|
@IsString()
|
|
5
6
|
@IsNotEmpty()
|
|
6
7
|
message: string;
|
|
8
|
+
|
|
9
|
+
@IsOptional()
|
|
10
|
+
@Type(() => Number)
|
|
11
|
+
@IsInt()
|
|
12
|
+
file_id?: number;
|
|
7
13
|
}
|
package/src/ai/dto/chat.dto.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Type } from 'class-transformer';
|
|
2
|
+
import { IsIn, IsInt, IsNotEmpty, IsOptional, IsString } from 'class-validator';
|
|
2
3
|
|
|
3
4
|
export class ChatDTO {
|
|
4
5
|
@IsString()
|
|
@@ -17,4 +18,9 @@ export class ChatDTO {
|
|
|
17
18
|
@IsOptional()
|
|
18
19
|
@IsString()
|
|
19
20
|
systemPrompt?: string;
|
|
21
|
+
|
|
22
|
+
@IsOptional()
|
|
23
|
+
@Type(() => Number)
|
|
24
|
+
@IsInt()
|
|
25
|
+
file_id?: number;
|
|
20
26
|
}
|