MCPcopy Create free account
hub / github.com/TeleBoxOrg/TeleBox_Plugins / parseOpenAIResponseData

Function parseOpenAIResponseData

ai/ai.ts:2209–2245  ·  view source on GitHub ↗
(
  data: any,
)

Source from the content-addressed store, hash-verified

2207
2208const parseOpenAIResponseData = async (
2209 data: any,
2210): Promise<{
2211 text: string;
2212 images: AIImage[];
2213 sources: Array<{ url: string; title?: string }>;
2214}> => {
2215 if (
2216 data &&
2217 typeof data === "object" &&
2218 !Buffer.isBuffer(data) &&
2219 !(data instanceof Uint8Array) &&
2220 !isAsyncIterable(data)
2221 ) {
2222 if (data?.object === "response") {
2223 return aggregateResponsesApiPayloads([data]);
2224 }
2225 return aggregateOpenAIResponses([data]);
2226 }
2227
2228 const raw = await readResponseBodyAsText(data);
2229 const payloads = parseOpenAIResponsePayloads(raw);
2230 if (payloads.length > 0) {
2231 const hasResponsesPayload = payloads.some(
2232 (payload) =>
2233 payload?.object === "response" ||
2234 payload?.response?.object === "response" ||
2235 (typeof payload?.type === "string" &&
2236 payload.type.startsWith("response.")),
2237 );
2238 return hasResponsesPayload
2239 ? aggregateResponsesApiPayloads(payloads)
2240 : aggregateOpenAIResponses(payloads);
2241 }
2242
2243 return { text: raw.trim() || "AI 回复为空", images: [], sources: [] };
2244};
2245
2246const buildDoubaoVideoUrl = (data: any): string | null => {
2247 return (
2248 data?.data?.result?.video_url ||

Callers 2

Calls 5

isAsyncIterableFunction · 0.85
aggregateOpenAIResponsesFunction · 0.85
readResponseBodyAsTextFunction · 0.85

Tested by

no test coverage detected