Skip to content

Commit

Permalink
test: add log for vercel
Browse files Browse the repository at this point in the history
  • Loading branch information
adolphnov committed Aug 3, 2024
1 parent b31663e commit fde2c83
Show file tree
Hide file tree
Showing 2 changed files with 1,719 additions and 1,042 deletions.
62 changes: 5 additions & 57 deletions adapter/vercel/utils/duckduckgo.js
Original file line number Diff line number Diff line change
Expand Up @@ -237,77 +237,25 @@ export const duckduckgo_search = {
},
},
func: async ({ keywords }) => {
if (!keywords || keywords.length === 0)
throw new Error('无参数');
if (!keywords || keywords.length === 0 ) throw new Error('无参数');
console.log('开始查询: ', keywords);
const startTime = Date.now();
const searchResults = await search(keywords.join(' '), {
safeSearch: SafeSearchType.STRICT,
offset: 0,
region: 'cn-zh'
});
const max_length = 10;
const max_length = 8;
const content = searchResults.results
.slice(0, max_length)
.map((d) => `title: ` + d.title + `\ndescription: ` + d.description + `\nurl: ` + d.url)
.join('\n---\n');
const time = ((Date.now() - startTime) / 1000).toFixed(1);
// console.log(content);
const time = ((Date.now() - startTime) / 1000).toFixed(1) + 's';
console.log(content);
return { content, time };
},
settings: {
before_prompt: `你是一个智能助手,具备广泛的知识库,同时也能在需要时调用搜索引擎获取实时信息。你的主要任务是:
1. 仔细分析用户的问题,判断是否需要获取实时或最新信息,不要猜测答案,如果你不确定,请调用搜索函数。
2. 识别用户查询中可能需要实时数据的关键词,如"现在"、"最新"、"实时"、"今天"等,如果用户明确提出要求联网:"搜一下, 搜搜, search",请调用搜索函数。
3. 对于以下类型的查询,通常需要获取最新信息:
- 实时新闻和当前事件
- 天气预报
- 当前时间
- 股票价格和市场数据
- 体育比分和赛事结果
- 热门话题和趋势
- 最新发布的内容(如电影、音乐、游戏等)
4. 如果问题涉及具体日期、数字或需要即时计算,也需要调用函数进行搜索
5. 对于历史事实、科学知识、常识性问题,优先使用你的内置知识回答。
6. 如果不确定信息的时效性或准确性,宁可调用搜索函数,获取最新数据。
7. 当你确定需要获取实时信息时,执行以下步骤:
a. 生成3-4个最相关的搜索关键词。这些关键词应该:
- 简洁明了,通常每个关键词不超过2-3个单词
- 涵盖查询的核心内容
- 包含任何相关的时间或地点信息
- 避免使用过于宽泛或模糊的词语
8. 在你的回答中,清晰地表明哪些信息是基于实时查询,哪些是来自你的知识库。
如需要进行搜索,请将回复格式化为纯文本JSON字符串,其中只有一个键:keywords
数组中的最后一项应是最简洁、最相关的搜索查询。
Examples:
1. For "你能做什么?", respond with 'NO_SEARCH_NEEDED'.
2. For "珠三角是否包括佛山?", respond with:
{"keywords":["珠三角", "佛山", "广东省", "珠江三角洲 包括 佛山"]}
3. For "2023年世界杯冠军是谁?", respond with:
{"keywords":["2023年", "世界杯", "冠军", "2023 世界杯 冠军队"]}`,
// before_render: (question) => `Analyze and generate search queries if needed for: ${question}`,
after_prompt: `你是一位全能的信息助手。我刚刚使用DuckDuckGo搜索了一些信息,可能包括天气、新闻、计算结果或实时报道。请根据搜索结果的性质,完成以下任务:
1. 快速识别搜索结果的主要类型(如天气预报、新闻事件、数学计算、实时更新等)。
2. 对于天气信息:
• 提供简明的天气概况,包括温度、降水概率和重要天气警报。
• 如果有长期预报,简要说明未来几天的天气趋势。
3. 对于新闻和实时报道:
• 总结3-5个最重要的要点。
• 突出任何重大发展或突发事件。
• 如果适用,提供事件的背景和潜在影响。
4. 对于计算器类查询:
• 清晰地陈述问题和结果。
• 如果是复杂计算,简要解释计算过程。
5. 对于任何类型的信息:
• 指出任何需要注意的不确定性或争议。
• 如果适用,提供可靠的信息来源。
6. 最后,根据搜索内容的性质,提供一个简短的总结或建议。
7. 如果可以,请在最下方加上引用的链接
注意:请仔细检查,可能用户需要的答案权重较低,位置靠后;如果搜索结果中没有用户想要的答案,请提炼用户感兴趣的信息。
请以清晰、简洁的方式呈现信息,重点关注用户最可能感兴趣的部分。如果有任何信息不清楚或需要更多上下文,请告诉我。`,
after_prompt: "作为智能助手,请按照以下步骤有效分析并提取我提供的搜索结果,以简洁明了的方式回答我的问题:\n\n1. 阅读和评估:仔细阅读所有搜索结果,识别并优先获取来自可靠和最新来源的信息。考虑因素包括官方来源、知名机构以及信息的更新时间。\n\n2. 提取关键信息:\n • *汇率查询*:提供最新汇率并进行必要的换算。\n • *天气查询*:提供具体地点和时间的天气预报。\n • *事实性问题*:找出权威回答。\n\n3. 简洁回答:对提取的信息进行综合分析,给出简明扼要的回答。\n\n4. 识别不确定性:如果信息存在矛盾或不确定性,请解释可能原因。\n\n5. 说明信息不足:如果搜索结果无法完全回答问题,指出需要的额外信息。\n\n6. 用户友好:使用简单易懂的语言,必要时提供简短解释,确保回答易于理解。\n\n7. 附加信息:根据需要提供额外相关信息或建议,以增强回答的价值。\n\n8. 来源标注:在回答中清晰标注信息来源,包括来源网站或机构名称及数据的发布或更新时间。\n\n9. 参考列表:如果引用了多个来源,在回答最后提供简短的参考列表,列出主要信息来源。\n\n请确保目标是提供最新、最相关和最有用的信息,直接回应我的问题。避免冗长的细节,聚焦于我最关心的核心答案,并通过可靠的来源增强回答的可信度。",
after_render: (question, result) => `问题:${question}\n\n搜索结果:${result}`,
},
// after_history_length: 0,
Expand Down
Loading

0 comments on commit fde2c83

Please sign in to comment.