large-models-interface
Version:
A comprehensive, unified interface for all types of AI models - natural language, vision, audio, and video. Supports 51 providers with dynamic model discovery and multi-modal capabilities.
59 lines (51 loc) • 1.74 kB
JavaScript
/**
* @file src/interfaces/gooseai.js
* @class GooseAI
* @description Wrapper class for the GooseAI API, extends BaseInterface.
* @param {string} apiKey - The API key for the GooseAI API.
*/
const BaseInterface = require('./baseInterface'); // Adjust the path as necessary
const { gooseaiApiKey } = require('../utils/loadApiKeysFromEnv.js');
const { getConfig, loadProviderConfig } = require('../utils/configManager.js');
const interfaceName = 'gooseai';
loadProviderConfig(interfaceName);
const config = getConfig();
class GooseAI extends BaseInterface {
/**
* Constructor for the GooseAI class.
* @param {string} apiKey - The API key for the GooseAI API.
*/
constructor(apiKey) {
super(interfaceName, apiKey || gooseaiApiKey, config[interfaceName].url);
}
/**
* Method to construct the request URL.
* @param {string} model - The model to use for the request.
* @returns {string} The request URL.
*/
getRequestUrl(model) {
return `/${model}/completions`;
}
/**
* Builds the request body for the API request.
*
* @param {string} model - The model to use for the request.
* @param {Array<object>} messages - An array of message objects.
* @param {number} max_tokens - The maximum number of tokens for the response.
* @param {object} options - Additional options for the API request.
* @returns {object} The constructed request body.
*/
buildRequestBody(model, messages, max_tokens, options) {
const formattedPrompt = messages
.map((message) => message.content)
.join(' ');
const requestBody = {
prompt: formattedPrompt,
model,
max_tokens,
...options,
};
return requestBody;
}
}
module.exports = GooseAI;