@genai-impact/ecologits-mistral
Version:
Ecologits.js Calculator for the MistralAI API
37 lines • 1.67 kB
JavaScript
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