@nomyx/assistant
Version:
A powerful assistant library and cli for your AI projects. works with Vertex AI (Claude and Gemini)
56 lines (55 loc) • 1.74 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.convertToolSchema = convertToolSchema;
exports.convertToolCall = convertToolCall;
exports.convertMessages = convertMessages;
exports.extractToolCalls = extractToolCalls;
function convertToolSchema(schema) {
return {
name: schema.name,
description: schema.description,
input_schema: {
type: 'object',
properties: Object.entries(schema.parameters.properties).reduce((acc, [key, value]) => {
acc[key] = {
type: value.type,
...(value.enum ? { enum: value.enum } : {})
};
if (value.description) {
acc[key].description = value.description;
}
return acc;
}, {}),
required: schema.parameters.required || []
}
};
}
function convertToolCall(toolUse) {
return {
name: toolUse.name,
arguments: toolUse.input
};
}
function convertMessages(messages) {
return messages.map(msg => {
if (msg.role === 'function') {
// Need to use assistant because Anthropic doesn't have a 'system' role
return {
role: 'assistant',
content: `Function ${msg.name} returned: ${msg.content}`
};
}
return {
role: msg.role,
content: msg.content
};
});
}
function extractToolCalls(content) {
if (typeof content === 'string') {
return []; // No tool calls in string content
}
return content
.filter((item) => item.type === 'tool_use')
.map(item => convertToolCall(item));
}