@sentry/core
Version:
Base implementation for all Sentry JavaScript SDKs
65 lines (61 loc) • 2.7 kB
JavaScript
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const exports$1 = require('../../exports.js');
const spanstatus = require('../spanstatus.js');
const genAiAttributes = require('../ai/gen-ai-attributes.js');
const utils = require('../ai/utils.js');
function setMessagesAttribute(span, messages, enableTruncation) {
if (Array.isArray(messages) && messages.length === 0) {
return;
}
const { systemInstructions, filteredMessages } = utils.extractSystemInstructions(messages);
if (systemInstructions) {
span.setAttributes({
[genAiAttributes.GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE]: systemInstructions
});
}
const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 1;
span.setAttributes({
[genAiAttributes.GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: enableTruncation ? utils.getTruncatedJsonString(filteredMessages) : utils.getJsonString(filteredMessages),
[genAiAttributes.GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength
});
}
const ANTHROPIC_ERROR_TYPE_TO_SPAN_STATUS = {
invalid_request_error: "invalid_argument",
authentication_error: "unauthenticated",
permission_error: "permission_denied",
not_found_error: "not_found",
request_too_large: "failed_precondition",
rate_limit_error: "resource_exhausted",
api_error: "internal_error",
overloaded_error: "unavailable"
};
function mapAnthropicErrorToStatusMessage(errorType) {
if (!errorType) {
return "internal_error";
}
return ANTHROPIC_ERROR_TYPE_TO_SPAN_STATUS[errorType] || "internal_error";
}
function handleResponseError(span, response) {
if (response.error) {
span.setStatus({ code: spanstatus.SPAN_STATUS_ERROR, message: mapAnthropicErrorToStatusMessage(response.error.type) });
exports$1.captureException(response.error, {
mechanism: {
handled: false,
type: "auto.ai.anthropic.anthropic_error"
}
});
}
}
function messagesFromParams(params) {
const { system, messages, input } = params;
const systemMessages = typeof system === "string" ? [{ role: "system", content: params.system }] : [];
const inputParamMessages = Array.isArray(input) ? input : input != null ? [input] : void 0;
const messagesParamMessages = Array.isArray(messages) ? messages : messages != null ? [messages] : [];
const userMessages = inputParamMessages ?? messagesParamMessages;
return [...systemMessages, ...userMessages];
}
exports.handleResponseError = handleResponseError;
exports.mapAnthropicErrorToStatusMessage = mapAnthropicErrorToStatusMessage;
exports.messagesFromParams = messagesFromParams;
exports.setMessagesAttribute = setMessagesAttribute;
//# sourceMappingURL=utils.js.map