From 70a3eef5224424593248de079ec562d9f92382b1 Mon Sep 17 00:00:00 2001 From: Han Xiao Date: Wed, 5 Feb 2025 10:43:08 +0800 Subject: [PATCH] fix: remove unnecessary budget guard --- src/tools/query-rewriter.ts | 58 ++++++++++++++++++------------------- src/utils/token-tracker.ts | 3 +- 2 files changed, 30 insertions(+), 31 deletions(-) diff --git a/src/tools/query-rewriter.ts b/src/tools/query-rewriter.ts index ad991a9..207a0d0 100644 --- a/src/tools/query-rewriter.ts +++ b/src/tools/query-rewriter.ts @@ -39,65 +39,65 @@ const model = genAI.getGenerativeModel({ function getPrompt(action: SearchAction): string { return `You are an expert Information Retrieval Assistant. Transform user queries into precise keyword combinations with strategic reasoning and appropriate search operators. -Core Rules: + 1. Generate search queries that directly include appropriate operators -2. Keep base keywords minimal: 2-4 words preferred +2. Keep base keywords minimal: 2-3 words preferred 3. Use exact match quotes for specific phrases that must stay together -4. Apply + operator for critical terms that must appear -5. Use - operator to exclude irrelevant or ambiguous terms -6. Add appropriate filters (filetype:, site:, lang:, loc:) when context suggests -7. Split queries only when necessary for distinctly different aspects -8. Preserve crucial qualifiers while removing fluff words -9. Make the query resistant to SEO manipulation +4. Split queries only when necessary for distinctly different aspects +5. Preserve crucial qualifiers while removing fluff words +6. Make the query resistant to SEO manipulation +7. When necessary, append to the query when context suggests + + + +A query can't only have operators; +Operators can't be at the start a query; -Available Operators: - "phrase" : exact match for phrases -- +term : must include term -- -term : exclude term +- +term : must include term; for critical terms that must appear +- -term : exclude term; exclude irrelevant or ambiguous terms - filetype:pdf/doc : specific file type - site:example.com : limit to specific site - lang:xx : language filter (ISO 639-1 code) - loc:xx : location filter (ISO 3166-1 code) - intitle:term : term must be in title - inbody:term : term must be in body text + -Examples with Strategic Reasoning: + + Input Query: What's the difference between ReactJS and Vue.js for building web applications? Thought: This is a comparison query. User is likely looking for technical evaluation and objective feature comparisons, possibly for framework selection decisions. We'll split this into separate queries to capture both high-level differences and specific technical aspects. Queries: [ - "react vue comparison +advantages +disadvantages", - "react vue performance +benchmark" + "react performance", + "vue performance", + "react vue comparison", ] Input Query: How to fix a leaking kitchen faucet? Thought: This is a how-to query seeking practical solutions. User likely wants step-by-step guidance and visual demonstrations for DIY repair. We'll target both video tutorials and written guides. Queries: [ - "kitchen faucet leak repair site:youtube.com", - "faucet drip fix +diy +steps -professional", - "faucet repair tools +parts +guide" + "kitchen faucet leak repair", + "faucet drip fix site:youtube.com", + "how to repair faucet " ] Input Query: What are healthy breakfast options for type 2 diabetes? Thought: This is a health-specific informational query. User needs authoritative medical advice combined with practical meal suggestions. Splitting into medical guidelines and recipes will provide comprehensive coverage. Queries: [ - "type 2 diabetes breakfast guidelines site:edu", - "diabetic breakfast recipes -sugar +easy" + "what to eat for type 2 diabetes", + "type 2 diabetes breakfast guidelines", + "diabetic breakfast recipes" ] Input Query: Latest AWS Lambda features for serverless applications Thought: This is a product research query focused on recent updates. User wants current information about specific technology features, likely for implementation purposes. We'll target official docs and community insights. Queries: [ - "aws lambda features site:aws.amazon.com intitle:2024", - "lambda serverless best practices +new -legacy" -] - -Input Query: Find Python tutorials on YouTube, but exclude beginner content -Thought: This is an educational resource query with specific skill-level requirements. User is seeking advanced learning materials on a specific platform. We'll focus on advanced topics while explicitly filtering out basic content. -Queries: [ - "python advanced programming site:youtube.com -beginner -basics", - "python design patterns tutorial site:youtube.com" + "aws lambda features site:aws.amazon.com intitle:2025", + "new features lambda serverless" ] + Now, process this query: Input Query: ${action.searchQuery} @@ -122,4 +122,4 @@ export async function rewriteQuery(action: SearchAction, tracker?: TokenTracker) console.error('Error in query rewriting:', error); throw error; } -} +} \ No newline at end of file diff --git a/src/utils/token-tracker.ts b/src/utils/token-tracker.ts index 346bb40..40839ad 100644 --- a/src/utils/token-tracker.ts +++ b/src/utils/token-tracker.ts @@ -14,8 +14,7 @@ export class TokenTracker extends EventEmitter { trackUsage(tool: string, tokens: number) { const currentTotal = this.getTotalUsage(); if (this.budget && currentTotal + tokens > this.budget) { - // Instead of adding tokens and then throwing, we'll throw before adding - throw new Error(`Token budget exceeded: ${currentTotal + tokens} > ${this.budget}`); + console.error(`Token budget exceeded: ${currentTotal + tokens} > ${this.budget}`); } // Only track usage if we're within budget if (!this.budget || currentTotal + tokens <= this.budget) {