From e02120d731f2e4fda75e9dba94a48e6659808ff5 Mon Sep 17 00:00:00 2001 From: Na'aman Hirschfeld Date: Thu, 7 Dec 2023 16:03:34 +0100 Subject: [PATCH] chore: fix handling of names and content in openai connector --- .../{tests => src}/client.spec.ts | 0 .../{tests => src}/handlers.spec.ts | 0 .../{tests => src}/utils.spec.ts | 0 services/cohere-connector/tsconfig.json | 3 +- .../{tests => src}/client.spec.ts | 0 .../{tests => src}/handlers.spec.ts | 0 .../{tests => src}/utils.spec.ts | 53 +++++++++++++++++++ services/openai-connector/src/utils.ts | 5 +- services/openai-connector/tsconfig.json | 3 +- 9 files changed, 58 insertions(+), 6 deletions(-) rename services/cohere-connector/{tests => src}/client.spec.ts (100%) rename services/cohere-connector/{tests => src}/handlers.spec.ts (100%) rename services/cohere-connector/{tests => src}/utils.spec.ts (100%) rename services/openai-connector/{tests => src}/client.spec.ts (100%) rename services/openai-connector/{tests => src}/handlers.spec.ts (100%) rename services/openai-connector/{tests => src}/utils.spec.ts (71%) diff --git a/services/cohere-connector/tests/client.spec.ts b/services/cohere-connector/src/client.spec.ts similarity index 100% rename from services/cohere-connector/tests/client.spec.ts rename to services/cohere-connector/src/client.spec.ts diff --git a/services/cohere-connector/tests/handlers.spec.ts b/services/cohere-connector/src/handlers.spec.ts similarity index 100% rename from services/cohere-connector/tests/handlers.spec.ts rename to services/cohere-connector/src/handlers.spec.ts diff --git a/services/cohere-connector/tests/utils.spec.ts b/services/cohere-connector/src/utils.spec.ts similarity index 100% rename from services/cohere-connector/tests/utils.spec.ts rename to services/cohere-connector/src/utils.spec.ts diff --git a/services/cohere-connector/tsconfig.json b/services/cohere-connector/tsconfig.json index 9aa05fe8..c07f0dcf 100644 --- a/services/cohere-connector/tsconfig.json +++ b/services/cohere-connector/tsconfig.json @@ -5,8 +5,7 @@ "paths": { "@/*": ["src/*"], "gen/*": ["../../gen/ts/*"], - "shared/*": ["../../shared/ts/src/*"], - "tests/*": ["tests/*"] + "shared/*": ["../../shared/ts/src/*"] }, "types": ["vitest/globals"] }, diff --git a/services/openai-connector/tests/client.spec.ts b/services/openai-connector/src/client.spec.ts similarity index 100% rename from services/openai-connector/tests/client.spec.ts rename to services/openai-connector/src/client.spec.ts diff --git a/services/openai-connector/tests/handlers.spec.ts b/services/openai-connector/src/handlers.spec.ts similarity index 100% rename from services/openai-connector/tests/handlers.spec.ts rename to services/openai-connector/src/handlers.spec.ts diff --git a/services/openai-connector/tests/utils.spec.ts b/services/openai-connector/src/utils.spec.ts similarity index 71% rename from services/openai-connector/tests/utils.spec.ts rename to services/openai-connector/src/utils.spec.ts index fd3c123a..215dd1b3 100644 --- a/services/openai-connector/tests/utils.spec.ts +++ b/services/openai-connector/src/utils.spec.ts @@ -138,5 +138,58 @@ describe('utils tests', () => { expect(result.presence_penalty).toBeUndefined(); expect(result.frequency_penalty).toBeUndefined(); }); + + it('should handle empty names and whitespace names by changing them to undefined', () => { + const request: OpenAIPromptRequest = { + messages: [ + { + content: 'test', + name: '', + role: OpenAIMessageRole.OPEN_AI_MESSAGE_ROLE_USER, + }, + { + content: 'test', + name: ' ', + role: OpenAIMessageRole.OPEN_AI_MESSAGE_ROLE_USER, + }, + { + content: 'test', + name: 'a', + role: OpenAIMessageRole.OPEN_AI_MESSAGE_ROLE_USER, + }, + ], + model: OpenAIModel.OPEN_AI_MODEL_GPT3_5_TURBO_4K, + }; + + const result = createOpenAIRequest(request, true); + expect(Reflect.get(result.messages[0], 'name')).toBeUndefined(); + expect(Reflect.get(result.messages[1], 'name')).toBeUndefined(); + expect(Reflect.get(result.messages[2], 'name')).toEqual('a'); + }); + + it('should handle empty content and whitespace content by it to null', () => { + const request: OpenAIPromptRequest = { + messages: [ + { + content: '', + role: OpenAIMessageRole.OPEN_AI_MESSAGE_ROLE_USER, + }, + { + content: ' ', + role: OpenAIMessageRole.OPEN_AI_MESSAGE_ROLE_USER, + }, + { + content: 'test', + role: OpenAIMessageRole.OPEN_AI_MESSAGE_ROLE_USER, + }, + ], + model: OpenAIModel.OPEN_AI_MODEL_GPT3_5_TURBO_4K, + }; + + const result = createOpenAIRequest(request, true); + expect(Reflect.get(result.messages[0], 'content')).toBeNull(); + expect(Reflect.get(result.messages[1], 'content')).toBeNull(); + expect(Reflect.get(result.messages[2], 'content')).toBe('test'); + }); }); }); diff --git a/services/openai-connector/src/utils.ts b/services/openai-connector/src/utils.ts index 289a74b6..119ad3d3 100644 --- a/services/openai-connector/src/utils.ts +++ b/services/openai-connector/src/utils.ts @@ -106,9 +106,10 @@ export function createOpenAIRequest( frequency_penalty: frequencyPenalty, max_tokens: !!maxTokens && maxTokens > 0 ? maxTokens : undefined, messages: messages.map((msg) => { - const { content, role, ...rest } = msg; + const { content, role, name, ...rest } = msg; return { - content: content ?? null, + content: content?.trim() ? content.trim() : null, + name: name?.trim() ? name.trim() : undefined, role: getOpenAIMessageRole(role), ...rest, } as ChatCompletionMessageParam; diff --git a/services/openai-connector/tsconfig.json b/services/openai-connector/tsconfig.json index 9aa05fe8..c07f0dcf 100644 --- a/services/openai-connector/tsconfig.json +++ b/services/openai-connector/tsconfig.json @@ -5,8 +5,7 @@ "paths": { "@/*": ["src/*"], "gen/*": ["../../gen/ts/*"], - "shared/*": ["../../shared/ts/src/*"], - "tests/*": ["tests/*"] + "shared/*": ["../../shared/ts/src/*"] }, "types": ["vitest/globals"] },