跳到主要内容

集成

简介

通过 HTTP 请求触发流程的执行,并可携带参数。

调用方式

批处理

请求

POST /share/api/v1/graphx/flow/run

请求参数

名称类型是否必需描述
flow_idstring流程 ID
messagesarray会话消息
paramsobject安插在流程节点里的参数

响应

名称类型描述
dataarray流程执行后的所有结果

示例

curl -X POST \
http://localhost:8080/share/api/v1/graphx/flow/run \
-H 'Content-Type: application/json' \
-d '{
"flow_id": "CE84E6E9-5E2D-5457-99B4-9835F274D8AC",
"params": {},
"messages": [{"role": "user", "content": "张三,90"}]
}'

响应示例

{"data": ["{\"name\": \"张三\",  \"age\": 90,  \"company\": \"\"}"]}

流处理

流处理与批处理使用同样的API,不同的是客户端需要采用 SSE (Server-Sent Events)方式接收数据。并且在流程中的智能体节点有开启流输出配置。

示例

import { fetchEventSource } from "@microsoft/fetch-event-source";
const body = {
flow_id: "a796bfbd-e94b-4a55-84f5-fce69ee35157",
messages: _.concat(JSON.parse(history), [{ role: "user", content: prompt }]),
params: {},
};
await fetchEventSource("http://localhost:8080/share/api/v1/graphx/flow/run", {
method: "POST",
body: JSON.stringify(body),
openWhenHidden: true,
headers: {
"Content-Type": "application/json",
},
onmessage: (event: any) => {
// 将解析后的数据添加到流中
// 删除前导 data: 标记
let msg = event.data.replaceAll("data: ", "");
// 替换第一个空格
msg = msg.replace(/^\s/, "");
if (msg.startsWith("@__Result__: ")) {
// do data
const result = JSON.parse(msg.replace("@__Result__: ", ""));
console.log(result);
} else {
observer.next(event.data);
}
},
onerror: (err: any) => {
// 连接错误处理
observer.error(new Error(err));
throw err;
},
onclose: () => {
// 连接已关闭
observer.complete();
},
});
提示

与批处理不同,流输出的最后一行是 @__Result__: + datadata 与批处理返回的 data 一致。 通过处理 @__Result__: 标记获取流程返回的数据。

data 内容

{"data": ["{\"name\": \"张三\",  \"age\": 90,  \"company\": \"\"}"]}