mirror of
https://github.com/hicccc77/WeFlow.git
synced 2026-10-25 17:36:32 +08:00
28 lines
1.6 KiB
TypeScript
28 lines
1.6 KiB
TypeScript
import type { AgentToolSource } from './agentToolCatalog'
|
|
|
|
const DIRECT_WEB_REFERENCE_PATTERN = /(?:联网|上网|网页|网站|官网|官方网站|浏览器|google|谷歌|bing|必应|百度)/i
|
|
const SEARCH_REQUEST_PATTERN = /(?:搜搜看|搜一搜|搜一下|搜索(?:一下|看看|下)?|查查(?:看)?|查一下)/i
|
|
const LOCAL_DATA_REFERENCE_PATTERN = /(?:聊天(?:记录)?|消息(?:记录)?|朋友圈|联系人|会话|本地(?:数据|记录)?)/i
|
|
const SOURCE_VERIFICATION_PATTERN = /(?:出自(?:哪|哪里|何处|什么)|出处|原文来源|原句来源|最早(?:出处|来源|发布)|是否(?:真的)?(?:出自|来自)|真伪|误传|误署)/i
|
|
const TIME_SENSITIVE_PATTERN = /(?:最新|实时|截至(?:现在|目前|今日|今天)|今天|今日|当前).{0,12}(?:新闻|消息|进展|价格|行情|数据|版本|政策|规定|规则|赛程|比分|天气)/i
|
|
|
|
export function explicitlyRequestsWebSearch(value: unknown): boolean {
|
|
const question = String(value || '').trim()
|
|
if (!question) return false
|
|
if (DIRECT_WEB_REFERENCE_PATTERN.test(question)) return true
|
|
if (SOURCE_VERIFICATION_PATTERN.test(question)) return true
|
|
if (TIME_SENSITIVE_PATTERN.test(question)) return true
|
|
if (LOCAL_DATA_REFERENCE_PATTERN.test(question)) return false
|
|
return SEARCH_REQUEST_PATTERN.test(question)
|
|
}
|
|
|
|
export function shouldRequireAgentWebSearch(
|
|
source: AgentToolSource,
|
|
question: unknown,
|
|
searchToolName?: string | null,
|
|
): boolean {
|
|
if (!String(searchToolName || '').trim()) return false
|
|
if (source === 'web') return true
|
|
return source === 'auto' && explicitlyRequestsWebSearch(question)
|
|
}
|