Laf 函数调用

FastGPT Laf 函数调用模块介绍

Laf 函数调用 - 图1

介绍

Laf 函数调用模块可以调用 Laf 账号下的云函数,其工作原理与 HTTP 模块相同,有以下特殊特征:

  • 只能使用 POST 请求
  • 请求自带系统参数 systemParams,无需通过变量传递。

绑定 Laf 账号

要调用 Laf 云函数,首先需要绑定 Laf 账号和应用,并且在应用中创建云函数。

Laf 提供了 PAT(访问凭证) 来实现 Laf 平台外的快捷登录,可以访问 Laf 文档Laf 函数调用 - 图2查看详细如何获取 PAT。

在获取到 PAT 后,我们可以进入 FastGPT 的账号页或是在高级编排中的 Laf模块 对 Laf 账号进行绑定。Laf 账号是团队共享的,仅团队管理员可配置。

填入 PAT 验证后,选择需要绑定的应用(应用需要是 Running 状态),即可调用该应用下的云函数。

Laf 函数调用 - 图3

编写云函数

Laf 云函数拥有根据 interface 自动生成 OpenAPI 的能力,可以参照下面的代码编写云函数,以便自动生成 OpenAPI 文档。

Laf模块可以根据 OpenAPI 文档,自动识别出入参,无需手动添加数据类型。如果不会写 TS,可忽略,手动在 FastGPT 中添加参数即可。

  1. import cloud from '@lafjs/cloud'
  2. interface IRequestBody { // 自定义入参,FastGPT 传入的均为POST请求。
  3. data1: string // 必填参数
  4. data2?: string // 可选参数
  5. }
  6. interface RequestProps extends IRequestBody { // 完整入参,这个无需改动。
  7. systemParams: { // 这是FastGPT默认会传递过来的参数
  8. appId: string,
  9. variables: string,
  10. histories: string,
  11. cTime: string,
  12. chatId: string,
  13. responseChatItemId: string
  14. }
  15. }
  16. interface IResponse { // 响应内容
  17. message: string // 必返回的参数
  18. msg?: string; // 可选的返回参数
  19. }
  20. export default async function (ctx: FunctionContext): Promise<IResponse> {
  21. const {
  22. data1,
  23. data2,
  24. systemParams
  25. }: RequestProps = ctx.body;
  26. console.log({
  27. data1,
  28. data2,
  29. systemParams
  30. });
  31. return {
  32. message: 'ok',
  33. msg: 'msg'
  34. };
  35. }

当然,你也可以在 Laf 平台上选择 fastgpt_template,快速生成该函数模板。

具体操作可以是,进入 Laf 的函数页面,新建函数(注意 fastgpt 只会调用 post 请求的函数),然后复制上面的代码或者点击更多模板搜索“fastgpt”,使用下面的模板

Laf 函数调用 - 图4

FastGPT 中使用

在选择函数后,可以通过点击“同步参数”,自动同步云函数的参数到 FastGPT 中。当然也可以手动添加,手动修改后的参数不会被“同步参数”修改。

Laf 函数调用 - 图5

使用注意事项

调用报错

先在 laf 中调试函数,看是否正常调用。可以通过 console.log,打印入参,将入参放在 Laf 测试页面的 Body 中进行测试。