@vitkuz/vitkuz-chat-gpt-apapter 1.1.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.
@@ -0,0 +1,69 @@
1
+ import OpenAI from 'openai';
2
+
3
+ interface Logger {
4
+ debug: (message: string, context?: {
5
+ error?: any;
6
+ data?: any;
7
+ }) => void;
8
+ [key: string]: any;
9
+ }
10
+ interface ChatGptConfig {
11
+ apiKey: string;
12
+ organization?: string;
13
+ project?: string;
14
+ }
15
+ interface ChatGptContext {
16
+ client: OpenAI;
17
+ logger?: Logger;
18
+ }
19
+ type ChatMessageRole = 'system' | 'user' | 'assistant' | 'tool' | 'developer';
20
+ interface ChatMessage {
21
+ role: ChatMessageRole;
22
+ content: string;
23
+ name?: string;
24
+ }
25
+ interface CreateChatCompletionInput {
26
+ model: string;
27
+ messages: ChatMessage[];
28
+ temperature?: number;
29
+ max_tokens?: number;
30
+ top_p?: number;
31
+ frequency_penalty?: number;
32
+ presence_penalty?: number;
33
+ response_format?: {
34
+ type: 'text' | 'json_object' | 'json_schema';
35
+ json_schema?: {
36
+ name: string;
37
+ strict?: boolean;
38
+ schema: Record<string, any>;
39
+ };
40
+ };
41
+ stop?: string | string[];
42
+ }
43
+ interface CreateChatCompletionOutput {
44
+ id: string;
45
+ object: string;
46
+ created: number;
47
+ model: string;
48
+ choices: {
49
+ index: number;
50
+ message: ChatMessage;
51
+ finish_reason: string;
52
+ }[];
53
+ usage?: {
54
+ prompt_tokens: number;
55
+ completion_tokens: number;
56
+ total_tokens: number;
57
+ };
58
+ }
59
+
60
+ declare const createChatGptClient: (config: ChatGptConfig) => OpenAI;
61
+
62
+ declare const createChatCompletion: (ctx: ChatGptContext) => (input: CreateChatCompletionInput) => Promise<CreateChatCompletionOutput>;
63
+
64
+ interface ChatGptAdapter {
65
+ createChatCompletion: ReturnType<typeof createChatCompletion>;
66
+ }
67
+ declare const createAdapter: (config: ChatGptConfig, logger?: Logger) => ChatGptAdapter;
68
+
69
+ export { type ChatGptAdapter, type ChatGptConfig, type ChatGptContext, type ChatMessage, type ChatMessageRole, type CreateChatCompletionInput, type CreateChatCompletionOutput, type Logger, createAdapter, createChatCompletion, createChatGptClient };
@@ -0,0 +1,69 @@
1
+ import OpenAI from 'openai';
2
+
3
+ interface Logger {
4
+ debug: (message: string, context?: {
5
+ error?: any;
6
+ data?: any;
7
+ }) => void;
8
+ [key: string]: any;
9
+ }
10
+ interface ChatGptConfig {
11
+ apiKey: string;
12
+ organization?: string;
13
+ project?: string;
14
+ }
15
+ interface ChatGptContext {
16
+ client: OpenAI;
17
+ logger?: Logger;
18
+ }
19
+ type ChatMessageRole = 'system' | 'user' | 'assistant' | 'tool' | 'developer';
20
+ interface ChatMessage {
21
+ role: ChatMessageRole;
22
+ content: string;
23
+ name?: string;
24
+ }
25
+ interface CreateChatCompletionInput {
26
+ model: string;
27
+ messages: ChatMessage[];
28
+ temperature?: number;
29
+ max_tokens?: number;
30
+ top_p?: number;
31
+ frequency_penalty?: number;
32
+ presence_penalty?: number;
33
+ response_format?: {
34
+ type: 'text' | 'json_object' | 'json_schema';
35
+ json_schema?: {
36
+ name: string;
37
+ strict?: boolean;
38
+ schema: Record<string, any>;
39
+ };
40
+ };
41
+ stop?: string | string[];
42
+ }
43
+ interface CreateChatCompletionOutput {
44
+ id: string;
45
+ object: string;
46
+ created: number;
47
+ model: string;
48
+ choices: {
49
+ index: number;
50
+ message: ChatMessage;
51
+ finish_reason: string;
52
+ }[];
53
+ usage?: {
54
+ prompt_tokens: number;
55
+ completion_tokens: number;
56
+ total_tokens: number;
57
+ };
58
+ }
59
+
60
+ declare const createChatGptClient: (config: ChatGptConfig) => OpenAI;
61
+
62
+ declare const createChatCompletion: (ctx: ChatGptContext) => (input: CreateChatCompletionInput) => Promise<CreateChatCompletionOutput>;
63
+
64
+ interface ChatGptAdapter {
65
+ createChatCompletion: ReturnType<typeof createChatCompletion>;
66
+ }
67
+ declare const createAdapter: (config: ChatGptConfig, logger?: Logger) => ChatGptAdapter;
68
+
69
+ export { type ChatGptAdapter, type ChatGptConfig, type ChatGptContext, type ChatMessage, type ChatMessageRole, type CreateChatCompletionInput, type CreateChatCompletionOutput, type Logger, createAdapter, createChatCompletion, createChatGptClient };
package/dist/index.js ADDED
@@ -0,0 +1,45 @@
1
+ 'use strict';
2
+
3
+ var OpenAI = require('openai');
4
+
5
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
6
+
7
+ var OpenAI__default = /*#__PURE__*/_interopDefault(OpenAI);
8
+
9
+ // src/client.ts
10
+ var createChatGptClient = (config) => {
11
+ return new OpenAI__default.default({
12
+ apiKey: config.apiKey,
13
+ organization: config.organization,
14
+ project: config.project
15
+ });
16
+ };
17
+
18
+ // src/operations/create-chat-completion.ts
19
+ var createChatCompletion = (ctx) => async (input) => {
20
+ const { client, logger } = ctx;
21
+ logger?.debug("chat-gpt:createChatCompletion:start", { data: input });
22
+ try {
23
+ const response = await client.chat.completions.create(input);
24
+ logger?.debug("chat-gpt:createChatCompletion:success", { data: response });
25
+ return response;
26
+ } catch (error) {
27
+ logger?.debug("chat-gpt:createChatCompletion:error", { error });
28
+ throw error;
29
+ }
30
+ };
31
+
32
+ // src/adapter.ts
33
+ var createAdapter = (config, logger) => {
34
+ const client = createChatGptClient(config);
35
+ const context = { client, logger };
36
+ return {
37
+ createChatCompletion: createChatCompletion(context)
38
+ };
39
+ };
40
+
41
+ exports.createAdapter = createAdapter;
42
+ exports.createChatCompletion = createChatCompletion;
43
+ exports.createChatGptClient = createChatGptClient;
44
+ //# sourceMappingURL=index.js.map
45
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/client.ts","../src/operations/create-chat-completion.ts","../src/adapter.ts"],"names":["OpenAI"],"mappings":";;;;;;;;;AAGO,IAAM,mBAAA,GAAsB,CAAC,MAAA,KAAkC;AAClE,EAAA,OAAO,IAAIA,uBAAA,CAAO;AAAA,IACd,QAAQ,MAAA,CAAO,MAAA;AAAA,IACf,cAAc,MAAA,CAAO,YAAA;AAAA,IACrB,SAAS,MAAA,CAAO;AAAA,GACnB,CAAA;AACL;;;ACPO,IAAM,oBAAA,GACT,CAAC,GAAA,KACD,OAAO,KAAA,KAA0E;AAC7E,EAAA,MAAM,EAAE,MAAA,EAAQ,MAAA,EAAO,GAAI,GAAA;AAE3B,EAAA,MAAA,EAAQ,KAAA,CAAM,qCAAA,EAAuC,EAAE,IAAA,EAAM,OAAO,CAAA;AAEpE,EAAA,IAAI;AACA,IAAA,MAAM,WAAW,MAAM,MAAA,CAAO,IAAA,CAAK,WAAA,CAAY,OAAO,KAAY,CAAA;AAElE,IAAA,MAAA,EAAQ,KAAA,CAAM,uCAAA,EAAyC,EAAE,IAAA,EAAM,UAAU,CAAA;AAEzE,IAAA,OAAO,QAAA;AAAA,EACX,SAAS,KAAA,EAAO;AACZ,IAAA,MAAA,EAAQ,KAAA,CAAM,qCAAA,EAAuC,EAAE,KAAA,EAAO,CAAA;AAC9D,IAAA,MAAM,KAAA;AAAA,EACV;AACJ;;;ACVG,IAAM,aAAA,GAAgB,CAAC,MAAA,EAAuB,MAAA,KAAoC;AACrF,EAAA,MAAM,MAAA,GAAS,oBAAoB,MAAM,CAAA;AACzC,EAAA,MAAM,OAAA,GAA0B,EAAE,MAAA,EAAQ,MAAA,EAAO;AAEjD,EAAA,OAAO;AAAA,IACH,oBAAA,EAAsB,qBAAqB,OAAO;AAAA,GACtD;AACJ","file":"index.js","sourcesContent":["import OpenAI from 'openai';\nimport { ChatGptConfig } from './types';\n\nexport const createChatGptClient = (config: ChatGptConfig): OpenAI => {\n return new OpenAI({\n apiKey: config.apiKey,\n organization: config.organization,\n project: config.project,\n });\n};\n","import { ChatGptContext, CreateChatCompletionInput, CreateChatCompletionOutput } from '../types';\n\nexport const createChatCompletion =\n (ctx: ChatGptContext) =>\n async (input: CreateChatCompletionInput): Promise<CreateChatCompletionOutput> => {\n const { client, logger } = ctx;\n\n logger?.debug('chat-gpt:createChatCompletion:start', { data: input });\n\n try {\n const response = await client.chat.completions.create(input as any);\n\n logger?.debug('chat-gpt:createChatCompletion:success', { data: response });\n\n return response as CreateChatCompletionOutput;\n } catch (error) {\n logger?.debug('chat-gpt:createChatCompletion:error', { error });\n throw error;\n }\n };\n","import OpenAI from 'openai';\nimport { ChatGptConfig, ChatGptContext, Logger } from './types';\nimport { createChatGptClient } from './client';\nimport { createChatCompletion } from './operations/create-chat-completion';\n\nexport interface ChatGptAdapter {\n createChatCompletion: ReturnType<typeof createChatCompletion>;\n}\n\nexport const createAdapter = (config: ChatGptConfig, logger?: Logger): ChatGptAdapter => {\n const client = createChatGptClient(config);\n const context: ChatGptContext = { client, logger };\n\n return {\n createChatCompletion: createChatCompletion(context),\n };\n};\n"]}
package/dist/index.mjs ADDED
@@ -0,0 +1,37 @@
1
+ import OpenAI from 'openai';
2
+
3
+ // src/client.ts
4
+ var createChatGptClient = (config) => {
5
+ return new OpenAI({
6
+ apiKey: config.apiKey,
7
+ organization: config.organization,
8
+ project: config.project
9
+ });
10
+ };
11
+
12
+ // src/operations/create-chat-completion.ts
13
+ var createChatCompletion = (ctx) => async (input) => {
14
+ const { client, logger } = ctx;
15
+ logger?.debug("chat-gpt:createChatCompletion:start", { data: input });
16
+ try {
17
+ const response = await client.chat.completions.create(input);
18
+ logger?.debug("chat-gpt:createChatCompletion:success", { data: response });
19
+ return response;
20
+ } catch (error) {
21
+ logger?.debug("chat-gpt:createChatCompletion:error", { error });
22
+ throw error;
23
+ }
24
+ };
25
+
26
+ // src/adapter.ts
27
+ var createAdapter = (config, logger) => {
28
+ const client = createChatGptClient(config);
29
+ const context = { client, logger };
30
+ return {
31
+ createChatCompletion: createChatCompletion(context)
32
+ };
33
+ };
34
+
35
+ export { createAdapter, createChatCompletion, createChatGptClient };
36
+ //# sourceMappingURL=index.mjs.map
37
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/client.ts","../src/operations/create-chat-completion.ts","../src/adapter.ts"],"names":[],"mappings":";;;AAGO,IAAM,mBAAA,GAAsB,CAAC,MAAA,KAAkC;AAClE,EAAA,OAAO,IAAI,MAAA,CAAO;AAAA,IACd,QAAQ,MAAA,CAAO,MAAA;AAAA,IACf,cAAc,MAAA,CAAO,YAAA;AAAA,IACrB,SAAS,MAAA,CAAO;AAAA,GACnB,CAAA;AACL;;;ACPO,IAAM,oBAAA,GACT,CAAC,GAAA,KACD,OAAO,KAAA,KAA0E;AAC7E,EAAA,MAAM,EAAE,MAAA,EAAQ,MAAA,EAAO,GAAI,GAAA;AAE3B,EAAA,MAAA,EAAQ,KAAA,CAAM,qCAAA,EAAuC,EAAE,IAAA,EAAM,OAAO,CAAA;AAEpE,EAAA,IAAI;AACA,IAAA,MAAM,WAAW,MAAM,MAAA,CAAO,IAAA,CAAK,WAAA,CAAY,OAAO,KAAY,CAAA;AAElE,IAAA,MAAA,EAAQ,KAAA,CAAM,uCAAA,EAAyC,EAAE,IAAA,EAAM,UAAU,CAAA;AAEzE,IAAA,OAAO,QAAA;AAAA,EACX,SAAS,KAAA,EAAO;AACZ,IAAA,MAAA,EAAQ,KAAA,CAAM,qCAAA,EAAuC,EAAE,KAAA,EAAO,CAAA;AAC9D,IAAA,MAAM,KAAA;AAAA,EACV;AACJ;;;ACVG,IAAM,aAAA,GAAgB,CAAC,MAAA,EAAuB,MAAA,KAAoC;AACrF,EAAA,MAAM,MAAA,GAAS,oBAAoB,MAAM,CAAA;AACzC,EAAA,MAAM,OAAA,GAA0B,EAAE,MAAA,EAAQ,MAAA,EAAO;AAEjD,EAAA,OAAO;AAAA,IACH,oBAAA,EAAsB,qBAAqB,OAAO;AAAA,GACtD;AACJ","file":"index.mjs","sourcesContent":["import OpenAI from 'openai';\nimport { ChatGptConfig } from './types';\n\nexport const createChatGptClient = (config: ChatGptConfig): OpenAI => {\n return new OpenAI({\n apiKey: config.apiKey,\n organization: config.organization,\n project: config.project,\n });\n};\n","import { ChatGptContext, CreateChatCompletionInput, CreateChatCompletionOutput } from '../types';\n\nexport const createChatCompletion =\n (ctx: ChatGptContext) =>\n async (input: CreateChatCompletionInput): Promise<CreateChatCompletionOutput> => {\n const { client, logger } = ctx;\n\n logger?.debug('chat-gpt:createChatCompletion:start', { data: input });\n\n try {\n const response = await client.chat.completions.create(input as any);\n\n logger?.debug('chat-gpt:createChatCompletion:success', { data: response });\n\n return response as CreateChatCompletionOutput;\n } catch (error) {\n logger?.debug('chat-gpt:createChatCompletion:error', { error });\n throw error;\n }\n };\n","import OpenAI from 'openai';\nimport { ChatGptConfig, ChatGptContext, Logger } from './types';\nimport { createChatGptClient } from './client';\nimport { createChatCompletion } from './operations/create-chat-completion';\n\nexport interface ChatGptAdapter {\n createChatCompletion: ReturnType<typeof createChatCompletion>;\n}\n\nexport const createAdapter = (config: ChatGptConfig, logger?: Logger): ChatGptAdapter => {\n const client = createChatGptClient(config);\n const context: ChatGptContext = { client, logger };\n\n return {\n createChatCompletion: createChatCompletion(context),\n };\n};\n"]}
package/package.json ADDED
@@ -0,0 +1,37 @@
1
+ {
2
+ "name": "@vitkuz/vitkuz-chat-gpt-apapter",
3
+ "version": "1.1.0",
4
+ "main": "./dist/index.js",
5
+ "module": "./dist/index.mjs",
6
+ "types": "./dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.mjs",
11
+ "require": "./dist/index.js"
12
+ }
13
+ },
14
+ "files": [
15
+ "dist"
16
+ ],
17
+ "scripts": {
18
+ "pub": "npm publish --access public",
19
+ "build": "tsup",
20
+ "dev": "tsup --watch",
21
+ "prepublishOnly": "npm run format && npm run build",
22
+ "test": "tsx test/create-chat-completion.test.ts",
23
+ "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\""
24
+ },
25
+ "dependencies": {
26
+ "openai": "^4.77.0"
27
+ },
28
+ "devDependencies": {
29
+ "@types/node": "^22.10.2",
30
+ "dotenv": "^17.2.3",
31
+ "prettier": "^3.7.4",
32
+ "rimraf": "^6.1.2",
33
+ "tsup": "^8.3.5",
34
+ "tsx": "^4.19.2",
35
+ "typescript": "^5.7.2"
36
+ }
37
+ }