aboutsummaryrefslogtreecommitdiffstats
path: root/packages/workers/openai.ts
diff options
context:
space:
mode:
authorMohamedBassem <me@mbassem.com>2024-02-11 16:53:17 +0000
committerMohamedBassem <me@mbassem.com>2024-02-11 17:57:46 +0000
commit230cafb6dfc8d3bad57d84ef13c3669f5bf5331a (patch)
treeb59f4b386201f9fedde3c7b7546f32c2ed3f61cb /packages/workers/openai.ts
parent2c2d05fd0a2c3c26d765f8a6beb88d907a097c1d (diff)
downloadkarakeep-230cafb6dfc8d3bad57d84ef13c3669f5bf5331a.tar.zst
fix: Fix build for workers package and add it to CI
Diffstat (limited to 'packages/workers/openai.ts')
-rw-r--r--packages/workers/openai.ts34
1 files changed, 31 insertions, 3 deletions
diff --git a/packages/workers/openai.ts b/packages/workers/openai.ts
index a2f90c8a..999f2827 100644
--- a/packages/workers/openai.ts
+++ b/packages/workers/openai.ts
@@ -1,13 +1,41 @@
-import prisma, { BookmarkedLink } from "@remember/db";
+import { prisma, BookmarkedLink } from "@remember/db";
import logger from "@remember/shared/logger";
-import { ZOpenAIRequest, zOpenAIRequestSchema } from "@remember/shared/queues";
+import { OpenAIQueue, ZOpenAIRequest, queueConnectionDetails, zOpenAIRequestSchema } from "@remember/shared/queues";
import { Job } from "bullmq";
import OpenAI from "openai";
import { z } from "zod";
+import { Worker } from "bullmq";
const openAIResponseSchema = z.object({
tags: z.array(z.string()),
});
+
+
+export class OpenAiWorker {
+ static async build() {
+ logger.info("Starting openai worker ...");
+ const worker = new Worker<ZOpenAIRequest, void>(
+ OpenAIQueue.name,
+ runOpenAI,
+ {
+ connection: queueConnectionDetails,
+ autorun: false,
+ },
+ );
+
+ worker.on("completed", (job) => {
+ const jobId = job?.id || "unknown";
+ logger.info(`[openai][${jobId}] Completed successfully`);
+ });
+
+ worker.on("failed", (job, error) => {
+ const jobId = job?.id || "unknown";
+ logger.error(`[openai][${jobId}] openai job failed: ${error}`);
+ });
+
+ return worker;
+ }
+}
function buildPrompt(url: string, description: string) {
return `
@@ -121,7 +149,7 @@ async function connectTags(bookmarkId: string, tagIds: string[]) {
);
}
-export default async function runOpenAI(job: Job<ZOpenAIRequest, void>) {
+async function runOpenAI(job: Job<ZOpenAIRequest, void>) {
const jobId = job.id || "unknown";
if (!process.env.OPENAI_API_KEY || !process.env.OPENAI_ENABLED) {