Files
9router/open-sse/executors/azure.js
2026-04-24 10:04:59 +07:00

58 lines
1.5 KiB
JavaScript

import { DefaultExecutor } from "./default.js";
export class AzureExecutor extends DefaultExecutor {
constructor() {
super("azure");
}
buildUrl(model, stream, urlIndex = 0, credentials = null) {
const azureEndpoint = credentials?.providerSpecificData?.azureEndpoint
|| process.env.AZURE_ENDPOINT
|| "https://api.openai.com";
const apiVersion = credentials?.providerSpecificData?.apiVersion
|| process.env.AZURE_API_VERSION
|| "2024-10-01-preview";
const deployment = credentials?.providerSpecificData?.deployment
|| model
|| process.env.AZURE_DEPLOYMENT
|| "gpt-4";
const endpoint = azureEndpoint.replace(/\/$/, "");
return `${endpoint}/openai/deployments/${deployment}/chat/completions?api-version=${apiVersion}`;
}
buildHeaders(credentials, stream = true) {
const headers = {
"Content-Type": "application/json",
...this.config.headers
};
const apiKey = credentials?.apiKey
|| credentials?.accessToken
|| process.env.OPENAI_API_KEY;
if (apiKey) {
headers["api-key"] = apiKey;
}
const organization = credentials?.providerSpecificData?.organization
|| process.env.AZURE_ORGANIZATION;
if (organization) {
headers["OpenAI-Organization"] = organization;
}
if (stream) {
headers["Accept"] = "text/event-stream";
}
return headers;
}
transformRequest(model, body, stream, credentials) {
return body;
}
}