diff --git a/src/routes/journals/ae_comp__journal_entry_obj_id_view.svelte b/src/routes/journals/ae_comp__journal_entry_obj_id_view.svelte
index 0dda9db5..d6c2a6f4 100644
--- a/src/routes/journals/ae_comp__journal_entry_obj_id_view.svelte
+++ b/src/routes/journals/ae_comp__journal_entry_obj_id_view.svelte
@@ -10,7 +10,7 @@ import {
BookHeart, Bot, BotMessageSquare, BriefcaseBusiness,
CalendarClock, CalendarOff, Clock, CodeXml, Copy,
Eye, EyeOff,
- Flag, FlagOff, FileDown, FileX, Fingerprint,
+ Flag, FlagOff, FileDown, FilePenLine, FileText, FileX, Fingerprint,
Globe, Group,
Hash, History,
Loader, LockKeyhole, LockKeyholeOpen,
@@ -333,6 +333,7 @@ async function update_journal_entry() {
// alert_msg: $lq__journal_entry_obj?.alert_msg ? false : true
alert_msg: tmp_entry_obj?.alert_msg,
category_code: tmp_entry_obj?.category_code,
+ summary: tmp_entry_obj?.summary,
content: tmp_entry_obj?.content,
content_encrypted: null, // This should only be generated below.
history: tmp_entry_obj?.history,
@@ -1780,6 +1781,23 @@ $effect(() => {
Show
+ {:else if !$journals_sess?.entry?.show__ai_summary && $lq__journal_entry_obj?.summary}
+
{/if}
@@ -2105,68 +2123,84 @@ tabindex={$ae_loc.edit_mode ? 0 : -1} -->
{/if}
{:else}
-
+ {:else if !$journals_sess?.entry?.show__ai_summary && $lq__journal_entry_obj?.summary}
+ {
+ $journals_sess.entry.ai_summary = $lq__journal_entry_obj?.summary;
+ $journals_sess.entry.show__ai_summary = true;
+ }}
+ class="
+ btn btn-sm preset-tonal-primary hover:preset-filled-primary-500 transition-all absolute top-2 right-2 z-10
+ "
+ title="Show saved summary of this journal entry"
+ >
+
+ Use Saved Summary
+
+ {/if}
{/if}
@@ -2686,12 +2720,27 @@ zzzz
class="top-center bg-white dark:bg-gray-800 text-gray-800 dark:text-gray-200 rounded-lg border-gray-200 dark:border-gray-700 divide-gray-200 dark:divide-gray-700 shadow-md relative mx-auto w-full divide-y"
>
+
+
+ {
+ tmp_entry_obj.summary = $journals_sess?.entry?.ai_summary || '';
+ update_journal_entry();
+ }}
+ title="Save AI summary as Journal Entry summary"
+ >
+
+ Save
+
+
{
$journals_sess.entry.show__ai_summary = !$journals_sess.entry.show__ai_summary;
}}
- class="btn btn-sm preset-tonal-primary hover:preset-filled-primary-500 transition *:hover:inline"
+ class="btn btn-sm preset-tonal-primary hover:preset-filled-primary-500 transition-all"
title="Toggle AI Summary"
>
@@ -2703,13 +2752,117 @@ zzzz
{/if}
+ {
+ const ai_client = new OpenAI({
+ apiKey: $journals_loc?.llm__api_token,
+ baseURL: $journals_loc?.llm__api_base_url,
+ dangerouslyAllowBrowser: $journals_loc?.llm__api_dangerous_browser,
+
+ });
+
+ // let resp__models = ai_client.models.list();
+ // console.log('AI API Response (models)', resp__models);
+
+ // let msg_role_system_content = $journals_loc?.entry?.llm__system_prompt || 'You are a helpful assistant that helps people find information.';
+ // let msg_role_user_content = 'Why is the sky blue?';
+ let msg_role_user_content = tmp_entry_obj?.content;
+
+ try {
+ ae_promises = ai_client.chat.completions.create(
+ {
+ model: $journals_loc?.llm__api_model,
+ messages: [
+ { role: 'system', content: $journals_loc?.entry?.llm__system_prompt || 'You are a helpful assistant that helps people find information.' },
+ { role: "user", content: msg_role_user_content }
+ ],
+ // max_tokens: 512,
+ // temperature: 0.7,
+ // stream: true,
+ }
+ )
+ .then ((resp__chat) => {
+ console.log('AI API Response (chat)', resp__chat);
+ console.log('AI API Response (chat)', resp__chat);
+
+ console.log('resp msg 0 = ', resp__chat?.choices?.[0]?.message?.content);
+
+ $journals_sess.entry.ai_summary = resp__chat?.choices?.[0]?.message?.content || 'No summary available';
+
+ // $journals_sess.entry.show__ai_summary = true;
+ return;
+ });
+
+
+ } catch (err) {
+ console.error('Error from chat completion:', err);
+ alert('Error from chat completion: ' + (err?.message || err));
+ }
+
+ }}
+ class="
+ btn btn-sm
+ preset-outlined-warning-200-800
+ transition-all
+ "
+ title="Generate AI summary of this journal entry"
+ >
+ {#await ae_promises}
+
+ Summarizing...
+ {:then}
+
+ Re-Summarize
+ {:catch error}
+ Error
+ {/await}
+
+
+
+ {
+ $journals_sess.entry.hide__ai_summary = !$journals_sess.entry.hide__ai_summary;
+ }}
+ >
+
+ Prompt
+
+
+
+
+
+
@@ -208,6 +209,23 @@ import { journals_loc, journals_sess, journals_slct, journals_prom, journals_tri
LLM AI:
+ {
+ $journals_loc.llm__api_base_url = $ae_loc.site_cfg_json?.llm__api_base_url ?? 'https://ai.dgrzone.com/api';
+ $journals_loc.llm__api_model = $ae_loc.site_cfg_json?.llm__api_model ?? 'dgrzone-deepseek-8b-quick';
+ $journals_loc.llm__api_token = $ae_loc.site_cfg_json?.llm__api_token ?? '';
+ $journals_loc.llm__api_dangerous_browser = $ae_loc.site_cfg_json?.llm__api_dangerous_browser ?? false;
+ $journals_loc.entry.llm__system_prompt = $ae_loc.site_cfg_json?.llm__system_prompt ?? '';
+
+
+ }}
+ >
+
+ LLM from Site Cfg
+
+
+ {
+ let default_system_prompt = 'Summarize the following journal entry content in a concise manner, focusing on key points and insights.';
+ $journals_loc.entry.llm__system_prompt = default_system_prompt;
+ }}
+ >
+
+ Reset to Journal Entry System Prompt
+
+