@llumiverse/drivers
Version:
LLM driver implementations. Currently supported are: openai, huggingface, bedrock, replicate.
54 lines (37 loc) • 1.42 kB
text/typescript
import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity";
import { DriverOptions } from "@llumiverse/core";
import { AzureOpenAI } from "openai";
import { BaseOpenAIDriver } from "./index.js";
export interface AzureOpenAIDriverOptions extends DriverOptions {
/**
* The credentials to use to access Azure OpenAI
*/
azureADTokenProvider?: any; //type with azure credentials
apiKey?: string;
endpoint?: string;
apiVersion?: string
deployment?: string;
}
export class AzureOpenAIDriver extends BaseOpenAIDriver {
service: AzureOpenAI;
provider: "azure_openai";
constructor(opts: AzureOpenAIDriverOptions) {
super(opts);
if (!opts.azureADTokenProvider && !opts.apiKey) {
opts.azureADTokenProvider = this.getDefaultAuth();
}
this.service = new AzureOpenAI({
apiKey: opts.apiKey,
azureADTokenProvider: opts.azureADTokenProvider,
endpoint: opts.endpoint,
apiVersion: opts.apiVersion ?? "2024-10-21",
deployment: opts.deployment
});
this.provider = "azure_openai";
}
getDefaultAuth() {
const scope = "https://cognitiveservices.azure.com/.default";
const azureADTokenProvider = getBearerTokenProvider(new DefaultAzureCredential(), scope);
return azureADTokenProvider;
}
}