UNPKG

@autobe/agent

Version:

AI backend server code generator

64 lines 2.52 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.mergeSystemMessages = void 0; /** * Merges multiple system messages into a single one. * * Some models (e.g. Qwen) require exactly one system message at the beginning * of the conversation. This function intercepts API requests and consolidates * all system messages into one. * * @param agent MicroAgentica instance to patch * @param vendor Vendor configuration containing model name */ const mergeSystemMessages = (agent, vendor) => { if (vendor.model.includes("qwen")) { agent.on("request", (e) => __awaiter(void 0, void 0, void 0, function* () { var _a; const body = e.body; const originalMessages = ((_a = body.messages) !== null && _a !== void 0 ? _a : []); body.messages = consolidateSystemMessages(originalMessages); })); } }; exports.mergeSystemMessages = mergeSystemMessages; function consolidateSystemMessages(messages) { const systems = []; const others = []; for (const message of messages) { if (message.role === "system") systems.push(message); else others.push(message); } if (systems.length <= 1) return [...systems, ...others]; return [ { role: "system", content: systems .map((msg) => flattenSystemContent(msg.content)) .filter((str) => str.length !== 0) .join("\n\n"), }, ...others, ]; } function flattenSystemContent(content) { if (typeof content === "string") return content; return content .map((part) => ("text" in part ? part.text : "")) .filter((str) => str.length !== 0) .join("\n"); } //# sourceMappingURL=mergeSystemMessages.js.map