feat(P0-A): 整合第一版并冻结最终发布 #1

Open
tuyixuan wants to merge 115 commits from codex/wp7-07 into codex/wp0-09
3 changed files with 20 additions and 6 deletions
Showing only changes of commit 63de0917a0 - Show all commits
+4 -3
View File
@@ -1,5 +1,5 @@
{
"config_set_version": 2,
"config_set_version": 3,
"gateway_account_ref": "oneapi-intelligrow-test",
"models": [
{
@@ -23,13 +23,14 @@
}
},
{
"config_version": 1,
"config_version": 2,
"gateway_account_ref": "oneapi-intelligrow-test",
"model_id": "gpt-image-2",
"route_profile": {
"endpoint": "https://oneapi.intelligrow.cn/v1/images/generations",
"mode": "sync",
"protocol_version": "openai-images-v1"
"protocol_version": "openai-images-v1",
"reference_endpoint": "https://oneapi.intelligrow.cn/v1/images/edits"
}
}
],
+14 -2
View File
@@ -29,6 +29,10 @@ function assertModelConfig(modelConfig) {
|| !["gemini-native-v1", "openai-images-v1"].includes(profile.protocol_version)) {
throw new Error("WP7_02_ROUTE_PROFILE_INVALID");
}
if (profile.protocol_version === "openai-images-v1"
&& (profile.reference_endpoint !== "https://oneapi.intelligrow.cn/v1/images/edits")) {
throw new Error("WP7_02_REFERENCE_ROUTE_PROFILE_INVALID");
}
return modelConfig;
}
@@ -87,7 +91,15 @@ export function buildProviderRequest({ modelConfig, prompt, ratio, reference })
response_format: "b64_json",
size: gptImageRequestSizeForRatio(ratio),
};
if (reference) body.image = `data:${reference.mime_type};base64,${reference.bytes.toString("base64")}`;
if (reference) {
const form = new FormData();
form.append("model", config.model_id);
form.append("prompt", prompt);
form.append("response_format", "b64_json");
form.append("size", gptImageRequestSizeForRatio(ratio));
form.append("image[]", new Blob([reference.bytes], { type: reference.mime_type }), "reference.png");
return { body: form, headers: {}, method: "POST", url: config.route_profile.reference_endpoint };
}
return { body, headers, method: "POST", url: config.route_profile.endpoint };
}
@@ -253,7 +265,7 @@ export async function executeProviderRequest({ fetchImpl = fetch, modelConfig, p
const startedAt = performance.now();
try {
const response = await fetchImpl(request.url, {
body: JSON.stringify(request.body),
body: request.body instanceof FormData ? request.body : JSON.stringify(request.body),
headers: { ...request.headers, authorization: `Bearer ${token}` },
method: request.method,
signal: controller.signal,
@@ -38,12 +38,13 @@ const models = [
},
},
{
config_version: 1,
config_version: 2,
model_id: "gpt-image-2",
route_profile: {
endpoint: "https://oneapi.intelligrow.cn/v1/images/generations",
mode: "sync",
protocol_version: "openai-images-v1",
reference_endpoint: "https://oneapi.intelligrow.cn/v1/images/edits",
},
},
];