- 通过 JS/TS 客户端 的 Node.js、浏览器和 React Native
- 通过 Python 客户端 的 Python
- 通过 Swift 客户端 的 iOS、MacOS 和其他 Apple 平台
我们的 API 旨在成为简单的 HTTP 端点,因此即使您选择的平台不受支持,您仍然可以使用标准 HTTP 请求与它们交互。但是,如果您希望看到对特定平台的支持,请告诉我们,我们很乐意听取您的用例。
安装
fal 客户端可通过每种受支持语言的标准包管理器获取:
npm install --save @fal-ai/serverless-client
身份验证
导航到我们的仪表板的密钥页面并从 UI 生成密钥。
我们所有的客户端都希望默认设置 FAL_KEY
环境变量。
export FAL_KEY=89733b28-••••••••
初始化客户端
在某些环境中,例如客户端 JavaScript 和原生移动应用,您需要手动设置它。
fal.config({
credentials: 'PASTE_YOUR_FAL_KEY_HERE', // 或者返回字符串的函数
})
虽然客户端在浏览器环境中工作,但不建议将凭据保留在浏览器中。相反,您应该使用服务器端代理来处理凭据。查看我们的服务器端指南以获取指导。
订阅队列更新
客户端为您提供了一种订阅队列更新的方法。如果您希望在函数运行完成时收到通知,或者希望在生成日志时获取日志,这将非常有用。
每次队列状态发生变化时,都会调用 onQueueUpdate
回调。update
对象包含队列状态数据,如 状态类型 部分所述。
import * as fal from '@fal-ai/serverless-client'
const result = await fal.subscribe('fal-ai/fast-lightning-sdxl', {
input: {
prompt: 'a cute puppy',
},
pollInterval: 500,
logs: true,
onQueueUpdate: (update) => {
console.log(update.status)
if (update.status === 'IN_PROGRESS') {
update.logs.map(log => log.message).forEach(console.log)
}
},
})
console.log(result.url)
运行函数
客户端为您提供了一种运行函数的方法。如果您希望运行快速执行的函数并等待结果,这将非常有用。
import * as fal from '@fal-ai/serverless-client'
const result = await fal.run(FUNCTION_ID, {
input: {
prompt: 'a cute puppy',
},
})
console.log(result)
run
方法对于短时间运行的函数来说很方便,它只会运行该函数并等待结果。对于长时间运行的函数(例如 ML 流程),建议改用queue
。
文件上传
某些 API 要求您传递文件 URL 作为输入。好消息是,客户端提供了一种轻松将文件上传到我们的服务器并返回 URL 的方法。
自动上传
某些客户端提供自动上传功能,可自动为您上传文件。这对于小文件(例如图像)特别有用。例如,在 JavaScript 中,如果输入属性的值为 File
(或任何 Blob
子类型),则 JS 客户端将自动上传文件并用生成的 URL 替换值。使用 Data
对象时,Swift 也是如此。
Python 客户端尚不支持自动上传,但您可以改用手动上传方法。
手动上传
自动上传功能只是一种基于我们的存储 API 构建的便捷方法,这意味着您也可以自己处理文件上传。如果您希望在提交之前上传文件以便为用户提供自定义 UI/UX,那么这很有用。
const file = '' // 引用 File 对象
const url = await fal.storage.upload(file)
流式传输
某些端点支持流式传输,这允许您在生成结果时获取部分结果。这对于产生中间结果的长时间运行的函数特别有用,例如 Visual LLM 和具有多个步骤的工作流。
该 API 应该与其他 API 相似,但它将返回一个流对象,您可以使用它来获取请求期间生成的所有事件。以下是 fal-ai/llavav15-13b
的示例:
import * as fal from '@fal-ai/serverless-client'
const stream = await fal.stream('fal-ai/llavav15-13b', {
input: {
image_url: 'https://llava-vl.github.io/static/images/monalisa.jpg',
prompt: 'Do you know who drew this painting?',
},
})
for await (const event of stream) {
console.log('partial', event)
}
const result = await stream.done()
console.log('final result', result)
上次更新于 2024 年 6 月 21 日