@celljs/ai-openai 3.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +96 -0
  3. package/lib/common/api/api-protocol.d.ts +47 -0
  4. package/lib/common/api/api-protocol.d.ts.map +1 -0
  5. package/lib/common/api/api-protocol.js +6 -0
  6. package/lib/common/api/api-protocol.js.map +1 -0
  7. package/lib/common/api/chat-request.d.ts +198 -0
  8. package/lib/common/api/chat-request.d.ts.map +1 -0
  9. package/lib/common/api/chat-request.js +145 -0
  10. package/lib/common/api/chat-request.js.map +1 -0
  11. package/lib/common/api/chat-response.d.ts +193 -0
  12. package/lib/common/api/chat-response.d.ts.map +1 -0
  13. package/lib/common/api/chat-response.js +124 -0
  14. package/lib/common/api/chat-response.js.map +1 -0
  15. package/lib/common/api/embeddings-request.d.ts +59 -0
  16. package/lib/common/api/embeddings-request.d.ts.map +1 -0
  17. package/lib/common/api/embeddings-request.js +49 -0
  18. package/lib/common/api/embeddings-request.js.map +1 -0
  19. package/lib/common/api/embeddings-response.d.ts +27 -0
  20. package/lib/common/api/embeddings-response.d.ts.map +1 -0
  21. package/lib/common/api/embeddings-response.js +30 -0
  22. package/lib/common/api/embeddings-response.js.map +1 -0
  23. package/lib/common/api/index.d.ts +10 -0
  24. package/lib/common/api/index.d.ts.map +1 -0
  25. package/lib/common/api/index.js +13 -0
  26. package/lib/common/api/index.js.map +1 -0
  27. package/lib/common/api/message.d.ts +216 -0
  28. package/lib/common/api/message.d.ts.map +1 -0
  29. package/lib/common/api/message.js +179 -0
  30. package/lib/common/api/message.js.map +1 -0
  31. package/lib/common/api/openai-api.d.ts +18 -0
  32. package/lib/common/api/openai-api.d.ts.map +1 -0
  33. package/lib/common/api/openai-api.js +99 -0
  34. package/lib/common/api/openai-api.js.map +1 -0
  35. package/lib/common/api/openai-api.spec.d.ts +2 -0
  36. package/lib/common/api/openai-api.spec.d.ts.map +1 -0
  37. package/lib/common/api/openai-api.spec.js +162 -0
  38. package/lib/common/api/openai-api.spec.js.map +1 -0
  39. package/lib/common/api/openai-model.d.ts +117 -0
  40. package/lib/common/api/openai-model.d.ts.map +1 -0
  41. package/lib/common/api/openai-model.js +121 -0
  42. package/lib/common/api/openai-model.js.map +1 -0
  43. package/lib/common/api/response-format.d.ts +60 -0
  44. package/lib/common/api/response-format.d.ts.map +1 -0
  45. package/lib/common/api/response-format.js +79 -0
  46. package/lib/common/api/response-format.js.map +1 -0
  47. package/lib/common/api/usage.d.ts +79 -0
  48. package/lib/common/api/usage.d.ts.map +1 -0
  49. package/lib/common/api/usage.js +95 -0
  50. package/lib/common/api/usage.js.map +1 -0
  51. package/lib/common/index.d.ts +4 -0
  52. package/lib/common/index.d.ts.map +1 -0
  53. package/lib/common/index.js +7 -0
  54. package/lib/common/index.js.map +1 -0
  55. package/lib/common/model/index.d.ts +5 -0
  56. package/lib/common/model/index.d.ts.map +1 -0
  57. package/lib/common/model/index.js +8 -0
  58. package/lib/common/model/index.js.map +1 -0
  59. package/lib/common/model/openai-chat-model.d.ts +37 -0
  60. package/lib/common/model/openai-chat-model.d.ts.map +1 -0
  61. package/lib/common/model/openai-chat-model.js +357 -0
  62. package/lib/common/model/openai-chat-model.js.map +1 -0
  63. package/lib/common/model/openai-chat-model.spec.d.ts +2 -0
  64. package/lib/common/model/openai-chat-model.spec.d.ts.map +1 -0
  65. package/lib/common/model/openai-chat-model.spec.js +82 -0
  66. package/lib/common/model/openai-chat-model.spec.js.map +1 -0
  67. package/lib/common/model/openai-chat-options.d.ts +159 -0
  68. package/lib/common/model/openai-chat-options.d.ts.map +1 -0
  69. package/lib/common/model/openai-chat-options.js +231 -0
  70. package/lib/common/model/openai-chat-options.js.map +1 -0
  71. package/lib/common/model/openai-embedding-model.d.ts +15 -0
  72. package/lib/common/model/openai-embedding-model.d.ts.map +1 -0
  73. package/lib/common/model/openai-embedding-model.js +64 -0
  74. package/lib/common/model/openai-embedding-model.js.map +1 -0
  75. package/lib/common/model/openai-embedding-model.spec.d.ts +2 -0
  76. package/lib/common/model/openai-embedding-model.spec.d.ts.map +1 -0
  77. package/lib/common/model/openai-embedding-model.spec.js +100 -0
  78. package/lib/common/model/openai-embedding-model.spec.js.map +1 -0
  79. package/lib/common/model/openai-embedding-options.d.ts +35 -0
  80. package/lib/common/model/openai-embedding-options.d.ts.map +1 -0
  81. package/lib/common/model/openai-embedding-options.js +56 -0
  82. package/lib/common/model/openai-embedding-options.js.map +1 -0
  83. package/lib/common/module.d.ts +4 -0
  84. package/lib/common/module.d.ts.map +1 -0
  85. package/lib/common/module.js +6 -0
  86. package/lib/common/module.js.map +1 -0
  87. package/lib/common/support/index.d.ts +3 -0
  88. package/lib/common/support/index.d.ts.map +1 -0
  89. package/lib/common/support/index.js +6 -0
  90. package/lib/common/support/index.js.map +1 -0
  91. package/lib/common/support/openai-api-response-headers.d.ts +34 -0
  92. package/lib/common/support/openai-api-response-headers.d.ts.map +1 -0
  93. package/lib/common/support/openai-api-response-headers.js +45 -0
  94. package/lib/common/support/openai-api-response-headers.js.map +1 -0
  95. package/lib/common/support/openai-response-header-extractor.d.ts +12 -0
  96. package/lib/common/support/openai-response-header-extractor.d.ts.map +1 -0
  97. package/lib/common/support/openai-response-header-extractor.js +131 -0
  98. package/lib/common/support/openai-response-header-extractor.js.map +1 -0
  99. package/lib/common/test/mock-openai-api.d.ts +13 -0
  100. package/lib/common/test/mock-openai-api.d.ts.map +1 -0
  101. package/lib/common/test/mock-openai-api.js +57 -0
  102. package/lib/common/test/mock-openai-api.js.map +1 -0
  103. package/lib/common/test/test-container.d.ts +3 -0
  104. package/lib/common/test/test-container.d.ts.map +1 -0
  105. package/lib/common/test/test-container.js +16 -0
  106. package/lib/common/test/test-container.js.map +1 -0
  107. package/lib/package.spec.d.ts +1 -0
  108. package/lib/package.spec.d.ts.map +1 -0
  109. package/lib/package.spec.js +4 -0
  110. package/lib/package.spec.js.map +1 -0
  111. package/package.json +46 -0
  112. package/src/common/api/api-protocol.ts +51 -0
  113. package/src/common/api/chat-request.ts +258 -0
  114. package/src/common/api/chat-response.ts +218 -0
  115. package/src/common/api/embeddings-request.ts +92 -0
  116. package/src/common/api/embeddings-response.ts +44 -0
  117. package/src/common/api/index.ts +9 -0
  118. package/src/common/api/message.ts +273 -0
  119. package/src/common/api/openai-api.spec.ts +175 -0
  120. package/src/common/api/openai-api.ts +111 -0
  121. package/src/common/api/openai-model.ts +137 -0
  122. package/src/common/api/response-format.ts +109 -0
  123. package/src/common/api/usage.ts +135 -0
  124. package/src/common/index.ts +3 -0
  125. package/src/common/model/index.ts +4 -0
  126. package/src/common/model/openai-chat-model.spec.ts +85 -0
  127. package/src/common/model/openai-chat-model.ts +399 -0
  128. package/src/common/model/openai-chat-options.ts +326 -0
  129. package/src/common/model/openai-embedding-model.spec.ts +112 -0
  130. package/src/common/model/openai-embedding-model.ts +83 -0
  131. package/src/common/model/openai-embedding-options.ts +72 -0
  132. package/src/common/module.ts +4 -0
  133. package/src/common/support/index.ts +2 -0
  134. package/src/common/support/openai-api-response-headers.ts +46 -0
  135. package/src/common/support/openai-response-header-extractor.ts +141 -0
  136. package/src/common/test/mock-openai-api.ts +70 -0
  137. package/src/common/test/test-container.ts +13 -0
  138. package/src/package.spec.ts +4 -0
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const chai_1 = require("chai");
4
+ require("../index");
5
+ const openai_chat_model_1 = require("./openai-chat-model");
6
+ const ai_core_1 = require("@celljs/ai-core");
7
+ const test_container_1 = require("../test/test-container");
8
+ const api_protocol_1 = require("../api/api-protocol");
9
+ const mock_openai_api_1 = require("../test/mock-openai-api");
10
+ const container = (0, test_container_1.createContainer)();
11
+ describe('OpenAIChatModel', () => {
12
+ let openAIChatModel;
13
+ let promptTemplate;
14
+ before(() => {
15
+ container.rebind(api_protocol_1.OpenAIAPI).to(mock_openai_api_1.MockOpenAIAPI).inSingletonScope();
16
+ openAIChatModel = container.get(openai_chat_model_1.OpenAIChatModel);
17
+ promptTemplate = container.get(ai_core_1.PromptTemplate);
18
+ const functionCallbackRegister = container.get(ai_core_1.FunctionCallbackRegister);
19
+ functionCallbackRegister.register({
20
+ name: 'getWeather',
21
+ description: '',
22
+ inputTypeSchema: '{}',
23
+ call: async () => ''
24
+ });
25
+ });
26
+ describe('call', () => {
27
+ it('should return a ChatResponse for a given prompt', async () => {
28
+ const prompt = await promptTemplate.create('Hello', { chatOptions: { model: 'gpt-4' } });
29
+ const response = await openAIChatModel.call(prompt);
30
+ (0, chai_1.expect)(response).to.have.property('results');
31
+ (0, chai_1.expect)(response.results.length).to.be.greaterThan(0);
32
+ (0, chai_1.expect)(response.results[0].output).to.be.instanceOf(ai_core_1.AssistantMessage);
33
+ });
34
+ it('should handle tool calls correctly', async () => {
35
+ const prompt = await promptTemplate.create('What is the weather today?', {
36
+ chatOptions: {
37
+ model: 'gpt-4',
38
+ isProxyToolCalls: true,
39
+ functions: new Set(['getWeather'])
40
+ }
41
+ });
42
+ const response = await openAIChatModel.call(prompt);
43
+ (0, chai_1.expect)(response).to.have.property('results');
44
+ (0, chai_1.expect)(response.results.length).to.be.greaterThan(0);
45
+ (0, chai_1.expect)(response.metadata).to.have.property('model');
46
+ (0, chai_1.expect)(response.metadata).to.have.property('usage');
47
+ });
48
+ });
49
+ describe('stream', () => {
50
+ it('should return an Observable of ChatResponse for a given prompt', done => {
51
+ (async () => {
52
+ const prompt = await promptTemplate.create('Hello', { chatOptions: { model: 'gpt-4' } });
53
+ const response$ = await openAIChatModel.stream(prompt);
54
+ response$.subscribe({
55
+ next: response => {
56
+ (0, chai_1.expect)(response).to.have.property('results');
57
+ (0, chai_1.expect)(response.results.length).to.be.greaterThan(0);
58
+ (0, chai_1.expect)(response.results[0].output).to.be.instanceOf(ai_core_1.AssistantMessage);
59
+ },
60
+ complete: () => done()
61
+ });
62
+ })();
63
+ });
64
+ it('should throw an error when trying to stream with audio output', async () => {
65
+ const prompt = await promptTemplate.create('Hello', {
66
+ chatOptions: {
67
+ model: 'gpt-4',
68
+ outputModalities: ['audio']
69
+ }
70
+ });
71
+ try {
72
+ await openAIChatModel.stream(prompt);
73
+ chai_1.expect.fail('Should have thrown an error');
74
+ }
75
+ catch (e) {
76
+ (0, chai_1.expect)(e).to.be.instanceOf(Error);
77
+ (0, chai_1.expect)(e.message).to.include('Audio output is not supported');
78
+ }
79
+ });
80
+ });
81
+ });
82
+ //# sourceMappingURL=openai-chat-model.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-chat-model.spec.js","sourceRoot":"","sources":["../../../src/common/model/openai-chat-model.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,159 @@
1
+ import { FunctionCallback, FunctionCallingOptions } from '@celljs/ai-core';
2
+ import { OpenAIModel } from '../api/openai-model';
3
+ import { AudioParameters, FunctionTool, ResponseFormat, StreamOptions } from '../api';
4
+ /**
5
+ * Options for the OpenAI Chat API.
6
+ */
7
+ export declare class OpenAIChatOptions implements FunctionCallingOptions {
8
+ static readonly DEFAULT_MODEL = OpenAIModel.GPT_3_5_TURBO;
9
+ /**
10
+ * ID of the model to use.
11
+ */
12
+ model?: string;
13
+ /**
14
+ * What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output
15
+ * more random, while lower values like 0.2 will make it more focused and deterministic. We generally recommend
16
+ * altering this or top_p but not both.
17
+ */
18
+ temperature?: number;
19
+ /**
20
+ * The maximum number of tokens to generate in the chat completion. The total length of input
21
+ * tokens and generated tokens is limited by the model's context length.
22
+ */
23
+ maxTokens?: number;
24
+ /**
25
+ * An alternative to sampling with temperature, called nucleus sampling, where the model considers the
26
+ * results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10%
27
+ * probability mass are considered. We generally recommend altering this or temperature but not both.
28
+ */
29
+ topP?: number;
30
+ /**
31
+ * Number between -2.0 and 2.0. Positive values penalize new tokens based on whether they
32
+ * appear in the text so far, increasing the model's likelihood to talk about new topics.
33
+ */
34
+ presencePenalty?: number;
35
+ /**
36
+ * Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing
37
+ * frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim.
38
+ */
39
+ frequencyPenalty?: number;
40
+ /**
41
+ * How many chat completion choices to generate for each input message. Note that you will be charged based
42
+ * on the number of generated tokens across all of the choices. Keep n as 1 to minimize costs.
43
+ */
44
+ n?: number;
45
+ /**
46
+ * Output types that you would like the model to generate for this request.
47
+ * Most models are capable of generating text, which is the default.
48
+ */
49
+ outputModalities?: string[];
50
+ /**
51
+ * Audio parameters for the audio generation. Required when audio output is requested with
52
+ * modalities: ["audio"]
53
+ */
54
+ outputAudio?: AudioParameters;
55
+ /**
56
+ * Modify the likelihood of specified tokens appearing in the completion. Accepts a JSON object
57
+ * that maps tokens (specified by their token ID in the tokenizer) to an associated bias value from -100 to 100.
58
+ */
59
+ logitBias?: Record<string, number>;
60
+ /**
61
+ * Whether to return log probabilities of the output tokens or not. If true, returns the log probabilities
62
+ * of each output token returned in the 'content' of 'message'.
63
+ */
64
+ logprobs?: boolean;
65
+ /**
66
+ * An integer between 0 and 5 specifying the number of most likely tokens to return at each token position,
67
+ * each with an associated log probability. 'logprobs' must be set to 'true' if this parameter is used.
68
+ */
69
+ topLogprobs?: number;
70
+ /**
71
+ * An object specifying the format that the model must output. Setting to { "type":
72
+ * "json_object" } enables JSON mode, which guarantees the message the model generates is valid JSON.
73
+ */
74
+ responseFormat?: ResponseFormat;
75
+ /**
76
+ * Options for streaming response. Included in the API only if streaming-mode completion is requested.
77
+ */
78
+ streamOptions?: StreamOptions;
79
+ /**
80
+ * This feature is in Beta. If specified, our system will make a best effort to sample
81
+ * deterministically, such that repeated requests with the same seed and parameters should return the same result.
82
+ */
83
+ seed?: number;
84
+ /**
85
+ * Up to 4 sequences where the API will stop generating further tokens.
86
+ */
87
+ stop?: string[];
88
+ /**
89
+ * A list of tools the model may call. Currently, only functions are supported as a tool. Use this to
90
+ * provide a list of functions the model may generate JSON inputs for.
91
+ */
92
+ tools?: FunctionTool[];
93
+ /**
94
+ * Controls which (if any) function is called by the model.
95
+ */
96
+ toolChoice?: any;
97
+ /**
98
+ * A unique identifier representing your end-user, which can help OpenAI to monitor and detect abuse.
99
+ */
100
+ user?: string;
101
+ /**
102
+ * Whether to enable parallel function calling during tool use.
103
+ */
104
+ parallelToolCalls?: boolean;
105
+ /**
106
+ * Tool Function Callbacks to register with the ChatModel.
107
+ */
108
+ functionCallbacks: FunctionCallback[];
109
+ /**
110
+ * List of functions, identified by their names, to configure for function calling in
111
+ * the chat completion requests.
112
+ */
113
+ functions: Set<string>;
114
+ /**
115
+ * If true, the AI will not handle the function calls internally, but will proxy them to the client.
116
+ */
117
+ proxyToolCalls?: boolean;
118
+ /**
119
+ * Optional HTTP headers to be added to the chat completion request.
120
+ */
121
+ httpHeaders: Record<string, string>;
122
+ /**
123
+ * Tool context data.
124
+ */
125
+ toolContext?: Record<string, any>;
126
+ copy(): OpenAIChatOptions;
127
+ static options(fromOptions: OpenAIChatOptions): OpenAIChatOptions;
128
+ static builder(): OpenAIOptionsBuilder;
129
+ }
130
+ export declare class OpenAIOptionsBuilder {
131
+ private options;
132
+ withModel(model: string): OpenAIOptionsBuilder;
133
+ withTemperature(temperature: number): OpenAIOptionsBuilder;
134
+ withMaxTokens(maxTokens: number): OpenAIOptionsBuilder;
135
+ withTopP(topP: number): OpenAIOptionsBuilder;
136
+ withPresencePenalty(presencePenalty: number): OpenAIOptionsBuilder;
137
+ withFrequencyPenalty(frequencyPenalty: number): OpenAIOptionsBuilder;
138
+ withN(n: number): OpenAIOptionsBuilder;
139
+ withOutputModalities(modalities: string[]): OpenAIOptionsBuilder;
140
+ withOutputAudio(audio: AudioParameters): OpenAIOptionsBuilder;
141
+ withLogitBias(bias: Record<string, number>): OpenAIOptionsBuilder;
142
+ withLogprobs(logprobs: boolean): OpenAIOptionsBuilder;
143
+ withTopLogprobs(topLogprobs: number): OpenAIOptionsBuilder;
144
+ withResponseFormat(format: ResponseFormat): OpenAIOptionsBuilder;
145
+ withStreamOptions(options: StreamOptions): OpenAIOptionsBuilder;
146
+ withSeed(seed: number): OpenAIOptionsBuilder;
147
+ withStop(stop: string[]): OpenAIOptionsBuilder;
148
+ withTools(tools: FunctionTool[]): OpenAIOptionsBuilder;
149
+ withToolChoice(choice: any): OpenAIOptionsBuilder;
150
+ withUser(user: string): OpenAIOptionsBuilder;
151
+ withParallelToolCalls(parallel: boolean): OpenAIOptionsBuilder;
152
+ withFunctionCallbacks(callbacks: FunctionCallback[]): OpenAIOptionsBuilder;
153
+ withFunctions(functions: Set<string>): OpenAIOptionsBuilder;
154
+ withProxyToolCalls(proxy: boolean): OpenAIOptionsBuilder;
155
+ withHttpHeaders(headers: Record<string, string>): OpenAIOptionsBuilder;
156
+ withToolContext(context: Record<string, any>): OpenAIOptionsBuilder;
157
+ build(): OpenAIChatOptions;
158
+ }
159
+ //# sourceMappingURL=openai-chat-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-chat-options.d.ts","sourceRoot":"","sources":["../../../src/common/model/openai-chat-options.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,231 @@
1
+ "use strict";
2
+ var OpenAIChatOptions_1;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.OpenAIOptionsBuilder = exports.OpenAIChatOptions = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const class_transformer_1 = require("class-transformer");
7
+ const openai_model_1 = require("../api/openai-model");
8
+ const core_1 = require("@celljs/core");
9
+ const api_1 = require("../api");
10
+ /**
11
+ * Options for the OpenAI Chat API.
12
+ */
13
+ let OpenAIChatOptions = OpenAIChatOptions_1 = class OpenAIChatOptions {
14
+ constructor() {
15
+ /**
16
+ * Tool Function Callbacks to register with the ChatModel.
17
+ */
18
+ this.functionCallbacks = [];
19
+ /**
20
+ * List of functions, identified by their names, to configure for function calling in
21
+ * the chat completion requests.
22
+ */
23
+ this.functions = new Set();
24
+ /**
25
+ * Optional HTTP headers to be added to the chat completion request.
26
+ */
27
+ this.httpHeaders = {};
28
+ }
29
+ copy() {
30
+ return OpenAIChatOptions_1.options(this);
31
+ }
32
+ static options(fromOptions) {
33
+ const options = new OpenAIChatOptions_1();
34
+ Object.assign(options, fromOptions);
35
+ options.functionCallbacks = [...(fromOptions.functionCallbacks || [])];
36
+ options.functions = new Set(fromOptions.functions);
37
+ options.httpHeaders = { ...fromOptions.httpHeaders };
38
+ return options;
39
+ }
40
+ static builder() {
41
+ return new OpenAIOptionsBuilder();
42
+ }
43
+ };
44
+ OpenAIChatOptions.DEFAULT_MODEL = openai_model_1.OpenAIModel.GPT_3_5_TURBO;
45
+ tslib_1.__decorate([
46
+ (0, class_transformer_1.Expose)({ name: 'max_tokens' }),
47
+ tslib_1.__metadata("design:type", Number)
48
+ ], OpenAIChatOptions.prototype, "maxTokens", void 0);
49
+ tslib_1.__decorate([
50
+ (0, class_transformer_1.Expose)({ name: 'top_p' }),
51
+ tslib_1.__metadata("design:type", Number)
52
+ ], OpenAIChatOptions.prototype, "topP", void 0);
53
+ tslib_1.__decorate([
54
+ (0, class_transformer_1.Expose)({ name: 'presence_penalty' }),
55
+ tslib_1.__metadata("design:type", Number)
56
+ ], OpenAIChatOptions.prototype, "presencePenalty", void 0);
57
+ tslib_1.__decorate([
58
+ (0, class_transformer_1.Expose)({ name: 'frequency_penalty' }),
59
+ tslib_1.__metadata("design:type", Number)
60
+ ], OpenAIChatOptions.prototype, "frequencyPenalty", void 0);
61
+ tslib_1.__decorate([
62
+ (0, class_transformer_1.Expose)({ name: 'modalities' }),
63
+ tslib_1.__metadata("design:type", Array)
64
+ ], OpenAIChatOptions.prototype, "outputModalities", void 0);
65
+ tslib_1.__decorate([
66
+ (0, class_transformer_1.Expose)({ name: 'audio' }),
67
+ tslib_1.__metadata("design:type", api_1.AudioParameters)
68
+ ], OpenAIChatOptions.prototype, "outputAudio", void 0);
69
+ tslib_1.__decorate([
70
+ (0, class_transformer_1.Expose)({ name: 'logit_bias' }),
71
+ tslib_1.__metadata("design:type", Object)
72
+ ], OpenAIChatOptions.prototype, "logitBias", void 0);
73
+ tslib_1.__decorate([
74
+ (0, class_transformer_1.Expose)({ name: 'top_logprobs' }),
75
+ tslib_1.__metadata("design:type", Number)
76
+ ], OpenAIChatOptions.prototype, "topLogprobs", void 0);
77
+ tslib_1.__decorate([
78
+ (0, class_transformer_1.Expose)({ name: 'response_format' }),
79
+ tslib_1.__metadata("design:type", api_1.ResponseFormat)
80
+ ], OpenAIChatOptions.prototype, "responseFormat", void 0);
81
+ tslib_1.__decorate([
82
+ (0, class_transformer_1.Expose)({ name: 'stream_options' }),
83
+ tslib_1.__metadata("design:type", api_1.StreamOptions)
84
+ ], OpenAIChatOptions.prototype, "streamOptions", void 0);
85
+ tslib_1.__decorate([
86
+ (0, class_transformer_1.Expose)({ name: 'tool_choice' }),
87
+ tslib_1.__metadata("design:type", Object)
88
+ ], OpenAIChatOptions.prototype, "toolChoice", void 0);
89
+ tslib_1.__decorate([
90
+ (0, class_transformer_1.Expose)({ name: 'parallel_tool_calls' }),
91
+ tslib_1.__metadata("design:type", Boolean)
92
+ ], OpenAIChatOptions.prototype, "parallelToolCalls", void 0);
93
+ tslib_1.__decorate([
94
+ (0, class_transformer_1.Exclude)(),
95
+ tslib_1.__metadata("design:type", Array)
96
+ ], OpenAIChatOptions.prototype, "functionCallbacks", void 0);
97
+ tslib_1.__decorate([
98
+ (0, class_transformer_1.Exclude)(),
99
+ tslib_1.__metadata("design:type", Set)
100
+ ], OpenAIChatOptions.prototype, "functions", void 0);
101
+ tslib_1.__decorate([
102
+ (0, class_transformer_1.Exclude)(),
103
+ tslib_1.__metadata("design:type", Boolean)
104
+ ], OpenAIChatOptions.prototype, "proxyToolCalls", void 0);
105
+ tslib_1.__decorate([
106
+ (0, class_transformer_1.Exclude)(),
107
+ tslib_1.__metadata("design:type", Object)
108
+ ], OpenAIChatOptions.prototype, "httpHeaders", void 0);
109
+ tslib_1.__decorate([
110
+ (0, class_transformer_1.Exclude)(),
111
+ tslib_1.__metadata("design:type", Object)
112
+ ], OpenAIChatOptions.prototype, "toolContext", void 0);
113
+ OpenAIChatOptions = OpenAIChatOptions_1 = tslib_1.__decorate([
114
+ (0, core_1.Constant)(OpenAIChatOptions_1, new OpenAIChatOptions_1())
115
+ ], OpenAIChatOptions);
116
+ exports.OpenAIChatOptions = OpenAIChatOptions;
117
+ class OpenAIOptionsBuilder {
118
+ constructor() {
119
+ this.options = new OpenAIChatOptions();
120
+ }
121
+ withModel(model) {
122
+ this.options.model = model;
123
+ return this;
124
+ }
125
+ withTemperature(temperature) {
126
+ this.options.temperature = temperature;
127
+ return this;
128
+ }
129
+ withMaxTokens(maxTokens) {
130
+ this.options.maxTokens = maxTokens;
131
+ return this;
132
+ }
133
+ withTopP(topP) {
134
+ this.options.topP = topP;
135
+ return this;
136
+ }
137
+ withPresencePenalty(presencePenalty) {
138
+ this.options.presencePenalty = presencePenalty;
139
+ return this;
140
+ }
141
+ withFrequencyPenalty(frequencyPenalty) {
142
+ this.options.frequencyPenalty = frequencyPenalty;
143
+ return this;
144
+ }
145
+ withN(n) {
146
+ this.options.n = n;
147
+ return this;
148
+ }
149
+ withOutputModalities(modalities) {
150
+ this.options.outputModalities = modalities;
151
+ return this;
152
+ }
153
+ withOutputAudio(audio) {
154
+ this.options.outputAudio = audio;
155
+ return this;
156
+ }
157
+ withLogitBias(bias) {
158
+ this.options.logitBias = bias;
159
+ return this;
160
+ }
161
+ withLogprobs(logprobs) {
162
+ this.options.logprobs = logprobs;
163
+ return this;
164
+ }
165
+ withTopLogprobs(topLogprobs) {
166
+ this.options.topLogprobs = topLogprobs;
167
+ return this;
168
+ }
169
+ withResponseFormat(format) {
170
+ this.options.responseFormat = format;
171
+ return this;
172
+ }
173
+ withStreamOptions(options) {
174
+ this.options.streamOptions = options;
175
+ return this;
176
+ }
177
+ withSeed(seed) {
178
+ this.options.seed = seed;
179
+ return this;
180
+ }
181
+ withStop(stop) {
182
+ this.options.stop = stop;
183
+ return this;
184
+ }
185
+ withTools(tools) {
186
+ this.options.tools = tools;
187
+ return this;
188
+ }
189
+ withToolChoice(choice) {
190
+ this.options.toolChoice = choice;
191
+ return this;
192
+ }
193
+ withUser(user) {
194
+ this.options.user = user;
195
+ return this;
196
+ }
197
+ withParallelToolCalls(parallel) {
198
+ this.options.parallelToolCalls = parallel;
199
+ return this;
200
+ }
201
+ withFunctionCallbacks(callbacks) {
202
+ this.options.functionCallbacks = callbacks;
203
+ return this;
204
+ }
205
+ withFunctions(functions) {
206
+ this.options.functions = functions;
207
+ return this;
208
+ }
209
+ withProxyToolCalls(proxy) {
210
+ this.options.proxyToolCalls = proxy;
211
+ return this;
212
+ }
213
+ withHttpHeaders(headers) {
214
+ this.options.httpHeaders = headers;
215
+ return this;
216
+ }
217
+ withToolContext(context) {
218
+ if (!this.options.toolContext) {
219
+ this.options.toolContext = context;
220
+ }
221
+ else {
222
+ Object.assign(this.options.toolContext, context);
223
+ }
224
+ return this;
225
+ }
226
+ build() {
227
+ return OpenAIChatOptions.options(this.options);
228
+ }
229
+ }
230
+ exports.OpenAIOptionsBuilder = OpenAIOptionsBuilder;
231
+ //# sourceMappingURL=openai-chat-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-chat-options.js","sourceRoot":"","sources":["../../../src/common/model/openai-chat-options.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { EmbeddingModel, EmbeddingOptions, EmbeddingRequest, EmbeddingResponse } from '@celljs/ai-core';
2
+ import { EmbeddingRequest as OpenAIEmbeddingsRequest, OpenAIAPI } from '../api';
3
+ import { Logger } from '@celljs/core';
4
+ import { OpenAIEmbeddingOptions } from './openai-embedding-options';
5
+ export declare class OpenAIEmbeddingModel implements EmbeddingModel {
6
+ protected readonly defaultOptions: OpenAIEmbeddingOptions;
7
+ /**
8
+ * Low-level access to the OpenAI API.
9
+ */
10
+ protected readonly chatApi: OpenAIAPI;
11
+ protected readonly logger: Logger;
12
+ call(request: EmbeddingRequest): Promise<EmbeddingResponse>;
13
+ protected createOpenAIEmbeddingsRequest(inputContent: string[], options?: EmbeddingOptions): OpenAIEmbeddingsRequest<string[]>;
14
+ }
15
+ //# sourceMappingURL=openai-embedding-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-embedding-model.d.ts","sourceRoot":"","sources":["../../../src/common/model/openai-embedding-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EAGpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACH,gBAAgB,IAAI,uBAAuB,EAC3C,SAAS,EACZ,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAsD,MAAM,EAAE,MAAM,cAAc,CAAC;AAC1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,qBACa,oBAAqB,YAAW,cAAc;IAGvD,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,sBAAsB,CAAC;IAE1D;;OAEG;IAEH,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAGtC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAErB,IAAI,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA4BxE,SAAS,CAAC,6BAA6B,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,uBAAuB,CAAC,MAAM,EAAE,CAAC;CAuBjI"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OpenAIEmbeddingModel = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const ai_core_1 = require("@celljs/ai-core");
6
+ const api_1 = require("../api");
7
+ const core_1 = require("@celljs/core");
8
+ const openai_embedding_options_1 = require("./openai-embedding-options");
9
+ let OpenAIEmbeddingModel = class OpenAIEmbeddingModel {
10
+ async call(request) {
11
+ core_1.Assert.notEmpty(request.instructions, 'At least one text is required!');
12
+ const openAIRequet = this.createOpenAIEmbeddingsRequest(request.instructions, request.options);
13
+ const openAIResponse = (await this.chatApi.embed(openAIRequet)).body;
14
+ core_1.Assert.notNull(openAIResponse, 'No embedding data available.');
15
+ const embeddings = openAIResponse.data.map(embedding => ({
16
+ embedding: embedding.embedding,
17
+ index: embedding.index,
18
+ metadata: ai_core_1.EmbeddingResultMetadata.EMPTY,
19
+ output: embedding.embedding
20
+ }));
21
+ const embeddingResponseMetadata = {
22
+ model: openAIResponse.model,
23
+ usage: openAIResponse.usage,
24
+ extra: {}
25
+ };
26
+ core_1.Assert.notEmpty(embeddings, 'No embedding data available.');
27
+ return {
28
+ embeddings,
29
+ result: embeddings[0],
30
+ results: embeddings,
31
+ metadata: embeddingResponseMetadata
32
+ };
33
+ }
34
+ createOpenAIEmbeddingsRequest(inputContent, options) {
35
+ let runtimeOptions = openai_embedding_options_1.OpenAIEmbeddingOptions.builder().build();
36
+ if (options) {
37
+ runtimeOptions = Object.assign(runtimeOptions, options);
38
+ }
39
+ runtimeOptions = Object.assign(this.defaultOptions, runtimeOptions);
40
+ // Override the model.
41
+ if (!runtimeOptions.model) {
42
+ throw new core_1.IllegalArgumentError('Model is not set!');
43
+ }
44
+ const model = runtimeOptions.model;
45
+ return new api_1.EmbeddingRequest(inputContent, model, runtimeOptions.encodingFormat, runtimeOptions.dimensions, runtimeOptions.user);
46
+ }
47
+ };
48
+ tslib_1.__decorate([
49
+ (0, core_1.Autowired)(openai_embedding_options_1.OpenAIEmbeddingOptions),
50
+ tslib_1.__metadata("design:type", openai_embedding_options_1.OpenAIEmbeddingOptions)
51
+ ], OpenAIEmbeddingModel.prototype, "defaultOptions", void 0);
52
+ tslib_1.__decorate([
53
+ (0, core_1.Autowired)(api_1.OpenAIAPI),
54
+ tslib_1.__metadata("design:type", Object)
55
+ ], OpenAIEmbeddingModel.prototype, "chatApi", void 0);
56
+ tslib_1.__decorate([
57
+ (0, core_1.Autowired)(core_1.Logger),
58
+ tslib_1.__metadata("design:type", Object)
59
+ ], OpenAIEmbeddingModel.prototype, "logger", void 0);
60
+ OpenAIEmbeddingModel = tslib_1.__decorate([
61
+ (0, core_1.Component)(ai_core_1.EmbeddingModel)
62
+ ], OpenAIEmbeddingModel);
63
+ exports.OpenAIEmbeddingModel = OpenAIEmbeddingModel;
64
+ //# sourceMappingURL=openai-embedding-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-embedding-model.js","sourceRoot":"","sources":["../../../src/common/model/openai-embedding-model.ts"],"names":[],"mappings":";;;;AAAA,6CAQyB;AACzB,gCAGgB;AAChB,uCAA0F;AAC1F,yEAAoE;AAG7D,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IActB,KAAK,CAAC,IAAI,CAAC,OAAyB;QACvC,aAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,gCAAgC,CAAC,CAAC;QACxE,MAAM,YAAY,GAAG,IAAI,CAAC,6BAA6B,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/F,MAAM,cAAc,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;QACrE,aAAM,CAAC,OAAO,CAAC,cAAc,EAAE,8BAA8B,CAAC,CAAC;QAE/D,MAAM,UAAU,GAAgB,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAClE,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,QAAQ,EAAE,iCAAuB,CAAC,KAAK;YACvC,MAAM,EAAE,SAAS,CAAC,SAAS;SAC9B,CAAC,CAAC,CAAC;QAEJ,MAAM,yBAAyB,GAA8B;YACzD,KAAK,EAAE,cAAc,CAAC,KAAK;YAC3B,KAAK,EAAE,cAAc,CAAC,KAAK;YAC3B,KAAK,EAAE,EAAE;SACZ,CAAC;QACF,aAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,8BAA8B,CAAC,CAAC;QAC5D,OAAO;YACH,UAAU;YACV,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;YACrB,OAAO,EAAE,UAAU;YACnB,QAAQ,EAAE,yBAAyB;SACtC,CAAC;IAEN,CAAC;IAES,6BAA6B,CAAC,YAAsB,EAAE,OAA0B;QACtF,IAAI,cAAc,GAA2B,iDAAsB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC;QACtF,IAAI,OAAO,EAAE;YACT,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;SAC3D;QAED,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;QAEpE,sBAAsB;QACtB,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;YACvB,MAAM,IAAI,2BAAoB,CAAC,mBAAmB,CAAC,CAAC;SACvD;QACD,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC;QAEnC,OAAO,IAAI,sBAAuB,CAC9B,YAAY,EACZ,KAAK,EACL,cAAc,CAAC,cAAc,EAC7B,cAAc,CAAC,UAAU,EACzB,cAAc,CAAC,IAAI,CACtB,CAAC;IACN,CAAC;CAEJ,CAAA;AA/DG;IAAC,IAAA,gBAAS,EAAC,iDAAsB,CAAC;sCACC,iDAAsB;4DAAC;AAK1D;IAAC,IAAA,gBAAS,EAAC,eAAS,CAAC;;qDACiB;AAEtC;IAAC,IAAA,gBAAS,EAAC,aAAM,CAAC;;oDACgB;AAZzB,oBAAoB;IADhC,IAAA,gBAAS,EAAC,wBAAc,CAAC;GACb,oBAAoB,CAiEhC;AAjEY,oDAAoB"}
@@ -0,0 +1,2 @@
1
+ import '../index';
2
+ //# sourceMappingURL=openai-embedding-model.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-embedding-model.spec.d.ts","sourceRoot":"","sources":["../../../src/common/model/openai-embedding-model.spec.ts"],"names":[],"mappings":"AACA,OAAO,UAAU,CAAC"}