Skip to content

Commit 568ac2a

Browse files
committed
embedContent do not use stream api
1 parent 8d97c96 commit 568ac2a

File tree

6 files changed

+41
-56
lines changed

6 files changed

+41
-56
lines changed

dist/main_bun.mjs

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -409,20 +409,18 @@ async function* streamGenerateContent(apiParam, model, params, requestOptions) {
409409
yield responseJson;
410410
}
411411
}
412-
async function* embedContent(apiParam, model, params, requestOptions) {
412+
async function embedContent(apiParam, model, params, requestOptions) {
413413
const response = await makeRequest(
414-
toURL({ model, task: "embedContent", stream: true, apiParam }),
414+
toURL({ model, task: "embedContent", stream: false, apiParam }),
415415
JSON.stringify(params),
416416
requestOptions
417417
);
418418
const body = response.body;
419419
if (body == null) {
420420
return;
421421
}
422-
for await (const event of body.pipeThrough(new TextDecoderStream()).pipeThrough(new EventSourceParserStream())) {
423-
const responseJson = JSON.parse(event.data);
424-
yield responseJson;
425-
}
422+
const responseJson = await response.json();
423+
return responseJson;
426424
}
427425
async function makeRequest(url, body, requestOptions) {
428426
let response;
@@ -735,11 +733,9 @@ async function embeddingProxyHandler(rawReq) {
735733
log?.warn("request", embedContentRequest);
736734
let geminiResp = [];
737735
try {
738-
for await (const it of embedContent(apiParam, new GeminiModel("text-embedding-004"), embedContentRequest)) {
739-
const data = it.embedding?.values;
740-
geminiResp = data;
741-
break;
742-
}
736+
const it = await embedContent(apiParam, new GeminiModel("text-embedding-004"), embedContentRequest);
737+
const data = it?.embedding?.values;
738+
geminiResp = data;
743739
} catch (err) {
744740
log?.error(req);
745741
log?.error(err?.message ?? err.toString());

dist/main_cloudflare-workers.mjs

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -409,20 +409,18 @@ async function* streamGenerateContent(apiParam, model, params, requestOptions) {
409409
yield responseJson;
410410
}
411411
}
412-
async function* embedContent(apiParam, model, params, requestOptions) {
412+
async function embedContent(apiParam, model, params, requestOptions) {
413413
const response = await makeRequest(
414-
toURL({ model, task: "embedContent", stream: true, apiParam }),
414+
toURL({ model, task: "embedContent", stream: false, apiParam }),
415415
JSON.stringify(params),
416416
requestOptions
417417
);
418418
const body = response.body;
419419
if (body == null) {
420420
return;
421421
}
422-
for await (const event of body.pipeThrough(new TextDecoderStream()).pipeThrough(new EventSourceParserStream())) {
423-
const responseJson = JSON.parse(event.data);
424-
yield responseJson;
425-
}
422+
const responseJson = await response.json();
423+
return responseJson;
426424
}
427425
async function makeRequest(url, body, requestOptions) {
428426
let response;
@@ -735,11 +733,9 @@ async function embeddingProxyHandler(rawReq) {
735733
log?.warn("request", embedContentRequest);
736734
let geminiResp = [];
737735
try {
738-
for await (const it of embedContent(apiParam, new GeminiModel("text-embedding-004"), embedContentRequest)) {
739-
const data = it.embedding?.values;
740-
geminiResp = data;
741-
break;
742-
}
736+
const it = await embedContent(apiParam, new GeminiModel("text-embedding-004"), embedContentRequest);
737+
const data = it?.embedding?.values;
738+
geminiResp = data;
743739
} catch (err) {
744740
log?.error(req);
745741
log?.error(err?.message ?? err.toString());

dist/main_deno.mjs

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -409,20 +409,18 @@ async function* streamGenerateContent(apiParam, model, params, requestOptions) {
409409
yield responseJson;
410410
}
411411
}
412-
async function* embedContent(apiParam, model, params, requestOptions) {
412+
async function embedContent(apiParam, model, params, requestOptions) {
413413
const response = await makeRequest(
414-
toURL({ model, task: "embedContent", stream: true, apiParam }),
414+
toURL({ model, task: "embedContent", stream: false, apiParam }),
415415
JSON.stringify(params),
416416
requestOptions
417417
);
418418
const body = response.body;
419419
if (body == null) {
420420
return;
421421
}
422-
for await (const event of body.pipeThrough(new TextDecoderStream()).pipeThrough(new EventSourceParserStream())) {
423-
const responseJson = JSON.parse(event.data);
424-
yield responseJson;
425-
}
422+
const responseJson = await response.json();
423+
return responseJson;
426424
}
427425
async function makeRequest(url, body, requestOptions) {
428426
let response;
@@ -735,11 +733,9 @@ async function embeddingProxyHandler(rawReq) {
735733
log?.warn("request", embedContentRequest);
736734
let geminiResp = [];
737735
try {
738-
for await (const it of embedContent(apiParam, new GeminiModel("text-embedding-004"), embedContentRequest)) {
739-
const data = it.embedding?.values;
740-
geminiResp = data;
741-
break;
742-
}
736+
const it = await embedContent(apiParam, new GeminiModel("text-embedding-004"), embedContentRequest);
737+
const data = it?.embedding?.values;
738+
geminiResp = data;
743739
} catch (err) {
744740
log?.error(req);
745741
log?.error(err?.message ?? err.toString());

dist/main_node.mjs

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -888,20 +888,18 @@ async function* streamGenerateContent(apiParam, model, params, requestOptions) {
888888
yield responseJson;
889889
}
890890
}
891-
async function* embedContent(apiParam, model, params, requestOptions) {
891+
async function embedContent(apiParam, model, params, requestOptions) {
892892
const response = await makeRequest(
893-
toURL({ model, task: "embedContent", stream: true, apiParam }),
893+
toURL({ model, task: "embedContent", stream: false, apiParam }),
894894
JSON.stringify(params),
895895
requestOptions
896896
);
897897
const body = response.body;
898898
if (body == null) {
899899
return;
900900
}
901-
for await (const event of body.pipeThrough(new TextDecoderStream()).pipeThrough(new EventSourceParserStream())) {
902-
const responseJson = JSON.parse(event.data);
903-
yield responseJson;
904-
}
901+
const responseJson = await response.json();
902+
return responseJson;
905903
}
906904
async function makeRequest(url, body, requestOptions) {
907905
let response;
@@ -1214,11 +1212,9 @@ async function embeddingProxyHandler(rawReq) {
12141212
log?.warn("request", embedContentRequest);
12151213
let geminiResp = [];
12161214
try {
1217-
for await (const it of embedContent(apiParam, new GeminiModel("text-embedding-004"), embedContentRequest)) {
1218-
const data = it.embedding?.values;
1219-
geminiResp = data;
1220-
break;
1221-
}
1215+
const it = await embedContent(apiParam, new GeminiModel("text-embedding-004"), embedContentRequest);
1216+
const data = it?.embedding?.values;
1217+
geminiResp = data;
12221218
} catch (err) {
12231219
log?.error(req);
12241220
log?.error(err?.message ?? err.toString());

src/gemini-api-client/gemini-api-client.ts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,14 @@ export async function* streamGenerateContent(
4343
}
4444
}
4545

46-
export async function* embedContent(
46+
export async function embedContent(
4747
apiParam: ApiParam,
4848
model: GeminiModel,
4949
params: Task["embedContent"]["request"],
5050
requestOptions?: RequestOptions,
5151
) {
5252
const response = await makeRequest(
53-
toURL({ model, task: "embedContent", stream: true, apiParam }),
53+
toURL({ model, task: "embedContent", stream: false, apiParam }),
5454
JSON.stringify(params),
5555
requestOptions,
5656
)
@@ -59,10 +59,8 @@ export async function* embedContent(
5959
return
6060
}
6161

62-
for await (const event of body.pipeThrough(new TextDecoderStream()).pipeThrough(new EventSourceParserStream())) {
63-
const responseJson = JSON.parse(event.data) as Task["embedContent"]["response"]
64-
yield responseJson
65-
}
62+
const responseJson = (await response.json()) as Task["embedContent"]["response"]
63+
return responseJson
6664
}
6765

6866
async function makeRequest(url: URL, body: string, requestOptions?: RequestOptions): Promise<Response> {
@@ -103,7 +101,12 @@ function toURL({
103101
task,
104102
stream,
105103
apiParam,
106-
}: { model: GeminiModel; task: keyof Task; stream: boolean; apiParam: ApiParam }) {
104+
}: {
105+
model: GeminiModel
106+
task: keyof Task
107+
stream: boolean
108+
apiParam: ApiParam
109+
}) {
107110
const BASE_URL = "https://generativelanguage.googleapis.com"
108111
const api_version = model.apiVersion()
109112
const url = new URL(`${BASE_URL}/${api_version}/models/${model}:${task}`)

src/openai/embeddingProxyHandler.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,9 @@ export async function embeddingProxyHandler(rawReq: Request): Promise<Response>
2424
let geminiResp: number[] | undefined = []
2525

2626
try {
27-
for await (const it of embedContent(apiParam, new GeminiModel("text-embedding-004"), embedContentRequest)) {
28-
const data = it.embedding?.values
29-
geminiResp = data
30-
break
31-
}
27+
const it = await embedContent(apiParam, new GeminiModel("text-embedding-004"), embedContentRequest)
28+
const data = it?.embedding?.values
29+
geminiResp = data
3230
} catch (err) {
3331
// 出现异常时打印请求参数和响应,以便调试
3432
log?.error(req)

0 commit comments

Comments
 (0)