@aj-archipelago/cortex
Version:
Cortex is a GraphQL API for AI. It provides a simple, extensible interface for using AI services from OpenAI, Azure and others.
58 lines (47 loc) • 1.86 kB
JavaScript
// AzureTranslatePlugin.js
import ModelPlugin from './modelPlugin.js';
import logger from '../../lib/logger.js';
class AzureTranslatePlugin extends ModelPlugin {
constructor(pathway, model) {
super(pathway, model);
}
// Set up parameters specific to the Azure Translate API
getRequestParameters(text, parameters, prompt) {
const combinedParameters = { ...this.promptParameters, ...parameters };
const { modelPromptText } = this.getCompiledPrompt(text, parameters, prompt);
const requestParameters = {
data: [
{
Text: modelPromptText,
},
],
params: {
to: combinedParameters.to
}
};
return requestParameters;
}
// Execute the request to the Azure Translate API
async execute(text, parameters, prompt, cortexRequest) {
const requestParameters = this.getRequestParameters(text, parameters, prompt);
cortexRequest.data = requestParameters.data;
cortexRequest.params = requestParameters.params;
return this.executeRequest(cortexRequest);
}
// Parse the response from the Azure Translate API
parseResponse(data) {
if (Array.isArray(data) && data.length > 0 && data[0].translations) {
return data[0].translations[0].text.trim();
} else {
return data;
}
}
// Override the logging function to display the request and response
logRequestData(data, responseData, prompt) {
const modelInput = data[0].Text;
logger.verbose(`${modelInput}`);
logger.verbose(`${this.parseResponse(responseData)}`);
prompt && prompt.debugInfo && (prompt.debugInfo += `\n${JSON.stringify(data)}`);
}
}
export default AzureTranslatePlugin;