-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathindex.ts
More file actions
40 lines (35 loc) · 1000 Bytes
/
index.ts
File metadata and controls
40 lines (35 loc) · 1000 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import { EventAddons, EventData } from '@hawk.so/types';
import { generateText } from 'ai';
import { openai } from '@ai-sdk/openai';
import { eventSolvingInput } from './inputs/eventSolving';
import { ctoInstruction } from './instructions/cto';
/**
* Vercel AI API
*/
class VercelAIApi {
/**
* Model ID
*/
private readonly modelId: string;
constructor() {
/**
* @todo make it dynamic, get from project settings
*/
this.modelId = 'gpt-4o';
}
/**
* Generate AI suggestion for the event
*
* @param {EventData<EventAddons>} payload - event data
* @returns {Promise<string>} AI suggestion for the event
*/
public async generateSuggestion(payload: EventData<EventAddons>) {
const { text } = await generateText({
model: openai(this.modelId),
system: ctoInstruction,
prompt: eventSolvingInput(payload),
});
return text;
}
}
export const vercelAIApi = new VercelAIApi();