remix-nlux
Version:
Remix IDE NLUX integration. Remix IDE is the leading IDE for building and deploying smart contracts on Ethereum. NLUX is a JavaScript and React library for building conversational AI experiences.
44 lines (34 loc) • 1.16 kB
text/typescript
import {ChatAdapterBuilder, ChatAdapterOptions, createUnsafeChatAdapter} from '@nlux/openai';
import {NluxUsageError} from '@shared/types/error';
const source = 'hooks/getAdapterBuilder';
export const getAdapterBuilder = <AiMsg>(options: ChatAdapterOptions): ChatAdapterBuilder<AiMsg> => {
const {
apiKey,
dataTransferMode,
systemMessage,
model,
} = options || {};
if (dataTransferMode && dataTransferMode !== 'stream' && dataTransferMode !== 'batch') {
throw new NluxUsageError({
source,
message: 'Data transfer mode not supported',
});
}
if (!apiKey) {
throw new NluxUsageError({
source,
message: 'API key is required',
});
}
let newAdapter = createUnsafeChatAdapter<AiMsg>().withApiKey(apiKey);
if (model !== undefined) {
newAdapter = newAdapter.withModel(model);
}
if (dataTransferMode) {
newAdapter = newAdapter.withDataTransferMode(dataTransferMode);
}
if (systemMessage) {
newAdapter = newAdapter.withSystemMessage(systemMessage);
}
return newAdapter;
};