最简单的是接入搜索引擎提供的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
}