-
Notifications
You must be signed in to change notification settings - Fork 4.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
11 changed files
with
147 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
# 实验室助手 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
# Google Search | ||
|
||
![](./imgs/google_search_1.png) | ||
![](./imgs/google_search_2.png) | ||
|
||
As shown in the above images, with the help of the HTTP module, you can easily integrate a search engine. Here, we take calling the Google Search API as an example. | ||
|
||
## Register Google Search API | ||
|
||
[Refer to this article to register the Google Search API](https://zhuanlan.zhihu.com/p/174666017) | ||
|
||
## Create a Google Search interface | ||
|
||
[Here, we use laf to quickly implement an interface, which can be written and published without deployment. Click to open laf cloud](https://laf.dev/), make sure to open the POST request method. | ||
|
||
```ts | ||
import cloud from '@lafjs/cloud'; | ||
const googleSearchKey = ''; | ||
const googleCxId = ''; | ||
const baseurl = 'https://www.googleapis.com/customsearch/v1'; | ||
export default async function (ctx: FunctionContext) { | ||
const { searchKey } = ctx.body; | ||
if (!searchKey) { | ||
return { | ||
prompt: '' | ||
}; | ||
} | ||
try { | ||
const { data } = await cloud.fetch.get(baseurl, { | ||
params: { | ||
q: searchKey, | ||
cx: googleCxId, | ||
key: googleSearchKey, | ||
c2coff: 1, | ||
start: 1, | ||
num: 5, | ||
dateRestrict: 'm[1]' | ||
} | ||
}); | ||
const result = data.items.map((item) => item.snippet).join('\n'); | ||
return { | ||
prompt: `Here are the search results from Google: ${result}`, | ||
searchKey: `\nSearch term: ${searchKey}` | ||
}; | ||
} catch (err) { | ||
console.log(err); | ||
return { | ||
prompt: '' | ||
}; | ||
} | ||
} | ||
``` | ||
|
||
## Workflow | ||
|
||
Drag out a FastGPT workflow as shown in the image, where the request URL of the HTTP module is the interface address, and the input and output parameters are as follows: | ||
**Input** | ||
|
||
``` | ||
searchKey: Search Key Word | ||
``` | ||
|
||
**Output** | ||
|
||
``` | ||
prompt: Search Result | ||
``` | ||
|
||
- The HTTP module will send the searchKey to laf, and laf will perform a Google search based on the received input. It will then return the search results through the prompt parameter. | ||
- After receiving the response, the HTTP module connects to the prompt of the "AI Dialogue" to guide the model in providing an answer. |
Binary file added
BIN
+368 KB
...urus-plugin-content-docs/current/flow-modules/examples/imgs/google_search_1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+271 KB
...urus-plugin-content-docs/current/flow-modules/examples/imgs/google_search_2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 0 additions & 1 deletion
1
...n/zh-Hans/docusaurus-plugin-content-docs/current/flow-modules/examples/index.md
This file was deleted.
Oops, something went wrong.
1 change: 1 addition & 0 deletions
1
...s/docusaurus-plugin-content-docs/current/flow-modules/examples/lab_assistant.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
# 实验室助手 |
73 changes: 73 additions & 0 deletions
73
...cusaurus-plugin-content-docs/current/flow-modules/examples/web_search_google.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
# 谷歌搜索 | ||
|
||
![](./imgs/google_search_1.png) | ||
|
||
![](./imgs/google_search_2.png) | ||
|
||
如上图,利用 HTTP 模块,你可以轻松的外接一个搜索引擎。这里以调用 google search api 为例。 | ||
|
||
## 注册 google search api | ||
|
||
[参考这篇文章,注册 google search api](https://zhuanlan.zhihu.com/p/174666017) | ||
|
||
## 写一个 google search 接口 | ||
|
||
[这里用 laf 快速实现一个接口,即写即发布,无需部署。点击打开 laf cloud](https://laf.dev/),务必打开 POST 请求方式。 | ||
|
||
```ts | ||
import cloud from '@lafjs/cloud'; | ||
|
||
const googleSearchKey = ''; | ||
const googleCxId = ''; | ||
const baseurl = 'https://www.googleapis.com/customsearch/v1'; | ||
|
||
export default async function (ctx: FunctionContext) { | ||
const { searchKey } = ctx.body; | ||
|
||
if (!searchKey) { | ||
return { | ||
prompt: '' | ||
}; | ||
} | ||
|
||
try { | ||
const { data } = await cloud.fetch.get(baseurl, { | ||
params: { | ||
q: searchKey, | ||
cx: googleCxId, | ||
key: googleSearchKey, | ||
c2coff: 1, | ||
start: 1, | ||
num: 5, | ||
dateRestrict: 'm[1]' | ||
} | ||
}); | ||
const result = data.items.map((item) => item.snippet).join('\n'); | ||
return { prompt: `这是 google 搜索的结果: ${result}`, searchKey: `\n搜索词为: ${searchKey}` }; | ||
} catch (err) { | ||
console.log(err); | ||
return { | ||
prompt: '' | ||
}; | ||
} | ||
} | ||
``` | ||
|
||
## 编排 | ||
|
||
按上图拖出一个 FastGPT 编排组合,其中 HTTP 模块的请求地址为接口地址,出入参如下: | ||
|
||
**入参** | ||
|
||
``` | ||
searchKey: 搜索词 | ||
``` | ||
|
||
**出参** | ||
|
||
``` | ||
prompt: 搜索结果 | ||
``` | ||
|
||
- HTTP 模块会将 searchKey 发送到 laf,laf 接收后去进行谷歌搜索,并将搜索的结果通过 prompt 参数返回。 | ||
- 返回后,HTTP 模块连接到【AI 对话】的提示词,引导模型进行回答。 |