跳到内容

@mfui/openai-responses ​

@mfui/openai-responses 把 OpenAI Responses SSE 流转换成 MFUI 语义 SSE 流。

当上游 stream 输出 response.output_text.delta、response.completed 等 Responses API 事件时,使用这个包。

createMFUIResponse() ​

根据上游 OpenAI Responses 流创建 MFUI 语义 SSE Response。

Import ​

ts
import { createMFUIResponse } from '@mfui/openai-responses';

Signature ​

ts
function createMFUIResponse(
  source: OpenAIResponsesStreamSource,
  mfui: MFUIManifest,
  options?: OpenAIResponsesMFUIResponseOptions,
): Response

入参 ​

名称类型是否必填默认值描述
sourceOpenAIResponsesStreamSource是无Provider Response、response body stream,或 null。
mfuiMFUIManifest是无当前请求可用的组件。
optionsOpenAIResponsesMFUIResponseOptions否{}Response、parser、writer 和生命周期选项。

返回值 ​

类型描述
Response输出 MFUI 语义 SSE 事件的 text/event-stream response。

示例 ​

ts
import { createMFUIPrompt } from '@mfui/server';
import { createMFUIResponse } from '@mfui/openai-responses';

const upstream = await fetch('https://api.openai.com/v1/responses', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    model: 'gpt-4o-mini',
    instructions: [
      'You are a helpful assistant.',
      createMFUIPrompt(mfui),
    ].join('\n\n'),
    input: messages,
    stream: true,
  }),
});

return createMFUIResponse(upstream, mfui);

注意事项 ​

Provider 处理失败时,返回的 MFUI stream 会输出 error 事件并关闭。传入 onError 时会调用它。

OpenAIResponsesStreamSource ​

createMFUIResponse()、readStream() 和 pipeMFUIStream() 接受的 source。

结构 ​

ts
type OpenAIResponsesStreamSource =
  | Response
  | ReadableStream<Uint8Array>
  | null

OpenAIResponsesMFUIResponseOptions ​

createMFUIResponse() 的选项。

字段类型是否必填默认值描述
closeboolean否trueProvider stream 结束时是否关闭 MFUI parser 和 writer。
parserMFUIBlockParserOptions否{}传给 createMFUIBlockParser() 的选项。
writerMFUIStreamWriterOptions否{}传给 createMFUIStreamWriter() 的选项。
responseInitResponseInit否{}传给返回 Response 的 init 对象。
onMessageMFUIMessageHandler否无MFUI response 完成后,使用最终投影消息调用。
onErrorMFUIErrorHandler否无Provider stream 处理或 MFUI block 解析失败时调用。

readStream() ​

读取 OpenAI Responses SSE 事件,并产出标准化 JSON event。

Import ​

ts
import { readStream } from '@mfui/openai-responses';

Signature ​

ts
function readStream(
  source: OpenAIResponsesStreamSource,
): AsyncIterable<OpenAIResponsesStreamEvent>

入参 ​

名称类型是否必填默认值描述
sourceOpenAIResponsesStreamSource是无Provider SSE source。

返回值 ​

类型描述
AsyncIterable<OpenAIResponsesStreamEvent>解析后的 provider events。type 优先来自 SSE event name,否则来自 data.type。

OpenAIResponsesStreamEvent ​

writeMFUIStream() 消费的 provider event 结构。

字段类型是否必填默认值描述
typestring否无Provider event 类型。MFUI 会读取 response.output_text.delta 和 response.completed。
deltastring否无当 type 为 response.output_text.delta 时使用的文本增量。
responseRecord<string, unknown>否无完成后的 response 对象。response.usage.input_tokens 和 response.usage.output_tokens 会映射到 MFUI usage。
[key]unknown否无MFUI 会忽略额外 provider 字段。

writeMFUIStream() ​

把解析后的 Responses events 写入 MFUI block parser。

Import ​

ts
import { writeMFUIStream } from '@mfui/openai-responses';

Signature ​

ts
function writeMFUIStream(
  stream: AsyncIterable<OpenAIResponsesStreamEvent>,
  parser: MFUIBlockParser,
  options?: OpenAIResponsesMFUIStreamOptions,
): Promise<void>

入参 ​

名称类型是否必填默认值描述
streamAsyncIterable<OpenAIResponsesStreamEvent>是无解析后的 provider events。
parserMFUIBlockParser是无接收 provider 文本增量的 MFUI block parser。
optionsOpenAIResponsesMFUIStreamOptions否{}写入选项。

返回值 ​

类型描述
Promise<void>Provider stream 完全消费,且 parser flush 或 close 后 resolve。

OpenAIResponsesMFUIStreamOptions ​

writeMFUIStream() 和 pipeMFUIStream() 的选项。

字段类型是否必填默认值描述
closeboolean否trueProvider stream 结束时是否调用 parser.close()。为 false 时会改为调用 parser.flush()。

pipeMFUIStream() ​

读取 provider SSE source,并写入 MFUI block parser。

Import ​

ts
import { pipeMFUIStream } from '@mfui/openai-responses';

Signature ​

ts
function pipeMFUIStream(
  source: OpenAIResponsesStreamSource,
  parser: MFUIBlockParser,
  options?: OpenAIResponsesMFUIStreamOptions,
): Promise<void>

入参 ​

名称类型是否必填默认值描述
sourceOpenAIResponsesStreamSource是无Provider SSE source。
parserMFUIBlockParser是无接收 provider 文本增量的 MFUI block parser。
optionsOpenAIResponsesMFUIStreamOptions否{}写入选项。

返回值 ​

类型描述
Promise<void>Provider stream 消费完成后 resolve。