UNPKG

@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
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