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;" />

122 lines (120 loc) 4.59 kB
require("reflect-metadata"); const require_runtime = require('../../_virtual/_rolldown/runtime.cjs'); const require_utils = require('../openai/utils.cjs'); const require_error_utils = require('../shared/error-utils.cjs'); const require_sdk_client_utils = require('../shared/sdk-client-utils.cjs'); let _ai_sdk_openai = require("@ai-sdk/openai"); let _copilotkit_shared = require("@copilotkit/shared"); //#region src/service-adapters/groq/groq-adapter.ts const DEFAULT_MODEL = "llama-3.3-70b-versatile"; var GroqAdapter = class { get groq() { return this._groq; } get name() { return "GroqAdapter"; } constructor(params) { this.model = DEFAULT_MODEL; this.provider = "groq"; this.disableParallelToolCalls = false; if (params?.groq) this._groq = params.groq; if (params?.model) this.model = params.model; this.disableParallelToolCalls = params?.disableParallelToolCalls || false; } getLanguageModel() { const groq = this.ensureGroq(); const options = require_sdk_client_utils.getSdkClientOptions(groq); return (0, _ai_sdk_openai.createOpenAI)({ baseURL: groq.baseURL, apiKey: groq.apiKey, headers: options.defaultHeaders, fetch: options.fetch, name: "groq" })(this.model); } ensureGroq() { if (!this._groq) { const { Groq } = require("groq-sdk"); this._groq = new Groq({}); } return this._groq; } async process(request) { const { threadId, model = this.model, messages, actions, eventSource, forwardedParameters } = request; const tools = actions.map(require_utils.convertActionInputToOpenAITool); let openaiMessages = messages.map((m) => require_utils.convertMessageToOpenAIMessage(m, { keepSystemRole: true })); openaiMessages = require_utils.limitMessagesToTokenCount(openaiMessages, tools, model); let toolChoice = forwardedParameters?.toolChoice; if (forwardedParameters?.toolChoice === "function") toolChoice = { type: "function", function: { name: forwardedParameters.toolChoiceFunctionName } }; let stream; try { stream = await this.ensureGroq().chat.completions.create({ model, stream: true, messages: openaiMessages, ...tools.length > 0 && { tools }, ...forwardedParameters?.maxTokens && { max_tokens: forwardedParameters.maxTokens }, ...forwardedParameters?.stop && { stop: forwardedParameters.stop }, ...toolChoice && { tool_choice: toolChoice }, ...this.disableParallelToolCalls && { parallel_tool_calls: false }, ...forwardedParameters?.temperature && { temperature: forwardedParameters.temperature } }); } catch (error) { throw require_error_utils.convertServiceAdapterError(error, "Groq"); } eventSource.stream(async (eventStream$) => { let mode = null; let currentMessageId; let currentToolCallId; try { for await (const chunk of stream) { 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, parentMessageId: chunk.id }); } 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 }); } catch (error) { throw require_error_utils.convertServiceAdapterError(error, "Groq"); } eventStream$.complete(); }); return { threadId: request.threadId || (0, _copilotkit_shared.randomUUID)() }; } }; //#endregion exports.GroqAdapter = GroqAdapter; //# sourceMappingURL=groq-adapter.cjs.map