@celljs/ai-core 3.8.0 → 4.0.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/esm/common/chat/index.d.ts +5 -0
- package/esm/common/chat/index.js +6 -0
- package/esm/common/chat/index.js.map +1 -0
- package/esm/common/chat/message/abstract-message.d.ts +9 -0
- package/esm/common/chat/message/abstract-message.js +11 -0
- package/esm/common/chat/message/abstract-message.js.map +1 -0
- package/esm/common/chat/message/assistant-message.d.ts +9 -0
- package/esm/common/chat/message/assistant-message.js +12 -0
- package/esm/common/chat/message/assistant-message.js.map +1 -0
- package/esm/common/chat/message/function-message.d.ts +8 -0
- package/esm/common/chat/message/function-message.js +11 -0
- package/esm/common/chat/message/function-message.js.map +1 -0
- package/esm/common/chat/message/index.d.ts +7 -0
- package/esm/common/chat/message/index.js +8 -0
- package/esm/common/chat/message/index.js.map +1 -0
- package/esm/common/chat/message/message-protocol.d.ts +87 -0
- package/esm/common/chat/message/message-protocol.js +20 -0
- package/esm/common/chat/message/message-protocol.js.map +1 -0
- package/esm/common/chat/message/system-message.d.ts +8 -0
- package/esm/common/chat/message/system-message.js +11 -0
- package/esm/common/chat/message/system-message.js.map +1 -0
- package/esm/common/chat/message/tool-response-message.d.ts +31 -0
- package/esm/common/chat/message/tool-response-message.js +19 -0
- package/esm/common/chat/message/tool-response-message.js.map +1 -0
- package/esm/common/chat/message/user-message.d.ts +8 -0
- package/esm/common/chat/message/user-message.js +11 -0
- package/esm/common/chat/message/user-message.js.map +1 -0
- package/esm/common/chat/metadata/chat-generation-metadata.d.ts +27 -0
- package/esm/common/chat/metadata/chat-generation-metadata.js +16 -0
- package/esm/common/chat/metadata/chat-generation-metadata.js.map +1 -0
- package/esm/common/chat/metadata/index.d.ts +2 -0
- package/esm/common/chat/metadata/index.js +3 -0
- package/esm/common/chat/metadata/index.js.map +1 -0
- package/esm/common/chat/metadata/metadata-protocol.d.ts +127 -0
- package/esm/common/chat/metadata/metadata-protocol.js +92 -0
- package/esm/common/chat/metadata/metadata-protocol.js.map +1 -0
- package/esm/common/chat/model/chat-protocol.d.ts +26 -0
- package/esm/common/chat/model/chat-protocol.js +35 -0
- package/esm/common/chat/model/chat-protocol.js.map +1 -0
- package/esm/common/chat/model/index.d.ts +2 -0
- package/esm/common/chat/model/index.js +3 -0
- package/esm/common/chat/model/index.js.map +1 -0
- package/esm/common/chat/model/proxy-chat-model.d.ts +11 -0
- package/esm/common/chat/model/proxy-chat-model.js +67 -0
- package/esm/common/chat/model/proxy-chat-model.js.map +1 -0
- package/esm/common/chat/prompt/el-prompt-template.d.ts +8 -0
- package/esm/common/chat/prompt/el-prompt-template.js +47 -0
- package/esm/common/chat/prompt/el-prompt-template.js.map +1 -0
- package/esm/common/chat/prompt/index.d.ts +4 -0
- package/esm/common/chat/prompt/index.js +5 -0
- package/esm/common/chat/prompt/index.js.map +1 -0
- package/esm/common/chat/prompt/prompt-protocol.d.ts +49 -0
- package/esm/common/chat/prompt/prompt-protocol.js +2 -0
- package/esm/common/chat/prompt/prompt-protocol.js.map +1 -0
- package/esm/common/chat/prompt/prompt-template.d.ts +6 -0
- package/esm/common/chat/prompt/prompt-template.js +44 -0
- package/esm/common/chat/prompt/prompt-template.js.map +1 -0
- package/esm/common/chat/prompt/prompt.d.ts +13 -0
- package/esm/common/chat/prompt/prompt.js +52 -0
- package/esm/common/chat/prompt/prompt.js.map +1 -0
- package/esm/common/chat/tool/index.d.ts +2 -0
- package/esm/common/chat/tool/index.js +3 -0
- package/esm/common/chat/tool/index.js.map +1 -0
- package/esm/common/chat/tool/tool-handler.d.ts +11 -0
- package/esm/common/chat/tool/tool-handler.js +59 -0
- package/esm/common/chat/tool/tool-handler.js.map +1 -0
- package/esm/common/chat/tool/tool-protocol.d.ts +7 -0
- package/esm/common/chat/tool/tool-protocol.js +2 -0
- package/esm/common/chat/tool/tool-protocol.js.map +1 -0
- package/esm/common/embedding/embedding-protocol.d.ts +120 -0
- package/esm/common/embedding/embedding-protocol.js +56 -0
- package/esm/common/embedding/embedding-protocol.js.map +1 -0
- package/esm/common/embedding/index.d.ts +1 -0
- package/esm/common/embedding/index.js +2 -0
- package/esm/common/embedding/index.js.map +1 -0
- package/esm/common/error/error.d.ts +7 -0
- package/esm/common/error/error.js +12 -0
- package/esm/common/error/error.js.map +1 -0
- package/esm/common/error/index.d.ts +1 -0
- package/esm/common/error/index.js +2 -0
- package/esm/common/error/index.js.map +1 -0
- package/esm/common/index.d.ts +6 -0
- package/esm/common/index.js +7 -0
- package/esm/common/index.js.map +1 -0
- package/esm/common/model/function/function-callback-register.d.ts +8 -0
- package/esm/common/model/function/function-callback-register.js +45 -0
- package/esm/common/model/function/function-callback-register.js.map +1 -0
- package/esm/common/model/function/function-protocol.d.ts +75 -0
- package/esm/common/model/function/function-protocol.js +49 -0
- package/esm/common/model/function/function-protocol.js.map +1 -0
- package/esm/common/model/function/index.d.ts +2 -0
- package/esm/common/model/function/index.js +3 -0
- package/esm/common/model/function/index.js.map +1 -0
- package/esm/common/model/index.d.ts +2 -0
- package/esm/common/model/index.js +3 -0
- package/esm/common/model/index.js.map +1 -0
- package/esm/common/model/model-protocol.d.ts +164 -0
- package/esm/common/model/model-protocol.js +12 -0
- package/esm/common/model/model-protocol.js.map +1 -0
- package/esm/common/module.d.ts +3 -0
- package/esm/common/module.js +4 -0
- package/esm/common/module.js.map +1 -0
- package/esm/common/sse/index.d.ts +3 -0
- package/esm/common/sse/index.js +4 -0
- package/esm/common/sse/index.js.map +1 -0
- package/esm/common/sse/line-decoder.d.ts +14 -0
- package/esm/common/sse/line-decoder.js +51 -0
- package/esm/common/sse/line-decoder.js.map +1 -0
- package/esm/common/sse/sse-decoder.d.ts +26 -0
- package/esm/common/sse/sse-decoder.js +70 -0
- package/esm/common/sse/sse-decoder.js.map +1 -0
- package/esm/common/sse/sse-protocol.d.ts +22 -0
- package/esm/common/sse/sse-protocol.js +2 -0
- package/esm/common/sse/sse-protocol.js.map +1 -0
- package/esm/common/utils/index.d.ts +3 -0
- package/esm/common/utils/index.js +4 -0
- package/esm/common/utils/index.js.map +1 -0
- package/esm/common/utils/prompt-util.d.ts +4 -0
- package/esm/common/utils/prompt-util.js +7 -0
- package/esm/common/utils/prompt-util.js.map +1 -0
- package/esm/common/utils/sse-util.d.ts +10 -0
- package/esm/common/utils/sse-util.js +109 -0
- package/esm/common/utils/sse-util.js.map +1 -0
- package/esm/common/utils/usage-util.d.ts +16 -0
- package/esm/common/utils/usage-util.js +59 -0
- package/esm/common/utils/usage-util.js.map +1 -0
- package/esm/package.json +3 -0
- package/package.json +84 -5
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Model, ModelResponse, ModelResult, StreamingModel } from '../../model/model-protocol.js';
|
|
2
|
+
import { AssistantMessage } from '../message/index.js';
|
|
3
|
+
import { ChatGenerationMetadata, ChatResponseMetadata } from '../metadata/index.js';
|
|
4
|
+
import { Prompt } from '../prompt/prompt-protocol.js';
|
|
5
|
+
export declare const StreamingChatModel: unique symbol;
|
|
6
|
+
export declare const ChatModel: unique symbol;
|
|
7
|
+
/**
|
|
8
|
+
* Represents a response returned by the AI.
|
|
9
|
+
*/
|
|
10
|
+
export interface Generation extends ModelResult<AssistantMessage> {
|
|
11
|
+
metadata: ChatGenerationMetadata;
|
|
12
|
+
}
|
|
13
|
+
export interface ChatResponse extends ModelResponse<Generation> {
|
|
14
|
+
metadata: ChatResponseMetadata;
|
|
15
|
+
}
|
|
16
|
+
export declare namespace Generation {
|
|
17
|
+
function from(output: AssistantMessage, metadata?: ChatGenerationMetadata): Generation;
|
|
18
|
+
}
|
|
19
|
+
export declare namespace ChatResponse {
|
|
20
|
+
function from(results: Generation[], metadata?: ChatResponseMetadata): ChatResponse;
|
|
21
|
+
function isToolCall(chatResponse: ChatResponse, toolCallFinishReasons: Set<string>): boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface StreamingChatModel extends StreamingModel<Prompt, ChatResponse> {
|
|
24
|
+
}
|
|
25
|
+
export interface ChatModel extends Model<Prompt, ChatResponse>, StreamingChatModel {
|
|
26
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { ChatGenerationMetadata, ChatResponseMetadata } from '../metadata/index.js';
|
|
2
|
+
export const StreamingChatModel = Symbol('StreamingChatModel');
|
|
3
|
+
export const ChatModel = Symbol('ChatModel');
|
|
4
|
+
export var Generation;
|
|
5
|
+
(function (Generation) {
|
|
6
|
+
function from(output, metadata = ChatGenerationMetadata.from()) {
|
|
7
|
+
return { output, metadata };
|
|
8
|
+
}
|
|
9
|
+
Generation.from = from;
|
|
10
|
+
})(Generation || (Generation = {}));
|
|
11
|
+
export var ChatResponse;
|
|
12
|
+
(function (ChatResponse) {
|
|
13
|
+
function from(results, metadata = ChatResponseMetadata.createEmpty()) {
|
|
14
|
+
return { result: results[0], results, metadata };
|
|
15
|
+
}
|
|
16
|
+
ChatResponse.from = from;
|
|
17
|
+
function isToolCall(chatResponse, toolCallFinishReasons) {
|
|
18
|
+
if (!chatResponse) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
const generations = chatResponse.results;
|
|
22
|
+
if (!generations || generations.length === 0) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
return generations.some(g => doIsToolCall(g, toolCallFinishReasons));
|
|
26
|
+
}
|
|
27
|
+
ChatResponse.isToolCall = isToolCall;
|
|
28
|
+
function doIsToolCall(generation, toolCallFinishReasons) {
|
|
29
|
+
var _a;
|
|
30
|
+
var _b;
|
|
31
|
+
const finishReason = (_b = generation.metadata.finishReason) !== null && _b !== void 0 ? _b : '';
|
|
32
|
+
return ((_a = generation.output.toolCalls) === null || _a === void 0 ? void 0 : _a.length) > 0 && toolCallFinishReasons.has(finishReason.toLowerCase());
|
|
33
|
+
}
|
|
34
|
+
})(ChatResponse || (ChatResponse = {}));
|
|
35
|
+
//# sourceMappingURL=chat-protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-protocol.js","sourceRoot":"","sources":["../../../../src/common/chat/model/chat-protocol.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAG3E,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAC/D,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAa7C,MAAM,KAAW,UAAU,CAI1B;AAJD,WAAiB,UAAU;IACvB,SAAgB,IAAI,CAAC,MAAwB,EAAE,QAAQ,GAAG,sBAAsB,CAAC,IAAI,EAAE;QACnF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAChC,CAAC;IAFe,WAAA,IAAI,OAEnB,CAAA;AACL,CAAC,EAJgB,UAAU,KAAV,UAAU,QAI1B;AAED,MAAM,KAAW,YAAY,CAsB5B;AAtBD,WAAiB,YAAY;IACzB,SAAgB,IAAI,CAAC,OAAqB,EAAE,QAAQ,GAAG,oBAAoB,CAAC,WAAW,EAAE;QACrF,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IACrD,CAAC;IAFe,aAAA,IAAI,OAEnB,CAAA;IAED,SAAgB,UAAU,CAAC,YAA0B,EAAE,qBAAkC;QACrF,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC;QACzC,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3C,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC;IACzE,CAAC;IAXe,aAAA,UAAU,aAWzB,CAAA;IAED,SAAS,YAAY,CAAC,UAAsB,EAAE,qBAAkC;;;QAC5E,MAAM,YAAY,SAAG,UAAU,CAAC,QAAQ,CAAC,YAAY,mCAAI,EAAE,CAAC;QAC5D,OAAO,CAAA,MAAA,UAAU,CAAC,MAAM,CAAC,SAAS,0CAAE,MAAM,IAAG,CAAC,IAAI,qBAAqB,CAAC,GAAG,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5G,CAAC;AACL,CAAC,EAtBgB,YAAY,KAAZ,YAAY,QAsB5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/common/chat/model/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ChatModel, ChatResponse } from './chat-protocol.js';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { Prompt } from '../prompt/index.js';
|
|
4
|
+
export declare class ProxyChatModel implements ChatModel {
|
|
5
|
+
protected readonly chatModels: ChatModel[];
|
|
6
|
+
protected readonly chatModelMap: Map<string, ChatModel>;
|
|
7
|
+
protected init(): void;
|
|
8
|
+
protected resolveChatModelAndPrompt(prompt: Prompt): [ChatModel, Prompt];
|
|
9
|
+
call(prompt: Prompt): Promise<ChatResponse>;
|
|
10
|
+
stream(prompt: Prompt): Promise<Observable<ChatResponse>>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { Autowired, Component, IllegalArgumentError, PostConstruct } from '@celljs/core';
|
|
11
|
+
import { ChatModel } from './chat-protocol.js';
|
|
12
|
+
let ProxyChatModel = class ProxyChatModel {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.chatModelMap = new Map();
|
|
15
|
+
}
|
|
16
|
+
init() {
|
|
17
|
+
for (const chatModel of this.chatModels) {
|
|
18
|
+
if ('provider' in chatModel) {
|
|
19
|
+
this.chatModelMap.set(chatModel.provider, chatModel);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
const provider = chatModel.constructor.name.split('ChatModel')[0].toLowerCase();
|
|
23
|
+
this.chatModelMap.set(provider, chatModel);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
resolveChatModelAndPrompt(prompt) {
|
|
28
|
+
const model = prompt.options.model;
|
|
29
|
+
if (!model) {
|
|
30
|
+
throw new IllegalArgumentError('Model not specified in prompt options.');
|
|
31
|
+
}
|
|
32
|
+
if (!model.includes(':')) {
|
|
33
|
+
throw new IllegalArgumentError('Invalid model name format. Expected "<provider>:<model-name>".');
|
|
34
|
+
}
|
|
35
|
+
const [provider, ...modelName] = model.split(':');
|
|
36
|
+
const chatModel = this.chatModelMap.get(provider);
|
|
37
|
+
if (!chatModel) {
|
|
38
|
+
throw new IllegalArgumentError(`Chat model provider "${provider}" not found.`);
|
|
39
|
+
}
|
|
40
|
+
const newPrompt = prompt.copy();
|
|
41
|
+
newPrompt.options.model = modelName.join(':');
|
|
42
|
+
return [chatModel, newPrompt];
|
|
43
|
+
}
|
|
44
|
+
call(prompt) {
|
|
45
|
+
const [chatModel, newPrompt] = this.resolveChatModelAndPrompt(prompt);
|
|
46
|
+
return chatModel.call(newPrompt);
|
|
47
|
+
}
|
|
48
|
+
stream(prompt) {
|
|
49
|
+
const [chatModel, newPrompt] = this.resolveChatModelAndPrompt(prompt);
|
|
50
|
+
return chatModel.stream(newPrompt);
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
__decorate([
|
|
54
|
+
Autowired(ChatModel),
|
|
55
|
+
__metadata("design:type", Array)
|
|
56
|
+
], ProxyChatModel.prototype, "chatModels", void 0);
|
|
57
|
+
__decorate([
|
|
58
|
+
PostConstruct(),
|
|
59
|
+
__metadata("design:type", Function),
|
|
60
|
+
__metadata("design:paramtypes", []),
|
|
61
|
+
__metadata("design:returntype", void 0)
|
|
62
|
+
], ProxyChatModel.prototype, "init", null);
|
|
63
|
+
ProxyChatModel = __decorate([
|
|
64
|
+
Component(ProxyChatModel)
|
|
65
|
+
], ProxyChatModel);
|
|
66
|
+
export { ProxyChatModel };
|
|
67
|
+
//# sourceMappingURL=proxy-chat-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy-chat-model.js","sourceRoot":"","sources":["../../../../src/common/chat/model/proxy-chat-model.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACzF,OAAO,EAAE,SAAS,EAAgB,MAAM,iBAAiB,CAAC;AAKnD,IAAM,cAAc,GAApB,MAAM,cAAc;IAApB;QAKgB,iBAAY,GAA2B,IAAI,GAAG,EAAE,CAAC;IA0CxE,CAAC;IAvCa,IAAI;QACV,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACtC,IAAI,UAAU,IAAI,SAAS,EAAE,CAAC;gBAC1B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,QAAkB,EAAE,SAAS,CAAC,CAAC;YACnE,CAAC;iBAAM,CAAC;gBACJ,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;gBAChF,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC/C,CAAC;QACL,CAAC;IACL,CAAC;IAES,yBAAyB,CAAC,MAAc;QAC9C,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;QACnC,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,MAAM,IAAI,oBAAoB,CAAC,wCAAwC,CAAC,CAAC;QAC7E,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,oBAAoB,CAAC,gEAAgE,CAAC,CAAC;QACrG,CAAC;QACD,MAAM,CAAC,QAAQ,EAAE,GAAG,SAAS,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,MAAM,IAAI,oBAAoB,CAAC,wBAAwB,QAAQ,cAAc,CAAC,CAAC;QACnF,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAChC,SAAS,CAAC,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9C,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,CAAC,MAAc;QACf,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;QACtE,OAAO,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,MAAc;QACjB,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;QACtE,OAAO,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;CAEJ,CAAA;AA5CsB;IADlB,SAAS,CAAC,SAAS,CAAC;;kDACsB;AAKjC;IADT,aAAa,EAAE;;;;0CAUf;AAjBQ,cAAc;IAD1B,SAAS,CAAC,cAAc,CAAC;GACb,cAAc,CA+C1B"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ExpressionHandler } from '@celljs/core';
|
|
2
|
+
import { Prompt, PromptTemplate, PromptTemplateContext } from './prompt-protocol.js';
|
|
3
|
+
import { Message } from '../message/index.js';
|
|
4
|
+
export declare class ELPromptTemplate implements PromptTemplate {
|
|
5
|
+
protected readonly expressionHandler: ExpressionHandler;
|
|
6
|
+
render(template: string, ctx?: PromptTemplateContext): Promise<string>;
|
|
7
|
+
create(template: string | Message[], ctx?: PromptTemplateContext): Promise<Prompt>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { Autowired, Component, ExpressionHandler, IllegalArgumentError } from '@celljs/core';
|
|
11
|
+
import { PromptImpl } from './prompt.js';
|
|
12
|
+
import { Message, MessageType, SystemMessage } from '../message/index.js';
|
|
13
|
+
let ELPromptTemplate = class ELPromptTemplate {
|
|
14
|
+
async render(template, ctx) {
|
|
15
|
+
if (ctx === null || ctx === void 0 ? void 0 : ctx.variables) {
|
|
16
|
+
return this.expressionHandler.handle(template, ctx.variables, { ignoreSpecialChar: true, bracketBegin: '{', bracketEnd: '}', ignoreContextExpression: true });
|
|
17
|
+
}
|
|
18
|
+
return template;
|
|
19
|
+
}
|
|
20
|
+
async create(template, ctx) {
|
|
21
|
+
if (Array.isArray(template)
|
|
22
|
+
&& template.some(message => Message.isMessage(message))) {
|
|
23
|
+
for (const message of template) {
|
|
24
|
+
message.content = await this.render(message.content, ctx);
|
|
25
|
+
}
|
|
26
|
+
return new PromptImpl(template, ctx === null || ctx === void 0 ? void 0 : ctx.chatOptions);
|
|
27
|
+
}
|
|
28
|
+
else if (typeof template === 'string') {
|
|
29
|
+
if (!(ctx === null || ctx === void 0 ? void 0 : ctx.messageType) || (ctx === null || ctx === void 0 ? void 0 : ctx.messageType) === MessageType.USER) {
|
|
30
|
+
return new PromptImpl(await this.render(template, ctx), ctx === null || ctx === void 0 ? void 0 : ctx.chatOptions);
|
|
31
|
+
}
|
|
32
|
+
else if ((ctx === null || ctx === void 0 ? void 0 : ctx.messageType) === MessageType.SYSTEM) {
|
|
33
|
+
return new PromptImpl(new SystemMessage(await this.render(template, ctx)), ctx === null || ctx === void 0 ? void 0 : ctx.chatOptions);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
throw new IllegalArgumentError(`Invalid message type: ${ctx === null || ctx === void 0 ? void 0 : ctx.messageType}`);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
__decorate([
|
|
40
|
+
Autowired(ExpressionHandler),
|
|
41
|
+
__metadata("design:type", Object)
|
|
42
|
+
], ELPromptTemplate.prototype, "expressionHandler", void 0);
|
|
43
|
+
ELPromptTemplate = __decorate([
|
|
44
|
+
Component(ELPromptTemplate)
|
|
45
|
+
], ELPromptTemplate);
|
|
46
|
+
export { ELPromptTemplate };
|
|
47
|
+
//# sourceMappingURL=el-prompt-template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"el-prompt-template.js","sourceRoot":"","sources":["../../../../src/common/chat/prompt/el-prompt-template.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAE7F,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG1D,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAKzB,KAAK,CAAC,MAAM,CAAC,QAAgB,EAAE,GAA2B;QACtD,IAAI,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,SAAS,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,uBAAuB,EAAE,IAAI,EAAE,CAAC,CAAC;QAClK,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,QAA4B,EAAE,GAA2B;QAClE,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;eACpB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EACzD,CAAC;YACC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC7B,OAAO,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC9D,CAAC;YACD,OAAO,IAAI,UAAU,CAAC,QAAQ,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,WAAW,CAAC,CAAC;QACtD,CAAC;aAAM,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACtC,IAAI,EAAC,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,WAAW,CAAA,IAAI,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,WAAW,MAAK,WAAW,CAAC,IAAI,EAAE,CAAC;gBAC7D,OAAO,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,WAAW,CAAC,CAAC;YAC9E,CAAC;iBAAM,IAAI,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,WAAW,MAAK,WAAW,CAAC,MAAM,EAAE,CAAC;gBACjD,OAAO,IAAI,UAAU,CAAC,IAAI,aAAa,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,WAAW,CAAC,CAAC;YACjG,CAAC;QACL,CAAC;QACD,MAAM,IAAI,oBAAoB,CAAC,yBAAyB,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,WAAW,EAAE,CAAC,CAAC;IAChF,CAAC;CACJ,CAAA;AAzBsB;IADlB,SAAS,CAAC,iBAAiB,CAAC;;2DAC2B;AAH/C,gBAAgB;IAD5B,SAAS,CAAC,gBAAgB,CAAC;GACf,gBAAgB,CA4B5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/common/chat/prompt/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { ModelOptions, ModelRequest } from '../../model/model-protocol.js';
|
|
2
|
+
import { Message, MessageType } from '../message/message-protocol.js';
|
|
3
|
+
export declare const PromptTemplate: unique symbol;
|
|
4
|
+
/**
|
|
5
|
+
* The ChatOptions represent the common options, portable across different chat models.
|
|
6
|
+
*/
|
|
7
|
+
export interface ChatOptions extends ModelOptions {
|
|
8
|
+
model?: string;
|
|
9
|
+
frequencyPenalty?: number;
|
|
10
|
+
maxTokens?: number;
|
|
11
|
+
presencePenalty?: number;
|
|
12
|
+
stopSequences?: string[];
|
|
13
|
+
temperature?: number;
|
|
14
|
+
topK?: number;
|
|
15
|
+
topP?: number;
|
|
16
|
+
prediction?: Prediction | null;
|
|
17
|
+
extra?: Record<string, unknown>;
|
|
18
|
+
}
|
|
19
|
+
export interface Prediction {
|
|
20
|
+
/**
|
|
21
|
+
* The type of the predicted content you want to provide. This type is currently
|
|
22
|
+
* always `content`.
|
|
23
|
+
*/
|
|
24
|
+
type: 'content';
|
|
25
|
+
/**
|
|
26
|
+
* The content that should be matched when generating a model response. If
|
|
27
|
+
* generated tokens would match this content, the entire model response can be
|
|
28
|
+
* returned much more quickly.
|
|
29
|
+
*/
|
|
30
|
+
content: PredictionContent[] | string;
|
|
31
|
+
}
|
|
32
|
+
export interface PredictionContent {
|
|
33
|
+
text: string;
|
|
34
|
+
type: 'text';
|
|
35
|
+
}
|
|
36
|
+
export interface Prompt extends ModelRequest<Message[]> {
|
|
37
|
+
readonly contents: string;
|
|
38
|
+
readonly options: ChatOptions;
|
|
39
|
+
copy(): Prompt;
|
|
40
|
+
}
|
|
41
|
+
export interface PromptTemplateContext {
|
|
42
|
+
variables?: Record<string, any>;
|
|
43
|
+
chatOptions?: ChatOptions;
|
|
44
|
+
messageType?: MessageType;
|
|
45
|
+
}
|
|
46
|
+
export interface PromptTemplate {
|
|
47
|
+
render(template: string, ctx?: PromptTemplateContext): Promise<string>;
|
|
48
|
+
create(template: string | Message[], ctx?: PromptTemplateContext): Promise<Prompt>;
|
|
49
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-protocol.js","sourceRoot":"","sources":["../../../../src/common/chat/prompt/prompt-protocol.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Prompt, PromptTemplate, PromptTemplateContext } from './prompt-protocol.js';
|
|
2
|
+
import { Message } from '../message/index.js';
|
|
3
|
+
export declare class SamplePromptTemplate implements PromptTemplate {
|
|
4
|
+
render(template: string, ctx?: PromptTemplateContext): Promise<string>;
|
|
5
|
+
create(template: string | Message[], ctx?: PromptTemplateContext): Promise<Prompt>;
|
|
6
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { Component, IllegalArgumentError } from '@celljs/core';
|
|
8
|
+
import { PromptTemplate } from './prompt-protocol.js';
|
|
9
|
+
import { PromptImpl } from './prompt.js';
|
|
10
|
+
import { Message, MessageType, SystemMessage } from '../message/index.js';
|
|
11
|
+
let SamplePromptTemplate = class SamplePromptTemplate {
|
|
12
|
+
async render(template, ctx) {
|
|
13
|
+
let newTemplate = template;
|
|
14
|
+
if (ctx === null || ctx === void 0 ? void 0 : ctx.variables) {
|
|
15
|
+
for (const key of Object.keys(ctx.variables)) {
|
|
16
|
+
newTemplate = newTemplate.replace(new RegExp(`{${key}}`, 'g'), ctx.variables[key]);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return newTemplate;
|
|
20
|
+
}
|
|
21
|
+
async create(template, ctx) {
|
|
22
|
+
if (Array.isArray(template)
|
|
23
|
+
&& template.some(message => Message.isMessage(message))) {
|
|
24
|
+
for (const message of template) {
|
|
25
|
+
message.content = await this.render(message.content, ctx);
|
|
26
|
+
}
|
|
27
|
+
return new PromptImpl(template, ctx === null || ctx === void 0 ? void 0 : ctx.chatOptions);
|
|
28
|
+
}
|
|
29
|
+
else if (typeof template === 'string') {
|
|
30
|
+
if (!(ctx === null || ctx === void 0 ? void 0 : ctx.messageType) || (ctx === null || ctx === void 0 ? void 0 : ctx.messageType) === MessageType.USER) {
|
|
31
|
+
return new PromptImpl(await this.render(template, ctx), ctx === null || ctx === void 0 ? void 0 : ctx.chatOptions);
|
|
32
|
+
}
|
|
33
|
+
else if ((ctx === null || ctx === void 0 ? void 0 : ctx.messageType) === MessageType.SYSTEM) {
|
|
34
|
+
return new PromptImpl(new SystemMessage(await this.render(template, ctx)), ctx === null || ctx === void 0 ? void 0 : ctx.chatOptions);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
throw new IllegalArgumentError(`Invalid message type: ${ctx === null || ctx === void 0 ? void 0 : ctx.messageType}`);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
SamplePromptTemplate = __decorate([
|
|
41
|
+
Component(PromptTemplate)
|
|
42
|
+
], SamplePromptTemplate);
|
|
43
|
+
export { SamplePromptTemplate };
|
|
44
|
+
//# sourceMappingURL=prompt-template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-template.js","sourceRoot":"","sources":["../../../../src/common/chat/prompt/prompt-template.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAU,cAAc,EAAyB,MAAM,mBAAmB,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG1D,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAE7B,KAAK,CAAC,MAAM,CAAC,QAAgB,EAAE,GAA2B;QACtD,IAAI,WAAW,GAAG,QAAQ,CAAC;QAC3B,IAAI,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,SAAS,EAAE,CAAC;YACjB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC3C,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;YACvF,CAAC;QACL,CAAC;QACD,OAAO,WAAW,CAAC;IACvB,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,QAA4B,EAAE,GAA2B;QAClE,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;eACpB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EACzD,CAAC;YACC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC7B,OAAO,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC9D,CAAC;YACD,OAAO,IAAI,UAAU,CAAC,QAAQ,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,WAAW,CAAC,CAAC;QACtD,CAAC;aAAM,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACtC,IAAI,EAAC,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,WAAW,CAAA,IAAI,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,WAAW,MAAK,WAAW,CAAC,IAAI,EAAE,CAAC;gBAC7D,OAAO,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,WAAW,CAAC,CAAC;YAC9E,CAAC;iBAAM,IAAI,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,WAAW,MAAK,WAAW,CAAC,MAAM,EAAE,CAAC;gBACjD,OAAO,IAAI,UAAU,CAAC,IAAI,aAAa,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,WAAW,CAAC,CAAC;YACjG,CAAC;QACL,CAAC;QACD,MAAM,IAAI,oBAAoB,CAAC,yBAAyB,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,WAAW,EAAE,CAAC,CAAC;IAChF,CAAC;CACJ,CAAA;AA5BY,oBAAoB;IADhC,SAAS,CAAC,cAAc,CAAC;GACb,oBAAoB,CA4BhC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ModelOptions } from '../../model/model-protocol.js';
|
|
2
|
+
import { Message } from '../message/index.js';
|
|
3
|
+
import { ChatOptions, Prompt } from './prompt-protocol.js';
|
|
4
|
+
export declare class PromptImpl implements Prompt {
|
|
5
|
+
protected messages: Message[];
|
|
6
|
+
protected modelOptions: ChatOptions;
|
|
7
|
+
constructor(messages: Message[] | Message | string, modelOptions?: ChatOptions);
|
|
8
|
+
private instructionsCopy;
|
|
9
|
+
copy(): Prompt;
|
|
10
|
+
get contents(): string;
|
|
11
|
+
get instructions(): Message[];
|
|
12
|
+
get options(): ModelOptions;
|
|
13
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { IllegalArgumentError } from '@celljs/core';
|
|
2
|
+
import { AssistantMessage, FunctionMessage, MessageType, SystemMessage, UserMessage } from '../message/index.js';
|
|
3
|
+
export class PromptImpl {
|
|
4
|
+
constructor(messages, modelOptions = {}) {
|
|
5
|
+
this.modelOptions = modelOptions;
|
|
6
|
+
if (Array.isArray(messages)) {
|
|
7
|
+
this.messages = messages;
|
|
8
|
+
}
|
|
9
|
+
else if (typeof messages === 'string') {
|
|
10
|
+
this.messages = [new UserMessage(messages)];
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
this.messages = [messages];
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
instructionsCopy() {
|
|
17
|
+
return this.messages.map(message => {
|
|
18
|
+
if (message.messageType === MessageType.USER) {
|
|
19
|
+
return new UserMessage(message.content);
|
|
20
|
+
}
|
|
21
|
+
else if (message.messageType === MessageType.ASSISTANT) {
|
|
22
|
+
return new AssistantMessage(message.content);
|
|
23
|
+
}
|
|
24
|
+
else if (message.messageType === MessageType.SYSTEM) {
|
|
25
|
+
return new SystemMessage(message.content);
|
|
26
|
+
}
|
|
27
|
+
else if (message.messageType === MessageType.FUNCTION) {
|
|
28
|
+
return new FunctionMessage(message.content);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
throw new IllegalArgumentError(`Unsupported message type: ${message.messageType}`);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
copy() {
|
|
36
|
+
return new PromptImpl(this.instructionsCopy(), this.modelOptions);
|
|
37
|
+
}
|
|
38
|
+
get contents() {
|
|
39
|
+
let contents = '';
|
|
40
|
+
for (const message of this.messages) {
|
|
41
|
+
contents += message.content;
|
|
42
|
+
}
|
|
43
|
+
return contents;
|
|
44
|
+
}
|
|
45
|
+
get instructions() {
|
|
46
|
+
return this.messages;
|
|
47
|
+
}
|
|
48
|
+
get options() {
|
|
49
|
+
return this.modelOptions;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../../../src/common/chat/prompt/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAW,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGjH,MAAM,OAAO,UAAU;IAKnB,YAAY,QAAsC,EAAE,YAAY,GAAgB,EAAE;QAC9E,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC7B,CAAC;aAAM,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACtC,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC;IACL,CAAC;IAEO,gBAAgB;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YAC/B,IAAI,OAAO,CAAC,WAAW,KAAK,WAAW,CAAC,IAAI,EAAE,CAAC;gBAC3C,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC5C,CAAC;iBAAM,IAAI,OAAO,CAAC,WAAW,KAAK,WAAW,CAAC,SAAS,EAAE,CAAC;gBACvD,OAAO,IAAI,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACjD,CAAC;iBAAM,IAAI,OAAO,CAAC,WAAW,KAAK,WAAW,CAAC,MAAM,EAAE,CAAC;gBACpD,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC9C,CAAC;iBAAM,IAAI,OAAO,CAAC,WAAW,KAAK,WAAW,CAAC,QAAQ,EAAE,CAAC;gBACtD,OAAO,IAAI,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAChD,CAAC;iBAAM,CAAC;gBACJ,MAAM,IAAI,oBAAoB,CAAC,6BAA6B,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;YACvF,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IACD,IAAI;QACA,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,QAAQ;QACR,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC;QAChC,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/common/chat/tool/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { FunctionCallbackRegister, ToolContext } from '../../model/index.js';
|
|
2
|
+
import { ChatResponse } from '../model/index.js';
|
|
3
|
+
import { Prompt } from '../prompt/index.js';
|
|
4
|
+
import { ToolHandler } from './tool-protocol.js';
|
|
5
|
+
import { AssistantMessage, Message, ToolResponseMessage } from '../message/index.js';
|
|
6
|
+
export declare class ToolHanderImpl implements ToolHandler {
|
|
7
|
+
protected readonly functionCallbackRegister: FunctionCallbackRegister;
|
|
8
|
+
protected executeFunctions(assistantMessage: AssistantMessage, toolContext: ToolContext): Promise<ToolResponseMessage>;
|
|
9
|
+
protected buildToolCallConversation(previousMessages: Message[], assistantMessage: AssistantMessage, toolResponseMessage: ToolResponseMessage): Message[];
|
|
10
|
+
handle(prompt: Prompt, chatResponse: ChatResponse): Promise<Message[]>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { Autowired, Component, IllegalStateError } from '@celljs/core';
|
|
11
|
+
import { FunctionCallbackRegister, FunctionCallingOptions, ToolContext } from '../../model/index.js';
|
|
12
|
+
import { ToolHandler } from './tool-protocol.js';
|
|
13
|
+
import { ToolResponseMessage } from '../message/index.js';
|
|
14
|
+
let ToolHanderImpl = class ToolHanderImpl {
|
|
15
|
+
async executeFunctions(assistantMessage, toolContext) {
|
|
16
|
+
const toolResponses = [];
|
|
17
|
+
for (const toolCall of assistantMessage.toolCalls) {
|
|
18
|
+
const functionResponse = await this.functionCallbackRegister.call(toolCall.name, toolCall.arguments, toolContext);
|
|
19
|
+
toolResponses.push({
|
|
20
|
+
id: toolCall.id,
|
|
21
|
+
name: toolCall.name,
|
|
22
|
+
responseData: functionResponse
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
return new ToolResponseMessage(toolResponses);
|
|
26
|
+
}
|
|
27
|
+
buildToolCallConversation(previousMessages, assistantMessage, toolResponseMessage) {
|
|
28
|
+
const messages = [...previousMessages];
|
|
29
|
+
messages.push(assistantMessage);
|
|
30
|
+
messages.push(toolResponseMessage);
|
|
31
|
+
return messages;
|
|
32
|
+
}
|
|
33
|
+
async handle(prompt, chatResponse) {
|
|
34
|
+
const toolCallGeneration = chatResponse.results.find(result => { var _a; return ((_a = result.output.toolCalls) === null || _a === void 0 ? void 0 : _a.length) > 0; });
|
|
35
|
+
if (!toolCallGeneration) {
|
|
36
|
+
throw new IllegalStateError('No tool call generation found in the response!');
|
|
37
|
+
}
|
|
38
|
+
const assistantMessage = toolCallGeneration.output;
|
|
39
|
+
let toolContext = {};
|
|
40
|
+
const options = prompt.options;
|
|
41
|
+
if (FunctionCallingOptions.is(options) && options.toolContext) {
|
|
42
|
+
toolContext = { ...options.toolContext };
|
|
43
|
+
const toolCallHistory = prompt.copy().instructions;
|
|
44
|
+
toolContext[ToolContext.TOOL_CALL_HISTORY] = toolCallHistory;
|
|
45
|
+
}
|
|
46
|
+
const toolResponseMessage = await this.executeFunctions(assistantMessage, toolContext);
|
|
47
|
+
const toolConversationHistory = this.buildToolCallConversation(prompt.instructions, assistantMessage, toolResponseMessage);
|
|
48
|
+
return toolConversationHistory;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
__decorate([
|
|
52
|
+
Autowired(FunctionCallbackRegister),
|
|
53
|
+
__metadata("design:type", Object)
|
|
54
|
+
], ToolHanderImpl.prototype, "functionCallbackRegister", void 0);
|
|
55
|
+
ToolHanderImpl = __decorate([
|
|
56
|
+
Component(ToolHandler)
|
|
57
|
+
], ToolHanderImpl);
|
|
58
|
+
export { ToolHanderImpl };
|
|
59
|
+
//# sourceMappingURL=tool-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-handler.js","sourceRoot":"","sources":["../../../../src/common/chat/tool/tool-handler.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG5F,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAA2C,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGnF,IAAM,cAAc,GAApB,MAAM,cAAc;IAKb,KAAK,CAAC,gBAAgB,CAAC,gBAAkC,EAAE,WAAwB;QACzF,MAAM,aAAa,GAAmB,EAAE,CAAC;QACzC,KAAK,MAAM,QAAQ,IAAI,gBAAgB,CAAC,SAAS,EAAE,CAAC;YAChD,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YAClH,aAAa,CAAC,IAAI,CAAC;gBACf,EAAE,EAAE,QAAQ,CAAC,EAAE;gBACf,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,YAAY,EAAE,gBAAgB;aACjC,CAAC,CAAC;QACP,CAAC;QACD,OAAO,IAAI,mBAAmB,CAAC,aAAa,CAAC,CAAC;IAClD,CAAC;IAES,yBAAyB,CAAC,gBAA2B,EAAE,gBAAkC,EAAE,mBAAwC;QACzI,MAAM,QAAQ,GAAG,CAAC,GAAG,gBAAgB,CAAC,CAAC;QACvC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAChC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACnC,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,YAA0B;QACnD,MAAM,kBAAkB,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,kBAAC,CAAA,MAAA,MAAM,CAAC,MAAM,CAAC,SAAS,0CAAE,MAAM,IAAG,CAAC,GAAA,CAAC,CAAC;QACpG,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACtB,MAAM,IAAI,iBAAiB,CAAC,gDAAgD,CAAC,CAAC;QAClF,CAAC;QACD,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,MAAM,CAAC;QACnD,IAAI,WAAW,GAAgB,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC/B,IAAI,sBAAsB,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YAC5D,WAAW,GAAG,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;YACzC,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC;YACnD,WAAW,CAAC,WAAW,CAAC,iBAAiB,CAAC,GAAG,eAAe,CAAC;QACjE,CAAC;QACD,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;QACvF,MAAM,uBAAuB,GAAG,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,CAAC;QAC3H,OAAO,uBAAuB,CAAC;IACnC,CAAC;CACJ,CAAA;AAvCsB;IADlB,SAAS,CAAC,wBAAwB,CAAC;;gEACkC;AAH7D,cAAc;IAD1B,SAAS,CAAC,WAAW,CAAC;GACV,cAAc,CA0C1B"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Message } from '../message/index.js';
|
|
2
|
+
import { ChatResponse } from '../model/index.js';
|
|
3
|
+
import { Prompt } from '../prompt/index.js';
|
|
4
|
+
export declare const ToolHandler: unique symbol;
|
|
5
|
+
export interface ToolHandler {
|
|
6
|
+
handle(prompt: Prompt, chatResponse: ChatResponse): Promise<Message[]>;
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-protocol.js","sourceRoot":"","sources":["../../../../src/common/chat/tool/tool-protocol.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC"}
|