@copilotkit/runtime
Version:
<img src="https://github.com/user-attachments/assets/0a6b64d9-e193-4940-a3f6-60334ac34084" alt="banner" style="border-radius: 12px; border: 2px solid #d6d4fa;" />
93 lines (91 loc) • 3.39 kB
JavaScript
require("reflect-metadata");
const require_runtime = require('../../_virtual/_rolldown/runtime.cjs');
const require_utils = require('../openai/utils.cjs');
let _copilotkit_shared = require("@copilotkit/shared");
//#region src/service-adapters/unify/unify-adapter.ts
var UnifyAdapter = class {
get name() {
return "UnifyAdapter";
}
constructor(options) {
this.provider = "unify";
if (options?.apiKey) this.apiKey = options.apiKey;
else this.apiKey = "UNIFY_API_KEY";
this.model = options?.model;
this.start = true;
}
async process(request) {
const tools = request.actions.map(require_utils.convertActionInputToOpenAITool);
const OpenAI = require("openai").default;
const openai = new OpenAI({
apiKey: this.apiKey,
baseURL: "https://api.unify.ai/v0/"
});
const forwardedParameters = request.forwardedParameters;
const messages = request.messages.map((m) => require_utils.convertMessageToOpenAIMessage(m));
const stream = await openai.chat.completions.create({
model: this.model,
messages,
stream: true,
...tools.length > 0 && { tools },
...forwardedParameters?.temperature && { temperature: forwardedParameters.temperature }
});
let model = null;
let currentMessageId;
let currentToolCallId;
request.eventSource.stream(async (eventStream$) => {
let mode = null;
for await (const chunk of stream) {
if (this.start) {
model = chunk.model;
currentMessageId = (0, _copilotkit_shared.randomId)();
eventStream$.sendTextMessageStart({ messageId: currentMessageId });
eventStream$.sendTextMessageContent({
messageId: currentMessageId,
content: `Model used: ${model}\n`
});
eventStream$.sendTextMessageEnd({ messageId: currentMessageId });
this.start = false;
}
const toolCall = chunk.choices[0].delta.tool_calls?.[0];
const content = chunk.choices[0].delta.content;
if (mode === "message" && toolCall?.id) {
mode = null;
eventStream$.sendTextMessageEnd({ messageId: currentMessageId });
} else if (mode === "function" && (toolCall === void 0 || toolCall?.id)) {
mode = null;
eventStream$.sendActionExecutionEnd({ actionExecutionId: currentToolCallId });
}
if (mode === null) {
if (toolCall?.id) {
mode = "function";
currentToolCallId = toolCall.id;
eventStream$.sendActionExecutionStart({
actionExecutionId: currentToolCallId,
actionName: toolCall.function.name
});
} else if (content) {
mode = "message";
currentMessageId = chunk.id;
eventStream$.sendTextMessageStart({ messageId: currentMessageId });
}
}
if (mode === "message" && content) eventStream$.sendTextMessageContent({
messageId: currentMessageId,
content
});
else if (mode === "function" && toolCall?.function?.arguments) eventStream$.sendActionExecutionArgs({
actionExecutionId: currentToolCallId,
args: toolCall.function.arguments
});
}
if (mode === "message") eventStream$.sendTextMessageEnd({ messageId: currentMessageId });
else if (mode === "function") eventStream$.sendActionExecutionEnd({ actionExecutionId: currentToolCallId });
eventStream$.complete();
});
return { threadId: request.threadId || (0, _copilotkit_shared.randomUUID)() };
}
};
//#endregion
exports.UnifyAdapter = UnifyAdapter;
//# sourceMappingURL=unify-adapter.cjs.map