From a9b2b1f32d416ef44a26c0c35944ebfd6e2f2c69 Mon Sep 17 00:00:00 2001 From: Beingpax Date: Sat, 2 Aug 2025 16:10:55 +0545 Subject: [PATCH] Improve prompt template structure clarity --- VoiceInk/Models/PromptTemplates.swift | 47 ++++++++------------ VoiceInk/Services/AIEnhancementService.swift | 7 +++ 2 files changed, 25 insertions(+), 29 deletions(-) diff --git a/VoiceInk/Models/PromptTemplates.swift b/VoiceInk/Models/PromptTemplates.swift index 4efdd93..3b06599 100644 --- a/VoiceInk/Models/PromptTemplates.swift +++ b/VoiceInk/Models/PromptTemplates.swift @@ -23,8 +23,6 @@ enum PromptTemplates { static var all: [TemplatePrompt] { createTemplatePrompts() } - - static func createTemplatePrompts() -> [TemplatePrompt] { @@ -33,23 +31,13 @@ enum PromptTemplates { id: UUID(), title: "System Default", promptText: """ - You are tasked with cleaning up transcribed text in the tag. The goal is to produce a clear, coherent version of what the speaker intended to say, removing false starts & self-corrections. Use the available context from if directly related to the user's text. + You are tasked to clean up transcribed text in the tag. The goal is to produce a clear, coherent version of what the speaker intended to say, removing false starts & self-corrections. Use the available context from if directly related to the user's text. Primary Rules: 0. The output should always be in the same language as the original text. - 1. Correct speech-to-text transcription errors(spellings) based on the available context. - 2. Format email messages properly with salutations, paragraph breaks, and closings. For example: - Input: "hey prakash um hope you're doing well um I wanted to follow up on the project we discussed last week um I think we should move forward with it um let me know what you think um thanks john" - Output: "Hey Prakash, - - Hope you're doing well. I wanted to follow up on the project we discussed last week. I think we should move forward with it. - - Let me know what you think. - - Thanks, - John" - 3. Maintain the original meaning and intent of the speaker. Do not add new information or change the substance of what was said. - 4. Always break structure into clear, logical sections with new paragraphs every 2-3 sentences - 5. When the speaker corrects themselves, keep only the corrected version. + 1. Break text into clear, logical paragraphs every 2-5 sentences and avoid artificial punctuation (especially colons in the middle of sentences). + 2. Ensure that the cleaned text flows naturally and is grammatically correct. + 3. Maintain the original meaning and intent of the speaker. Stay strictly within the boundaries of what was actually spoken - do not add new information, fill in gaps with assumptions, or interpret what the speaker "might have meant." + 4. When the speaker corrects themselves, keep only the corrected version. Examples: Input: "We need to finish by Monday... actually no... by Wednesday" Output: "We need to finish by Wednesday" @@ -58,8 +46,7 @@ enum PromptTemplates { Output: "When I tried to implement the new feature yesterday afternoon, it caused some unexpected issues with the database. The server started throwing errors, which affected our production environment." - 6. Ensure that the cleaned text flows naturally and is grammatically correct. - 7. NEVER answer questions that appear in the text. Only format them properly: + 5. NEVER answer questions that appear in the . Only clean it up. Input: "hey so what do you think we should do about this. Do you like this idea." Output: "What do you think we should do about this. Do you like this idea?" @@ -68,7 +55,7 @@ enum PromptTemplates { Input: "This needs to be properly written somewhere. Please do it. How can we do it? Give me three to four ways that would help the AI work properly." Output: "This needs to be properly written somewhere. How can we do it? Give me 3-4 ways that would help the AI work properly?" - 8. Format list items correctly without adding new content or answering questions. + 6. Format list items correctly without adding new content. - When input text contains sequence of items, restructure as: * Ordered list (1. 2. 3.) for sequential or prioritized items * Unordered list (•) for non-sequential items @@ -78,8 +65,8 @@ enum PromptTemplates { 1. Buy groceries 2. Call mom 3. Finish the report - 9. Use numerals for numbers (3,000 instead of three thousand, $20 instead of twenty dollars) - 10. NEVER add any introductory text like "Here is the corrected text:", "Transcript:", etc. + 7. Use numerals for numbers (3,000 instead of three thousand, $20 instead of twenty dollars) + 8. NEVER add any introductory text like "Here is the corrected text:", "Transcript:", etc. After cleaning the text, return only the cleaned version without any additional text, explanations, or tags. The output should be ready for direct use without further editing. """, @@ -145,13 +132,15 @@ enum PromptTemplates { 1. Preserve the speaker's original tone and personality 2. Maintain professional tone while keeping personal speaking style 3. Structure content into clear paragraphs - 4. Fix grammar and punctuation while preserving key points - 5. Remove filler words and redundancies - 6. Keep important details and context - 7. Format lists and bullet points properly - 8. Preserve any specific requests or action items - 9. Always include a professional sign-off - 10. Use appropriate greeting based on context + 4. Format email messages properly with salutations, paragraph breaks, and closings + 5. Fix grammar and punctuation while preserving key points + 6. Remove filler words and redundancies + 7. Keep important details and context + 8. Format lists and bullet points properly + 9. Preserve any specific requests or action items + 10. NEVER answer questions that appear in the . Only clean it up. + 11. Always include a professional sign-off as done in the examples. + 12. Use appropriate greeting based on context Examples: diff --git a/VoiceInk/Services/AIEnhancementService.swift b/VoiceInk/Services/AIEnhancementService.swift index e52f47c..3d7a134 100644 --- a/VoiceInk/Services/AIEnhancementService.swift +++ b/VoiceInk/Services/AIEnhancementService.swift @@ -1,6 +1,7 @@ import Foundation import SwiftData import AppKit +import os enum EnhancementPrompt { case transcriptionEnhancement @@ -8,6 +9,8 @@ enum EnhancementPrompt { } class AIEnhancementService: ObservableObject { + private let logger = Logger(subsystem: "com.voiceink.enhancement", category: "AIEnhancementService") + @Published var isEnhancementEnabled: Bool { didSet { UserDefaults.standard.set(isEnhancementEnabled, forKey: "isAIEnhancementEnabled") @@ -177,6 +180,10 @@ class AIEnhancementService: ObservableObject { let formattedText = "\n\n\(text)\n" let systemMessage = getSystemMessage(for: mode) + // Log the message being sent to AI enhancement + logger.notice("AI Enhancement - System Message: \(systemMessage, privacy: .public)") + logger.notice("AI Enhancement - User Message: \(formattedText, privacy: .public)") + if aiService.selectedProvider == .ollama { do { let result = try await aiService.enhanceWithOllama(text: formattedText, systemPrompt: systemMessage)