Skip to content

Commit

Permalink
1.4.1 - adding OpenAI assistants, vision, text to speech and function…
Browse files Browse the repository at this point in the history
… calling
  • Loading branch information
OvidijusParsiunas committed Nov 12, 2023
1 parent 749c4b6 commit e4732e0
Show file tree
Hide file tree
Showing 29 changed files with 8,090 additions and 6,849 deletions.
14,121 changes: 7,478 additions & 6,643 deletions component/custom-elements.json

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions component/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion component/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "deep-chat",
"version": "1.4.0",
"version": "1.4.1",
"description": "Customizable chat component for AI APIs",
"main": "./dist/deepChat.js",
"module": "./dist/deepChat.js",
Expand Down
2 changes: 1 addition & 1 deletion component/src/services/openAI/openAIAssistantIO.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ export class OpenAIAssistantIO extends DirectServiceIO {
}

private processMessages(pMessages: MessageContent[], file_ids?: string[]) {
const totalMessagesMaxCharLength = this.totalMessagesMaxCharLength || OpenAIUtils.CONVERSE_MAX_CHAR_LENGTH;
const totalMessagesMaxCharLength = this.totalMessagesMaxCharLength || -1;
return MessageLimitUtils.getCharacterLimitMessages(pMessages, totalMessagesMaxCharLength).map((message) => {
return {content: message.text || '', role: message.role === MessageUtils.AI_ROLE ? 'assistant' : 'user', file_ids};
});
Expand Down
3 changes: 1 addition & 2 deletions component/src/services/openAI/openAIChatIO.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,8 @@ export class OpenAIChatIO extends DirectServiceIO {
// prettier-ignore
private preprocessBody(body: OpenAIConverseBodyInternal, pMessages: MessageContent[]) {
const bodyCopy = JSON.parse(JSON.stringify(body));
const totalMessagesMaxCharLength = this.totalMessagesMaxCharLength || OpenAIUtils.CONVERSE_MAX_CHAR_LENGTH;
const processedMessages = MessageLimitUtils.getCharacterLimitMessages(pMessages,
totalMessagesMaxCharLength - this._systemMessage.content.length)
this.totalMessagesMaxCharLength ? this.totalMessagesMaxCharLength - this._systemMessage.content.length : -1)
.map((message) => {
return {content: OpenAIChatIO.getContent(message),
role: message.role === MessageUtils.AI_ROLE ? 'assistant' : 'user'};});
Expand Down
9 changes: 2 additions & 7 deletions component/src/services/openAI/openAIImagesIO.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,12 @@ export class OpenAIImagesIO extends DirectServiceIO {

url = ''; // set dynamically
permittedErrorPrefixes = ['Incorrect', 'Invalid input image'];
private readonly _maxCharLength: number = OpenAIUtils.FILE_MAX_CHAR_LENGTH;

constructor(deepChat: DeepChat) {
const {directConnection, textInput} = deepChat;
const {directConnection} = deepChat;
const apiKey = directConnection?.openAI;
const defaultFile = {images: {files: {acceptedFormats: '.png', maxNumberOfFiles: 2}}};
super(deepChat, OpenAIUtils.buildKeyVerificationDetails(), OpenAIUtils.buildHeaders, apiKey, defaultFile);
if (textInput?.characterLimit) this._maxCharLength = textInput.characterLimit;
const config = directConnection?.openAI?.images as NonNullable<OpenAI['images']>;
if (this.camera) {
const dimension = typeof config === 'object' && config.size ? Number.parseInt(config.size) : 1024;
Expand All @@ -61,10 +59,7 @@ export class OpenAIImagesIO extends DirectServiceIO {

private preprocessBody(body: OpenAIImages, lastMessage?: string) {
const bodyCopy = JSON.parse(JSON.stringify(body));
if (lastMessage && lastMessage !== '') {
const processedMessage = lastMessage.substring(0, this._maxCharLength);
bodyCopy.prompt = processedMessage;
}
if (lastMessage && lastMessage !== '') bodyCopy.prompt = lastMessage;
return bodyCopy;
}

Expand Down
8 changes: 1 addition & 7 deletions component/src/services/openAI/openAISpeechToTextIO.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,12 @@ export class OpenAISpeechToTextIO extends DirectServiceIO {
url = ''; // set dynamically
permittedErrorPrefixes = ['Invalid'];
textInputPlaceholderText = 'Upload an audio file';
private readonly _maxCharLength: number = OpenAIUtils.FILE_MAX_CHAR_LENGTH;
private _service_url: string = OpenAISpeechToTextIO.AUDIO_TRANSCRIPTIONS_URL;

constructor(deepChat: DeepChat) {
const {textInput} = deepChat;
const directConnectionCopy = JSON.parse(JSON.stringify(deepChat.directConnection));
const apiKey = directConnectionCopy?.openAI;
super(deepChat, OpenAIUtils.buildKeyVerificationDetails(), OpenAIUtils.buildHeaders, apiKey, {audio: {}});
if (textInput?.characterLimit) this._maxCharLength = textInput.characterLimit;
const config = directConnectionCopy?.openAI?.audio as NonNullable<OpenAI['speechToText']>;
if (typeof config === 'object') {
this.processConfig(config);
Expand Down Expand Up @@ -72,10 +69,7 @@ export class OpenAISpeechToTextIO extends DirectServiceIO {
private preprocessBody(body: OpenAISpeechToText, messages: MessageContent[]) {
const bodyCopy = JSON.parse(JSON.stringify(body));
const lastMessage = messages[messages.length - 1]?.text?.trim();
if (lastMessage && lastMessage !== '') {
const processedMessage = lastMessage.substring(0, this._maxCharLength);
bodyCopy.prompt = processedMessage;
}
if (lastMessage && lastMessage !== '') bodyCopy.prompt = lastMessage;
return bodyCopy;
}

Expand Down
6 changes: 1 addition & 5 deletions component/src/services/openAI/openAITextToSpeechIO.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ export class OpenAITextToSpeechIO extends DirectServiceIO {
permittedErrorPrefixes = ['Invalid'];
private static readonly DEFAULT_MODEL = 'tts-1';
private static readonly DEFAULT_VOIDE = 'alloy';
private readonly _maxCharLength: number = OpenAIUtils.FILE_MAX_CHAR_LENGTH;
textInputPlaceholderText: string;

introPanelMarkUp = `
Expand All @@ -25,11 +24,9 @@ export class OpenAITextToSpeechIO extends DirectServiceIO {
<p>Click <a href="https://platform.openai.com/docs/guides/text-to-speech">here</a> for more information.</p>`;

constructor(deepChat: DeepChat) {
const {textInput} = deepChat;
const directConnectionCopy = JSON.parse(JSON.stringify(deepChat.directConnection)) as DirectConnection;
const apiKey = directConnectionCopy?.openAI;
super(deepChat, OpenAIUtils.buildKeyVerificationDetails(), OpenAIUtils.buildHeaders, apiKey);
if (textInput?.characterLimit) this._maxCharLength = textInput.characterLimit;
const config = directConnectionCopy?.openAI?.textToSpeech as NonNullable<OpenAI['textToSpeech']>;
if (typeof config === 'object') Object.assign(this.rawBody, config);
this.rawBody.model ??= OpenAITextToSpeechIO.DEFAULT_MODEL;
Expand All @@ -42,8 +39,7 @@ export class OpenAITextToSpeechIO extends DirectServiceIO {
const bodyCopy = JSON.parse(JSON.stringify(body));
const lastMessage = messages[messages.length - 1]?.text?.trim();
if (lastMessage && lastMessage !== '') {
const processedMessage = lastMessage.substring(0, this._maxCharLength);
bodyCopy.input = processedMessage;
bodyCopy.input = lastMessage;
}
return bodyCopy;
}
Expand Down
4 changes: 0 additions & 4 deletions component/src/services/openAI/utils/openAIUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,6 @@ import {RequestUtils} from '../../../utils/HTTP/requestUtils';
import {ServiceIO} from '../../serviceIO';

export class OpenAIUtils {
// 13352 roughly adds up to 3,804 tokens just to be safe
public static readonly CONVERSE_MAX_CHAR_LENGTH: number = 13352;
public static readonly FILE_MAX_CHAR_LENGTH: number = 1000;

public static buildHeaders(key: string) {
return {
Authorization: `Bearer ${key}`,
Expand Down
1 change: 1 addition & 0 deletions component/src/services/utils/messageLimitUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import {MessageContent} from '../../types/messages';

export class MessageLimitUtils {
public static getCharacterLimitMessages(messages: MessageContent[], limit: number) {
if (limit === -1) return messages;
let totalCharacters = 0;
let i = messages.length - 1;
for (i; i >= 0; i -= 1) {
Expand Down
30 changes: 15 additions & 15 deletions example-servers/nextjs/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion example-servers/nextjs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
},
"dependencies": {
"axios": "^1.4.0",
"deep-chat-react": "^1.4.0",
"deep-chat-react": "^1.4.1",
"eventsource-parser": "^1.0.0",
"next": "13.4.9",
"react": "^18.2.0",
Expand Down
14 changes: 7 additions & 7 deletions example-servers/sveltekit/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion example-servers/sveltekit/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
},
"type": "module",
"dependencies": {
"deep-chat": "^1.4.0",
"deep-chat": "^1.4.1",
"eventsource-parser": "^1.0.0"
}
}
30 changes: 15 additions & 15 deletions example-servers/ui/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion example-servers/ui/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"@types/node": "^16.18.38",
"@types/react": "^18.2.14",
"@types/react-dom": "^18.2.6",
"deep-chat-react": "^1.4.0",
"deep-chat-react": "^1.4.1",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-scripts": "5.0.1",
Expand Down
18 changes: 9 additions & 9 deletions other-packages/react/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit e4732e0

Please sign in to comment.