Files
genesis-2/notebooks/conversations-openai.ipynb
T

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();