@unified-llm/core
Version:
Unified LLM interface (in-memory).
64 lines • 2.83 kB
JavaScript
// src/providers/azure/provider.ts
import { OpenAIProvider } from '../openai';
import OpenAI, { AzureOpenAI } from 'openai';
export class AzureOpenAIProvider extends OpenAIProvider {
constructor(auth, base) {
var _a;
/* 親には apiKey と model (= deployment) を渡す */
super({ ...base, model: auth.deployment });
const { apiKey } = base; // ← apiKey は統一してここから取得
const apiVersion = (_a = auth.apiVersion) !== null && _a !== void 0 ? _a : 'preview';
/* ── AAD 認証は旧 SDK (AzureOpenAI) 強制 ───────────────── */
if (auth.aadTokenProvider) {
this.initAzureOpenAI_AAD(auth, apiVersion);
return;
}
/* ── API-Key 認証パス ──────────────────────────────────── */
if (!apiKey) {
throw new Error('AzureOpenAIProvider: apiKey is required unless aadTokenProvider is supplied');
}
if (auth.useV1) {
this.initOpenAI_Key(auth, apiKey, apiVersion); // /openai/v1
}
else {
this.initAzureOpenAI_Key(auth, apiKey, apiVersion); // /deployments/…
}
}
/* ---------- /openai/v1 (+ API-Key) ---------- */
initOpenAI_Key(auth, apiKey, apiVersion) {
this.client = new OpenAI({
baseURL: `${auth.endpoint.replace(/\/$/, '')}/openai/v1/`,
defaultQuery: { 'api-version': apiVersion },
apiKey, // 型合わせ
defaultHeaders: { 'api-key': apiKey }, // Azure は "api-key" ヘッダー
});
}
/* ---------- /deployments/ (+ API-Key) ---------- */
initAzureOpenAI_Key(auth, apiKey, apiVersion) {
this.client = new AzureOpenAI({
endpoint: auth.endpoint, // ← camelCase: endpoint
apiVersion,
apiKey,
deployment: auth.deployment,
});
}
/* ---------- /deployments/ (+ AAD) ---------- */
async initAzureOpenAI_AAD(auth, apiVersion) {
if (!auth.aadTokenProvider) {
throw new Error('AzureOpenAIProvider: aadTokenProvider is required for AAD authentication');
}
const cred = await auth.aadTokenProvider();
this.client = new AzureOpenAI({
endpoint: auth.endpoint,
apiVersion,
deployment: auth.deployment,
azureADTokenProvider: async () => {
const t = await cred.getToken('https://cognitiveservices.azure.com/.default');
if (!(t === null || t === void 0 ? void 0 : t.token))
throw new Error('AAD token acquisition failed');
return t.token;
},
});
}
}
//# sourceMappingURL=provider.js.map