langsmith
Version:
Client library to connect to the LangSmith LLM Tracing and Evaluation Platform.
41 lines (40 loc) • 1.91 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.syncExamplePromises = exports.evaluatorLogFeedbackPromises = exports.testWrapperAsyncLocalStorageInstance = exports.DEFAULT_TEST_CLIENT = void 0;
exports.trackingEnabled = trackingEnabled;
exports._logTestFeedback = _logTestFeedback;
const node_async_hooks_1 = require("node:async_hooks");
const client_js_1 = require("../../client.cjs");
const env_js_1 = require("../env.cjs");
const env_js_2 = require("../../env.cjs");
exports.DEFAULT_TEST_CLIENT = new client_js_1.Client();
exports.testWrapperAsyncLocalStorageInstance = new node_async_hooks_1.AsyncLocalStorage();
function trackingEnabled(context) {
if (typeof context.enableTestTracking === "boolean") {
return context.enableTestTracking;
}
if ((0, env_js_1.getEnvironmentVariable)("LANGSMITH_TEST_TRACKING") === "false") {
return false;
}
return (0, env_js_2.isTracingEnabled)();
}
exports.evaluatorLogFeedbackPromises = new Set();
exports.syncExamplePromises = new Map();
function _logTestFeedback(params) {
const { exampleId, feedback, context, runTree, client, sourceRunId } = params;
if (trackingEnabled(context)) {
if (exampleId === undefined) {
throw new Error("Could not log feedback to LangSmith: missing example id. Please contact us for help.");
}
if (runTree === undefined) {
throw new Error("Could not log feedback to LangSmith: missing run information. Please contact us for help.");
}
exports.evaluatorLogFeedbackPromises.add((async () => {
await exports.syncExamplePromises.get(exampleId);
await client?.logEvaluationFeedback(feedback, runTree, sourceRunId !== undefined
? { __run: { run_id: sourceRunId } }
: undefined);
})());
}
context.onFeedbackLogged?.(feedback);
}