Langflow API 的 JavaScript 客户端
这个软件包提供了使用 朗福尔 API 以运行服务器侧 JavaScript 应用程序中的流.
安装
与 npm 关系
npm install @datastax/langflow-client
用纱线
yarn add @datastax/langflow-client
与pnpm
pnpm add @datastax/langflow-client
先决条件
要使用这个 Langflow 客户端, 您需要一个 DataStax 账户, 您可以使用该账户 数据税朗流。在调用它的 API 之前,您需要一个流量 。 如果你还没有一个,你可以开始 基本提示流量。 。 。 .
您也可以在安装时使用 开源朗流。 。 。 .
配置
数据税朗流
你需要一个 朗福斯 API 密钥。当您创建新的客户端时,您提供了 API 密钥。 你还需要你的Langflow身份证.
您可以在 Langflow 流程编辑器中生成 API 密钥并在 API 模式上找到您的 Langflow ID .
开源朗流
你需要安装Langflow。 您也可要求 API 密钥 如果你已经设置 langflow 上的认证。 。 。 .
使用量
您可以这样导入客户端 :
import { LangflowClient } from "@datastax/langflow-client";
初始化
然后,您可以创建一个新的客户对象对象,其选项如下:
baseURL: 此设置为https://api.langflow.astra.datastax.com默认情况下, 如果您正在运行自己的 Langflow 实例, 您需要提供 URLlangflowId: 您组织的ID, 可以在流程编辑器的 API 模式中找到 。 这对你自己来说并不必要apiKey: 可以在您的 DataStax 账户内或在开源 Langflow 设置中生成的 Langflow API 密钥
// using DataStax Langflow, you do not need to provide the baseUrl
const dsLangflowClient = new LangflowClient({ langflowId, apiKey });
// for open-source langflow, you will need to provide a baseUrl and optionally an apiKey
const baseUrl = "http://localhost:7860";
const apiKey = "sk-...";
const osLangflowClient = new LangflowClient({ baseUrl, apiKey });
运行一流
运行流程的朗福文档。 。 。 .
一旦有客户端,就可以使用 flowID。这可以在Langflow的API模式中找到.
const flow = client.flow(flowId);
你可以通过电话运行一个流 run ,其中文本输入到流程中:
const response = await client.flow(flowId).run(input);
您可以添加 微调 像这样流出:
const response = await client
.flow(flowId)
.tweak(tweakName, tweakOptions)
.run(input);
或者你可以通过所有微调 作为物体:
const response = await client.flow(flowId).run(input, { tweaks });
也可以通过输入和输出选项,以及会话ID.
import { InputTypes, OutputTypes } from "@datastax/langflow-client/consts";
const response = await client.flow(flowId).run(input, {
input_type: InputTypes.CHAT,
output_type: OutputTypes.CHAT,
session_id,
tweaks,
});
可用的输入类型有"聊天","文字"和"任何"等. 可用的输出类型有"聊天","文字","任何"和"调试"等. 两者的默认是"聊天".
流回声
Langflow在输出上非常灵活. 所以说 FlowResponse 对象允许您原始访问 sessionId 编辑 outputs。 。 。 .
const response = await client.flow(flowId).run(input);
console.log(response.outputs);
有一个便利功能可以返回第一个聊天输出消息文本 。 如果您的流量中只有一个聊天输出组件, 这是获取该响应的有用快捷方式 .
const response = await client.flow(flowId).run(input);
console.log(response.chatOutputText());
流线
Langflow API支持流回响应. 而不是打电话 run 编号 Flow 对象,您可以调用 stream 同样的论据,答复将是: ReadableStream 对象.
const response = await client.flow(flowId).stream(input);
for await (const event of response) {
console.log(event);
}
有三个不同的事件: add_message, (中文(简体) ), token,以及 end这些事件意味着:
add_message: 一条消息被添加到聊天中,可以指: 人输入消息或AI的回复token: 作为流中生成的电文的一部分而发布的符号end: 所有符号都已返回, 此信件也将包含完整FlowResponse
事件对象的格式 :
{
event: "add_message" | "token" | "end",
data: object
}
这个 event.data 每个事件类型都不同。 这个 token 事件类型最简单, 看起来像这样:
{
"event": "token",
"data": {
"chunk": "hello ",
"id": "6686ff20-0c95-40bb-8879-fd90ed3d634e",
"timestamp": "2025-02-12 22:18:04 UTC"
}
}
还有呢 langflow 文档中的文档和流化响应实例。 。 。 .
文件上传
图像
这个 Langflow v1 文件上传 API 支持将图像文件上传到流中,然后可以在流中使用.
聊天输入组件支持文件作为输入和文本. 您需要先上传您的文件, 使用文件上传功能, 然后以 tweak 为流程提供文件路径 .
const buffer = await readFile(path);
const file = new File([buffer], "image.jpg", { type: "image/jpeg" });
const flow = client.flow(flowId)
const file = await flow.uploadFile(file);
console.log(file);
// => { flowId: "XXX", filePath: "YYY" }
const response = await flow
.tweak("ChatInput-abcd": { files: file.filePath })
.run("What can you see in this image?");
[尖叫声]
DataStax Langflow不提供文件上传功能,你会收到一个501 Not已执行错误.
文件上传
这个 Langflow v2 文件上传 API 支持向用户上传文件。 然后,这些可用于: 文件组件。 。 。 .
[尖叫声] V2 文件上传,文件组件不支持图像上传. 对于图像,您应该使用 v1 文件上传 API。 。 。 .
您可以上传这样的文件 :
const buffer = await readFile(path);
const file = new File([buffer], "document.pdf", { type: "application/pdf" });
const fileUpload = await client.files.upload(file);
console.log(file);
// => { path: "abc123/document.pdf", name: "document", ... }
然后,您可以使用微调在流程中将其发送到文件组件.
const flow = client.flow(flowId);
flow.tweak("File-abc123", {
path: fileUpload.path,
});
您也可以列出您上传的文件 files.list() 函数 :
const files = await client.files.list();
console.log(files);
// [{ path: "...", }, ...]
[注] TODO:通过API可以使用的其他文件方法:下载,编辑,删除,并删除全部
日志
日志 API 的 Langflow 文件。 。 。 .
获取日志
您可以为您的 Langflow 实例获取日志 .
const logs = await client.logs.fetch();
获取日志时,可以通过 timestamp 或数 lines_before 或者说 lines_after 时间戳。 例如,以下代码将获得一个小时前发生的10个日志行:
const logs = await client.logs.fetch({
timestamp: Date.now() - 60 * 60 * 1000,
lines_after: 10,
});
流出日志
您也可以通过请求 流出端点。 。 。 .
for await (const log of await client.logs.stream()) {
console.log(log);
}
中止请求
您可以使用标准 AbortController 通过 a 取消请求 signal 页:1 run 或者说 uploadFile 函数。 函数将拒绝 a DOMException 名称出错 AbortError 或者,如果你使用 AbortSignal.timeout, (中文(简体) ), TimeoutError。 。 。 .
例如,在运行以下代码时,如果整个请求需要超过500ms,则承诺会拒绝,错误消息会是"由于超时而中止操作".
const signal = AbortSignal.timeout(500);
try {
const response = await client.flow(flowId).run(input, { signal });
} catch (error) {
console.error(error.message);
}
捐款
要运行和贡献到此库, 您可以克隆寄存器 :
git clone [email protected]:datastax/langflow-client-ts.git
cd langflow-client-ts
安装依赖性 :
npm install
运行测试 :
npm test
将 TypeScript 传送到 JavaScript :
npm run build
在监视模式下将 TypeScript 传送到 JavaScript :
npm run build:watch
打开代码 :
npm run lint
格式化代码 :
npm run format
检查代码的格式 :
npm run format:check