@maximai/maxim-js-langchain
Version:
This is the langchain wrapper built for (Maxim JS SDK)[https://www.npmjs.com/package/@maximai/maxim-js].
168 lines (167 loc) • 5.61 kB
JavaScript
"use strict";
/**
* Models for LangChain logging and tracing functionality.
* This module contains data models used for tracking and logging LangChain operations,
* including metadata storage and run information.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.SpanContainer = exports.TraceContainer = exports.Container = exports.Metadata = exports.MetadataKeys = void 0;
exports.MetadataKeys = [
"sessionId",
"traceId",
"spanId",
"chainName",
"spanName",
"traceName",
"generationName",
"retrievalName",
"generationTags",
"retrievalTags",
"traceTags",
"chainTags",
];
class Metadata {
constructor(metadata) {
var _a, _b, _c, _d;
if (!metadata)
return;
this.sessionId = typeof metadata["sessionId"] === "string" ? metadata["sessionId"] : undefined;
this.traceId = typeof metadata["traceId"] === "string" ? metadata["traceId"] : undefined;
this.spanId = typeof metadata["spanId"] === "string" ? metadata["spanId"] : undefined;
this.spanName = typeof metadata["spanName"] === "string" ? metadata["spanName"] : undefined;
this.chainName = typeof metadata["chainName"] === "string" ? metadata["chainName"] : undefined;
this.traceName = typeof metadata["traceName"] === "string" ? metadata["traceName"] : undefined;
this.generationName = typeof metadata["generationName"] === "string" ? metadata["generationName"] : undefined;
this.retrievalName = typeof metadata["retrievalName"] === "string" ? metadata["retrievalName"] : undefined;
this.generationTags = (_a = metadata["generationTags"]) !== null && _a !== void 0 ? _a : {};
this.retrievalTags = (_b = metadata["retrievalTags"]) !== null && _b !== void 0 ? _b : {};
this.traceTags = (_c = metadata["traceTags"]) !== null && _c !== void 0 ? _c : {};
this.chainTags = (_d = metadata["chainTags"]) !== null && _d !== void 0 ? _d : {};
}
toJSON() {
return {
sessionId: this.sessionId,
traceId: this.traceId,
spanId: this.spanId,
chainName: this.chainName,
spanName: this.spanName,
traceName: this.traceName,
generationName: this.generationName,
retrievalName: this.retrievalName,
generationTags: this.generationTags,
retrievalTags: this.retrievalTags,
traceTags: this.traceTags,
chainTags: this.chainTags,
};
}
}
exports.Metadata = Metadata;
class Container {
constructor(logger, _id, _type, _name, _parentId, markCreated = false) {
this.logger = logger;
this._id = _id;
this._type = _type;
this._name = _name;
this._parentId = _parentId;
this._created = false;
this._created = markCreated;
}
get id() {
return this._id;
}
get type() {
return this._type;
}
get parentId() {
return this._parentId;
}
set parentId(id) {
this._parentId = id;
}
isCreated() {
return this._created;
}
}
exports.Container = Container;
class TraceContainer extends Container {
constructor(logger, traceId, traceName, parentId, markCreated = false) {
super(logger, traceId, "trace", traceName, parentId, markCreated);
}
create(tags) {
const config = {
id: this.id,
name: this._name,
tags,
};
if (this.parentId) {
config.sessionId = this.parentId;
}
this.logger.trace(config);
this._created = true;
}
addGeneration(config) {
return this.logger.traceGeneration(this.id, config);
}
addRetrieval(config) {
return this.logger.traceRetrieval(this.id, config);
}
addEvent(eventId, name, tags) {
this.logger.traceEvent(this.id, eventId, name, tags);
}
addSpan(config) {
return this.logger.traceSpan(this.id, config);
}
addTags(tags) {
Object.entries(tags).forEach(([key, value]) => {
this.logger.traceTag(this.id, key, value);
});
}
addToolCall(config) {
return this.logger.traceToolCall(this.id, config);
}
end() {
this.logger.traceEnd(this.id);
}
}
exports.TraceContainer = TraceContainer;
class SpanContainer extends Container {
constructor(logger, spanId, spanName, parentId, markCreated = false) {
super(logger, spanId, "span", spanName, parentId, markCreated);
}
create(tags) {
if (!this.parentId) {
throw new Error("[MaximSDK] Span without a parent is invalid");
}
const config = {
id: this.id,
name: this._name,
tags,
};
this.logger.traceSpan(this.parentId, config);
this._created = true;
}
addGeneration(config) {
return this.logger.spanGeneration(this.id, config);
}
addRetrieval(config) {
return this.logger.spanRetrieval(this.id, config);
}
addEvent(eventId, name, tags) {
this.logger.spanEvent(this.id, eventId, name, tags);
}
addSpan(config) {
return this.logger.spanSpan(this.id, config);
}
addTags(tags) {
Object.entries(tags).forEach(([key, value]) => {
this.logger.spanTag(this.id, key, value);
});
}
addToolCall(config) {
return this.logger.spanToolCall(this.id, config);
}
end() {
this.logger.spanEnd(this.id);
}
}
exports.SpanContainer = SpanContainer;