目前市面上的cherry-studio、page-assit、anythingLLM、open-webui、dify产品都号称能让大模型支持联网搜索,对国内搜索引擎没有支持或者支持的不太好,国内内容生态最好应该是微信了,今天发现DeepChat产品内置了搜狗的微信搜索,可以结合deepSeek实现联网搜索

DeepChat

DeepChat是一款连接强大AI与个人世界的智能助手,目前支持多个模型云服务:DeepSeek、OpenAI、硅基流动等,支持本地模型部署:Ollama,支持联网搜索。

searchManager

deepchat/src/main/presenter/threadPresenter/searchManager.ts

const defaultEngines: SearchEngineTemplate[] = [
  {
    name: 'sogou',
    selector: '.news-list',
    searchUrl:
      'https://weixin.sogou.com/weixin?ie=utf8&s_from=input&_sug_=y&_sug_type_=&type=2&query={query}',
    extractorScript: `
      const results = []
      const items = document.querySelectorAll('.news-list li')
      items.forEach((item, index) => {
        const titleEl = item.querySelector('h3 a')
        const linkEl = item.querySelector('h3 a')
        const descEl = item.querySelector('p.txt-info')
        const faviconEl = item.querySelector('a[data-z="art"] img')
        if (titleEl && linkEl) {
          results.push({
            title: titleEl.textContent,
            url: linkEl.href,
            rank: index + 1,
            description: descEl ? descEl.textContent : '',
            icon: faviconEl ? faviconEl.src : ''
          })
        }
      })
      return results
    `
  },
  {
    name: 'google',
    selector: '#search',
    searchUrl: 'https://www.google.com/search?q={query}',
    extractorScript: `
      const results = []
      const items = document.querySelectorAll('#search .g')
      items.forEach((item, index) => {
        const titleEl = item.querySelector('h3')
        const linkEl = item.querySelector('a')
        const descEl = item.querySelector('.VwiC3b')
        const faviconEl = item.querySelector('img.XNo5Ab')
        if (titleEl && linkEl) {
          results.push({
            title: titleEl.textContent,
            url: linkEl.href,
            rank: index + 1,
            description: descEl ? descEl.textContent : '',
            icon: faviconEl ? faviconEl.src : ''
          })
        }
      })
      return results
    `
  },
  {
    name: 'baidu',
    selector: '#content_left',
    searchUrl: 'https://www.baidu.com/s?wd={query}',
    extractorScript: `
      const results = []
      const items = document.querySelectorAll('#content_left .result')
      items.forEach((item, index) => {
        const titleEl = item.querySelector('.t')
        const linkEl = item.querySelector('a')
        const descEl = item.querySelector('.c-abstract')
        const faviconEl = item.querySelector('.c-img')
        if (titleEl && linkEl) {
          results.push({
            title: titleEl.textContent,
            url: linkEl.href,
            rank: index + 1,
            description: descEl ? descEl.textContent : '',
            icon: faviconEl ? faviconEl.getAttribute('src') : ''
          })
        }
      })
      return results
    `
  },
  {
    name: 'bing',
    selector: '',
    searchUrl: 'https://www.bing.com/search?q={query}',
    extractorScript: `
      const results = []
      const items = document.querySelectorAll('#b_content .b_algo')
      items.forEach((item, index) => {
        const titleEl = item.querySelector('h2 a')
        const linkEl = item.querySelector('h2 a')
        const descEl = item.querySelector('.b_caption p')
        const faviconEl = item.querySelector('.wr_fav img')
        if (titleEl && linkEl) {
          results.push({
            title: titleEl.textContent,
            url: linkEl.href,
            rank: index + 1,
            description: descEl ? descEl.textContent : '',
            icon: faviconEl?.src ? faviconEl.src : ''
          })
        }
      })
      return results
    `
  }
]
DeepChat支持了sogou、google、baidu、bing,可以把看到sogou搜索是使用https://weixin.sogou.com/weixin?ie=utf8&s_from=input&_sug_=y&_sug_type_=&type=2&query={query}搜狗的微信搜索,通过解析网页内容来提取数据

结合LLM

deepchat/src/main/presenter/threadPresenter/index.ts

      // 处理搜索
      if (userMessage.content.search) {
        searchResults = await this.startStreamSearch(
          conversationId,
          state.message.id,
          userMessage.content.text
        )
      }

      // 计算搜索提示词的token数量
      const searchPrompt = searchResults
        ? generateSearchPrompt(userMessage.content.text, searchResults)
        : ''

      // 添加当前用户消息,如果有搜索结果则替换为搜索提示词
      formattedMessages.push({
        role: 'user',
        content: searchPrompt || userMessage.content.text
      })   

      await this.llmProviderPresenter.startStreamCompletion(
        providerId,
        formattedMessages,
        modelId,
        state.message.id,
        temperature,
        maxTokens
      )
这里将搜索结果替换到formattedMessages,然后调用llmProviderPresenter.startStreamCompletion传给大模型,实现联网搜索

小结

DeepChat支持了sogou、google、baidu、bing,可以把看到sogou搜索是使用https://weixin.sogou.com/weixin?ie=utf8&s_from=input&_sug_=y&_sug_type_=&type=2&query={query}搜狗的微信搜索,通过解析网页内容来提取数据,最后将搜索结果传递给大模型实现联网搜索。

doc


codecraft
11.9k 声望2k 粉丝

当一个代码的工匠回首往事时,不因虚度年华而悔恨,也不因碌碌无为而羞愧,这样,当他老的时候,可以很自豪告诉世人,我曾经将代码注入生命去打造互联网的浪潮之巅,那是个很疯狂的时代,我在一波波的浪潮上留下...