@microsoft/teams-ai
Version:
SDK focused on building AI based applications for Microsoft Teams.
53 lines • 2.38 kB
JavaScript
;
/**
* @module teams-ai
*/
/**
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.FunctionResponseMessage = void 0;
const PromptSectionBase_1 = require("./PromptSectionBase");
const Utilities_1 = require("../Utilities");
/**
* Message containing the response to a function call.
*/
class FunctionResponseMessage extends PromptSectionBase_1.PromptSectionBase {
_text = '';
_length = -1;
name;
response;
/**
* Creates a new 'FunctionResponseMessage' instance.
* @param {string} name - Name of the function that was called.
* @param {any} response - The response returned by the called function.
* @param {number} tokens - Optional. Sizing strategy for this section. Defaults to `auto`.
* @param {string} functionPrefix - Optional. Prefix to use for function messages when rendering as text. Defaults to `user: ` to simulate the response coming from the user.
*/
constructor(name, response, tokens = -1, functionPrefix = 'user: ') {
super(tokens, true, '\n', functionPrefix);
this.name = name;
this.response = response;
}
/**
* @private
* @param {TurnContext} context - Context for the current turn of conversation.
* @param {Memory} memory - Memory to use for rendering.
* @param {PromptFunctions} functions - Prompt functions to use for rendering.
* @param {Tokenizer} tokenizer - Tokenizer to use for encoding text.
* @param {number} maxTokens - Maximum number of tokens allowed.
* @returns {Promise<RenderedPromptSection<Message[]>>} Rendered prompt section as a string.
*/
async renderAsMessages(context, memory, functions, tokenizer, maxTokens) {
// Calculate and cache response text and length
if (this._length < 0) {
this._text = Utilities_1.Utilities.toString(tokenizer, this.response);
this._length = tokenizer.encode(this.name).length + tokenizer.encode(this._text).length;
}
// Return output
return this.returnMessages([{ role: 'function', name: this.name, content: this._text }], this._length, tokenizer, maxTokens);
}
}
exports.FunctionResponseMessage = FunctionResponseMessage;
//# sourceMappingURL=FunctionResponseMessage.js.map