目录
一、接口说明
该接口未来将弃用,新用户请参考: workflow2.0
workflow 对外接口:
- 非流式响应:非流式响应只会给结束节点返回
- 流式响应:支持message节点信息返回,结束节点信息,以及两个节点流式输出
二、接口信息
请求⽅式 | POST |
---|---|
请求地址 | https://xingchen-api.xf-yun.com/workflow/v1/run |
权限校验 | Bearer鉴权 |
2.1 请求头
参数 | 取值 | 说明 |
---|---|---|
Content-Type | application/json | 给出请求正⽂的⽅式。 |
Authorization | Bearer $XINGCHEN_API_KEY' | 鉴权 key |
X-Consumer-Username | app_id | 应用id,注意此字段是过kong鉴权时,由kong加,用户无需关注 |
2.2 请求体
参数 | 取值 | 必传 | 说明 |
---|---|---|---|
flow_id | string | 是 | 工作流id,判断工作流是否存在,且与appid的归属关系 |
uid | string | 否 | 用户id |
stream | bool | 是 | 是否启用流式返回: 流式:true 非流式:false |
ext | object | 否 | 用于指定一些额外字段,比如一些插件隐藏字段 暂时用不到,当前包括:bot_id和caller |
parameters | Object | 是 | 工作流开始节点的输入参数及取值, 你可以在指定工作流的编排页面查看参数列表:{ "input1": "xxxxx", "input2": "xxxxx" } |
2.3 响应体
2.3.1 流式响应
参数名称 | 类型 | 参数说明 |
---|---|---|
code | int | 错误码,0为成功,非0表示报错 |
message | string | 错误信息描述 |
id | string | 服务端会话id,用于标识本次会话 |
created | number | 对话创建时间, 单位: s |
time_cost | number | workflow耗时,单位:s |
progress | number | workflow进度条 |
event | string | 事件类型,当前支持: + Message:工作流节点输出消息,例如消息节点、结束节点的输出消息。可以在 data 中查看具体的消息内容。 + Error:报错。可以查看 code 和 message,排查问题 + Done: 表示工作流结束 |
data | object | workflow 返回结果 json obj序列化字符串或者字符串 |
data.node_id | string | 节点id |
data.node_seq | int | 节点序号 |
data.node_is_finish | bool | 节点输出是否结束 |
data.content | string | 节点输出数据 |
usage | object | token计量,只在工作流结束帧才会给出 |
usage.question_tokens | int | 兼容星火大模型,保留字段,可忽略 |
usage. prompt_tokens | int | 工作流请求大模型的token |
usage. completion_tokens | int | 工作流大模型回复 |
usage. total_tokens | int | 工作流总的token消耗 |
2.3.2 非流式输出
参数名称 | 类型 | 参数说明 |
---|---|---|
code | int | 错误码,0为成功,非0表示报错 |
message | string | 错误信息描述 |
id | string | 服务端会话id,用于标识本次会话 |
created | number | 对话创建时间, 单位: s |
time_cost | number | 耗时,单位:s |
data | string | workflow 返回结果 json obj序列化字符串或者字符串 |
usage | object | token计量,只在工作流结束帧才会给出 |
usage.question_tokens | int | 兼容星火大模型,保留字段,可忽略 |
usage. prompt_tokens | int | 工作流请求大模型的token |
usage. completion_tokens | int | 工作流大模型回复 |
usage. total_tokens | int | 工作流总的token消耗 |
三、请求示例
3.1 http非流式输出
request示例:
curl -i -k -X POST --location "https://agent.xf-yun.com/workflow/v1/run" \
-H "Authorization: Bearer xxxxxxxxxx" \
-H "Content-Type: application/json" \
-d "{
\"flow_id\":\"7245085474437238786\",
\"uid\":\"123\",
\"parameters\":{
\"AGENT_USER_INPUT\":\"你好\"
},
\"ext\": {
\"bot_id\":\"adjfidjf\",
\"caller\":\"workflow\"
},
\"stream\":false
}"
response示例
{
"code": 0,
"message": "success",
"id": "spf00081de8@dx192324980b7a4f3782",
"created": 1727420533,
"time_cost": 20.0,
"data": "{\"output\": \"你好\"}",
"usage": {
"question_tokens": 0,
"prompt_tokens": 0,
"completion_tokens": 0,
"total_tokens": 0
}
}
3.2 http流式输出
request示例:
curl -i -k -X POST --location "https://agent.xf-yun.com/workflow/v1/run" \
-H "Authorization: Bearer xxxxxxxxxx" \
-H "Content-Type: application/json" \
-d "{
\"flow_id\":\"7245085474437238786\",
\"uid\":\"123\",
\"parameters\":{
\"AGENT_USER_INPUT\":\"你好\"
},
\"ext\": {
\"bot_id\":\"adjfidjf\",
\"caller\":\"workflow\"
},
\"stream\":true
}"
response示例:
data: {"code":0,"message":"success","id":"spf00081de8@dx192324980b7a4f3782","data":{"node_id":"node-end::b0b997db-4504-44fa-bbb3-34407db5ce23","node_seq":0,"node_is_finish":false,"content":"开始\noutput3:\noutput1:\noutput2:您好"},"created":1727420533,"time_cost":2.42,"progress":0.4,"event":"Message"}
data: {"code":0,"message":"success","id":"spf00081de8@dx192324980b7a4f3782","data":{"node_id":"node-end::b0b997db-4504-44fa-bbb3-34407db5ce23","node_seq":1,"node_is_finish":false,"content":"开始\noutput3:\noutput1:\noutput2:您好!有什么"},"created":1727420533,"time_cost":2.502,"progress":0.4,"event":"Message"}
data: {"code":0,"message":"success","id":"spf00081de8@dx192324980b7a4f3782","data":{"node_id":"node-end::b0b997db-4504-44fa-bbb3-34407db5ce23","node_seq":2,"node_is_finish":false,"content":"开始\noutput3:\noutput1:\noutput2:您好!有什么我可以帮助您的"},"created":1727420533,"time_cost":2.614,"progress":0.4,"event":"Message"}
data: {"code":0,"message":"success","id":"spf00081de8@dx192324980b7a4f3782","data":{"node_id":"node-end::b0b997db-4504-44fa-bbb3-34407db5ce23","node_seq":3,"node_is_finish":false,"content":"开始\noutput3:\noutput1:\noutput2:您好!有什么我可以帮助您的吗?"},"created":1727420533,"time_cost":2.83,"progress":0.4,"event":"Message"}
data: {"code":0,"message":"success","id":"spf00081de8@dx192324980b7a4f3782","data":{"node_id":"node-end::b0b997db-4504-44fa-bbb3-34407db5ce23","node_seq":4,"node_is_finish":false,"content":"开始\noutput3:\noutput1:\noutput2:您好!有什么我可以帮助您的吗?\n结束"},"created":1727420533,"time_cost":2.83,"progress":0.4,"event":"Message"}
data: {"code":0,"message":"success","id":"spf00081de8@dx192324980b7a4f3782","data":{"node_id":"node-end::b0b997db-4504-44fa-bbb3-34407db5ce23","node_seq":5,"node_is_finish":false,"content":"开始\noutput3:\noutput1:\noutput2:您好!有什么我可以帮助您的吗?\n结束"},"created":1727420533,"time_cost":3.035,"progress":0.4,"event":"Message"}
data: {"code":0,"message":"success","id":"spf00081de8@dx192324980b7a4f3782","data":{"node_id":"node-end::b0b997db-4504-44fa-bbb3-34407db5ce23","node_seq":6,"node_is_finish":true,"content":"开始\noutput3:\noutput1:\noutput2:您好!有什么我可以帮助您的吗?\n结束"},"created":1727420533,"time_cost":3.038,"progress":0.8,"event":"Message"}
data: {"code":0,"message":"success","id":"spf00081de8@dx192324980b7a4f3782","data":{},"created":1727420533,"usage":{"completion_tokens":36,"prompt_tokens":214,"total_tokens":250,"question_tokens":0},"time_cost":3.046,"progress":1.0,"event":"Done"}
四、代码示例
4.1 python 代码示例
import http.client
import json
headers = {
"Content-Type": "application/json",
"Accept": "text/event-stream",
"Authorization": "Bearer $APIKEY:APISECRET",
}
data = {
"flow_id": "7245245222671409153",
"uid": "123",
"parameters": {"AGENT_USER_INPUT": "你好"},
"ext": {"bot_id": "adjfidjf", "caller": "workflow"},
"stream": False,
}
payload = json.dumps(data)
conn = http.client.HTTPSConnection("agent.xf-yun.com")
conn.request("POST", "/workflow/v1/run", payload, headers, encode_chunked=True)
res = conn.getresponse()
if data.get("stream"):
while chunk := res.readline():
print(chunk.decode("utf-8"))
else:
data = res.readline()
print(data.decode("utf-8"))
五、错误码
错误码 | 描述 |
---|---|
0 | 成功 |
500 | 服务器异常 |
20101 | 三方协议参数异常 |
20201 | 未查到对应的Flow ID |
20400 | websocket建联异常 |
20804 | 流式输出超时 |
22300 | 引擎构建失败 |
22301 | 引擎运行失败 |
22302 | 节点执行失败 |