Files
genesis-2/notebooks/embeddings-openai.ipynb
T
alexrg 7ee9944ab5 feat: add @toon-format/toon dependency and integrate into OpenAI notebooks
- Updated deno.lock and package.json to include @toon-format/toon@^2.1.0.
- Modified background-openai.ipynb to handle error responses and adjust execution counts.
- Enhanced definitions-openai.ipynb to include additional metadata for perishables and origen schemas.
- Refactored embeddings-openai.ipynb to improve error handling and output formatting.
- Updated create-chat-conversation function to append messages and responses to conversations.
- Added SQL functions for appending conversation data to the database.
2026-02-24 15:20:19 -06:00

178 lines
4.8 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 2,
"id": "902bff53",
"metadata": {},
"outputs": [],
"source": [
"import { load } from \"jsr:@std/dotenv\";\n",
"import OpenAI from \"jsr:@openai/openai\";\n",
"\n",
"const env = await load({\n",
" export: true,\n",
"});\n",
"\n",
"const openai = new OpenAI();"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "3b0acbc3",
"metadata": {},
"outputs": [],
"source": [
"import { createClient } from \"@supabase/supabase-js\";\n",
"const supabaseUrl = Deno.env.get(\"SUPABASE_URL\") || env.SUPABASE_URL;\n",
"const supabaseKey = Deno.env.get(\"SUPABASE_ANON_KEY\") || env.SUPABASE_ANON_KEY;\n",
"const supabase = createClient(supabaseUrl, supabaseKey);"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "dae842ad",
"metadata": {},
"outputs": [
{
"ename": "ReferenceError",
"evalue": "openai is not defined",
"output_type": "error",
"traceback": [
"Stack trace:",
"ReferenceError: openai is not defined",
" at <anonymous>:5:15"
]
}
],
"source": [
"const textos = [\n",
" \"Los vectores se usan con el cliente de OPENAI embeddings\",\n",
"];\n",
"\n",
"for (const contenido of textos) {\n",
" const emb = await openai.embeddings.create({\n",
" model: \"text-embedding-3-small\",\n",
" input: contenido,\n",
" });\n",
"\n",
" const embedding = emb.data[0].embedding;\n",
" console.log(emb);\n",
" \n",
"\n",
" const { error } = await supabase.from(\"documentos\").insert({\n",
" contenido,\n",
" embedding,\n",
" });\n",
"\n",
" if (error) throw error;\n",
"}\n",
"\n",
"console.log(\"✅ Insertados textos con embeddings\");"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "2d8fa9a9",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"🔎 Consulta: ¿Cómo son buscados vectores?\n",
"\n"
]
},
{
"data": {
"text/plain": [
"\u001b[32m\"code: PGRST202\\n\"\u001b[39m +\n",
" \u001b[32m'details: \"Searched for the function public.buscar_documentos with parameters match_count, query_embedding or with a single unnamed json/jsonb parameter, but no matches were found in the schema cache.\"\\n'\u001b[39m +\n",
" \u001b[32m\"hint: Perhaps you meant to call the function public.unaccent\\n\"\u001b[39m +\n",
" \u001b[32m'message: \"Could not find the function public.buscar_documentos(match_count, query_embedding) in the schema cache\"'\u001b[39m"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import { encode } from \"@toon-format/toon\";\n",
"\n",
"const consulta = \"¿Cómo son buscados vectores?\";\n",
"\n",
"const emb = await openai.embeddings.create({\n",
" model: \"text-embedding-3-small\",\n",
" input: consulta,\n",
"});\n",
"\n",
"const query_embedding = emb.data[0].embedding;\n",
"\n",
"const { data, error } = await supabase.rpc(\"buscar_documentos\", {\n",
" query_embedding,\n",
" match_count: 3,\n",
"});\n",
"\n",
"/* if (error) throw error; */\n",
"\n",
"console.log(`🔎 Consulta: ${consulta}\\n`);\n",
"encode(error, {\n",
" indent: 2,\n",
" delimiter: \",\",\n",
" keyFolding: \"off\",\n",
" flattenDepth: Infinity,\n",
"});\n"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "791a94d8",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{\n",
" code: \u001b[32m\"PGRST202\"\u001b[39m,\n",
" details: \u001b[32m\"Searched for the function public.buscar_documentos with parameters match_count, query_embedding or with a single unnamed json/jsonb parameter, but no matches were found in the schema cache.\"\u001b[39m,\n",
" hint: \u001b[32m\"Perhaps you meant to call the function public.unaccent\"\u001b[39m,\n",
" message: \u001b[32m\"Could not find the function public.buscar_documentos(match_count, query_embedding) in the schema cache\"\u001b[39m\n",
"}"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"error"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Deno",
"language": "typescript",
"name": "deno"
},
"language_info": {
"codemirror_mode": "typescript",
"file_extension": ".ts",
"mimetype": "text/x.typescript",
"name": "typescript",
"nbconvert_exporter": "script",
"pygments_lexer": "typescript",
"version": "5.9.2"
}
},
"nbformat": 4,
"nbformat_minor": 5
}