mirror of
https://github.com/Litlyx/litlyx
synced 2025-12-10 07:48:37 +01:00
51 lines
1.7 KiB
TypeScript
51 lines
1.7 KiB
TypeScript
|
|
import OpenAI from "openai";
|
|
import { EventModel } from "@schema/metrics/EventSchema";
|
|
|
|
|
|
export const AI_EventsFunctions = {
|
|
getEventsCount: ({ pid, from, to, name, metadata }: any) => {
|
|
return getEventsCountForAI(pid, from, to, name, metadata);
|
|
}
|
|
}
|
|
|
|
|
|
export const getEventsCountForAIDeclaration: OpenAI.Chat.Completions.ChatCompletionTool = {
|
|
type: 'function',
|
|
function: {
|
|
name: 'getEventsCount',
|
|
description: 'Gets the number of events received on a date range, can also specify the event name and the metadata associated',
|
|
parameters: {
|
|
type: 'object',
|
|
properties: {
|
|
from: { type: 'string', description: 'ISO string of start date including hours' },
|
|
to: { type: 'string', description: 'ISO string of end date including hours' },
|
|
name: { type: 'string', description: 'Name of the events to get' },
|
|
metadata: { type: 'object', description: 'Metadata of events to get' },
|
|
},
|
|
required: ['from', 'to']
|
|
}
|
|
}
|
|
}
|
|
|
|
export const AI_EventsTools: OpenAI.Chat.Completions.ChatCompletionTool[] = [
|
|
getEventsCountForAIDeclaration
|
|
]
|
|
|
|
export async function getEventsCountForAI(project_id: string, from?: string, to?: string, name?: string, metadata?: string) {
|
|
|
|
const query: any = {
|
|
project_id,
|
|
created_at: {
|
|
$gt: from ? new Date(from).getTime() : new Date(2023).getTime(),
|
|
$lt: to ? new Date(to).getTime() : new Date().getTime(),
|
|
}
|
|
}
|
|
|
|
if (metadata) query.metadata = metadata;
|
|
if (name) query.name = name;
|
|
|
|
const result = await EventModel.countDocuments(query);
|
|
|
|
return { count: result };
|
|
} |