@microsoft/teams-ai
Version:
SDK focused on building AI based applications for Microsoft Teams.
70 lines • 2.54 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.LlamaModel = void 0;
const axios_1 = __importDefault(require("axios"));
const Colorize_1 = require("../internals/Colorize");
class LlamaModel {
options;
_httpClient;
constructor(options) {
this.options = options;
// Create client
this._httpClient = axios_1.default.create({
validateStatus: (status) => status < 400 || status == 429,
headers: {
Authorization: `Bearer ${options.apiKey}`,
'Content-Type': 'application/json',
'User-Agent': '@microsoft/teams-ai-v1'
}
});
}
async completePrompt(context, memory, functions, tokenizer, template) {
const max_input_tokens = template.config.completion.max_input_tokens;
const result = await template.prompt.renderAsMessages(context, memory, functions, tokenizer, max_input_tokens);
if (result.tooLong) {
return {
status: 'too_long',
error: new Error('The generated prompt length was too long')
};
}
let last = result.output[result.output.length - 1];
if (last?.role !== 'user') {
last = undefined;
}
let res;
if (this.options.logRequests) {
console.log(Colorize_1.Colorize.title('CHAT PROMPT:'));
console.log(Colorize_1.Colorize.output(result.output));
}
try {
res = await this._httpClient.post(this.options.endpoint, {
input_data: {
input_string: result.output,
parameters: template.config.completion
}
});
if (this.options.logRequests) {
console.log(Colorize_1.Colorize.title('CHAT RESPONSE:'));
console.log(Colorize_1.Colorize.value('status', res.status));
console.log(Colorize_1.Colorize.output(res.data.output));
}
}
catch (err) {
console.error(err);
throw err;
}
return {
status: 'success',
input: last,
message: {
role: 'assistant',
content: res.data.output
}
};
}
}
exports.LlamaModel = LlamaModel;
//# sourceMappingURL=LlamaModel.js.map