最简单的是接入搜索引擎提供的api,Google Serper API应该是最便宜的了。
另一种是前端实现联网查询,这种需要客户端,网页版不行的。以electron为例,前端在发起聊天前,打开bing进行查询,然后将页面进行解析,得到结果后再发起聊天请求,这样就可以少花点钱。
具体代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| const { BrowserWindow } = require('electron'); const cheerio = require("cheerio");
const getBingSearchResult = (question) => { return new Promise((resolve, reject) => { try { let testWindow = new BrowserWindow({ show: false, }) testWindow.loadURL(`https://cn.bing.com/search?q=${encodeURIComponent(question)}&search=&form=QBLH&mkt=zh-CN`) testWindow.once('ready-to-show', async () => { let testWinWebContents = testWindow.webContents let html = await testWinWebContents.executeJavaScript('document.documentElement.outerHTML') var $ = cheerio.load(html); let results = []; $("#b_results .b_algo").each((i, e) => { var resultTitle = $(e).find("h2").text() var resultLink = $(e).find("h2 a").attr('href') var desc = $(e).find(".b_caption p").text() var resultItem = { "title": resultTitle, "url": resultLink, "description": desc }; results.push(resultItem); }) testWindow.destroy() resolve(results) }) } catch (error) { reject(error) } }) }
module.exports = { getBingSearchResult }
|