3.6 KiB
3.6 KiB
import { load } from "jsr:@std/dotenv";
import OpenAI from "jsr:@openai/openai";
const env = await load({
export: true,
});
const openai = new OpenAI();
import { createClient } from "@supabase/supabase-js";
const supabaseUrl = Deno.env.get("SUPABASE_URL") || env.SUPABASE_URL;
const supabaseKey = Deno.env.get("SUPABASE_ANON_KEY") || env.SUPABASE_ANON_KEY;
const supabase = createClient(supabaseUrl, supabaseKey);
// Create a conversation for a plan de estudio
const { data: input } = await supabase.from("planes_estudio").limit(1).select("id").single();
const openaiConversation = await openai.conversations.create({
metadata: {
"tabla": "planes_estudio",
"id": input.id,
instanciador: "alex",
},
items: [
{ type: "message", role: "system", content: "En caso de que te pidan algo que no tiene nada que ver con planes de estudio o asignatura responde con un refusal." },
],
});
const conversationPlane = await supabase.from("conversation_planes_estudio").insert({
conversation_id: openaiConversation.id,
plan_estudio_id: input.id,
}).select("id").single();
// Archivar una conversación
const { data: conversation } = await supabase.from("conversation_planes_estudio").limit(1).select("conversation_id").single();
const items = await openai.conversations.items(conversation.conversation_id);
await supabase.from("conversation_planes_estudio").update({
estado: "ARCHIVANDO",
conversation_json: items,
}).eq("id", conversationPlane.id);
await openai.conversations.delete(conversation.conversation_id);
// Listar conversaciones dadas de un plan de estudio
const { data: conversations } = await supabase.from("conversation_planes_estudio").select("*").eq("plan_estudio_id", input.id);
conversations
// Add a message to the conversation
const { data: conversationToUpdate } = await supabase.from(
"conversation_planes_estudio",
).eq("id", conversationPlane.id)
.select("conversation_id").single();