跳到导航

服务器发送事件和流式 API

使用 response-stream 键来建模流式端点

以 Markdown 格式查看
团队版和企业版功能

此功能仅适用于团队版和企业版计划。要开始使用,请联系 support@buildwithfern.com

在端点上指定 response-stream 允许您表示流式响应的端点。

JSON 流

如果您的 API 返回一系列 JSON 块,如下所示

{ "text": "Hi, I am a" }
{ "text": "chatbot. Do you have any"}
{ "text": "questions for me"}

那么只需在您的端点的 response-stream 下指定响应。

chat.yml
service:
base-path: /chat
endpoints:
stream:
method: POST
path: ""
response-stream: Chat
types:
Chat:
properties:
text: string

服务器发送事件

如果您的 API 返回服务器发送事件,包含 dataevent 键,如下所示

data: { "text": "Hi, I am a" }
data: { "text": "chatbot. Do you have any"}
data: { "text": "questions for me"}

那么请确保包含 format: sse

chat.yml
service:
base-path: /chat
endpoints:
stream:
method: POST
path: ""
response-stream:
type: Chat
format: sse
types:
Chat:
properties:
text: string

Stream 参数

对于端点来说,拥有一个 stream 参数来控制响应是否流式传输已经成为常见做法。Fern 以一流的方式支持这种模式。

只需指定 stream-condition 以及普通响应和流式响应:

chat.yml
service:
base-path: /chat
endpoints:
stream:
method: POST
path: ""
stream-condition: $request.stream
request:
name: StreamChatRequest
body:
properties:
stream: boolean
response: Chat
response-stream:
type: ChatChunk
format: sse
types:
Chat:
properties:
text: string
tokens: integer
ChatChunk:
properties:
text: string