UNPKG

@genai-impact/ecologits-mistral

Version:

Ecologits.js Calculator for the MistralAI API

37 lines 1.67 kB
import { Mistral } from "@mistralai/mistralai"; import ecologits from "@genai-impact/ecologits.js"; const PROVIDER = "mistralai"; export class MistralAiWrapper extends Mistral { constructor(options) { super(options); const _complete = this.chat.complete; const _stream = this.chat.stream; const complete = async (request, options) => { const timerStart = new Date().getTime(); const completion = await _complete(request, options); const requestLatency = new Date().getTime() - timerStart; const tokens = completion.usage?.completionTokens || 0; const impacts = ecologits.computeLlmImpacts(PROVIDER, request.model, tokens, requestLatency); return { ...completion, impacts }; }; this.chat.complete = complete; const streamWrapper = async function (request, options) { const timerStart = new Date().getTime(); const stream = await _stream(request, options); async function* iterator() { for await (const item of stream) { const tokens = item.data.usage?.completionTokens || 0; const requestLatency = new Date().getTime() - timerStart; const impacts = ecologits.computeLlmImpacts(PROVIDER, request.model, tokens, requestLatency); yield { ...item, data: { ...item.data, impacts }, }; } } return iterator(); }; this.chat.stream = streamWrapper; } } //# sourceMappingURL=tracer.js.map