Skip to content

Commit 9ccfdad

Browse files
sarangan12sinedied
authored andcommitted
Update default headers azure & Add Token Provider Check (#5379)
* Update Default Headers for Azure OpenAI Requests * nit * Update user agent string * Add Token Provider check * Update libs/langchain-openai/src/azure/llms.ts Co-authored-by: Yohan Lasorsa <[email protected]> * Update libs/langchain-openai/src/azure/embeddings.ts Co-authored-by: Yohan Lasorsa <[email protected]> * Update libs/langchain-openai/src/azure/chat_models.ts Co-authored-by: Yohan Lasorsa <[email protected]> * Format the code --------- Co-authored-by: Yohan Lasorsa <[email protected]>
1 parent 6fc533e commit 9ccfdad

File tree

4 files changed

+27
-1
lines changed

4 files changed

+27
-1
lines changed

libs/langchain-openai/src/azure/chat_models.ts

+8
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ export class AzureChatOpenAI extends ChatOpenAI {
5050
azureOpenAIApiInstanceName: this.azureOpenAIApiInstanceName,
5151
azureOpenAIApiKey: this.azureOpenAIApiKey,
5252
azureOpenAIBasePath: this.azureOpenAIBasePath,
53+
azureADTokenProvider: this.azureADTokenProvider,
5354
baseURL: this.clientConfig.baseURL,
5455
};
5556

@@ -70,6 +71,13 @@ export class AzureChatOpenAI extends ChatOpenAI {
7071
delete params.baseURL;
7172
}
7273

74+
params.defaultHeaders = {
75+
...params.defaultHeaders,
76+
"User-Agent": params.defaultHeaders?.["User-Agent"]
77+
? `${params.defaultHeaders["User-Agent"]}: langchainjs-azure-openai-v2`
78+
: `langchainjs-azure-openai-v2`,
79+
};
80+
7381
this.client = new AzureOpenAIClient({
7482
apiVersion: this.azureOpenAIApiVersion,
7583
azureADTokenProvider: this.azureADTokenProvider,

libs/langchain-openai/src/azure/embeddings.ts

+8
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ export class AzureOpenAIEmbeddings extends OpenAIEmbeddings {
4444
azureOpenAIApiInstanceName: this.azureOpenAIApiInstanceName,
4545
azureOpenAIApiKey: this.azureOpenAIApiKey,
4646
azureOpenAIBasePath: this.azureOpenAIBasePath,
47+
azureADTokenProvider: this.azureADTokenProvider,
4748
baseURL: this.clientConfig.baseURL,
4849
};
4950

@@ -64,6 +65,13 @@ export class AzureOpenAIEmbeddings extends OpenAIEmbeddings {
6465
delete params.baseURL;
6566
}
6667

68+
params.defaultHeaders = {
69+
...params.defaultHeaders,
70+
"User-Agent": params.defaultHeaders?.["User-Agent"]
71+
? `${params.defaultHeaders["User-Agent"]}: langchainjs-azure-openai-v2`
72+
: `langchainjs-azure-openai-v2`,
73+
};
74+
6775
this.client = new AzureOpenAIClient({
6876
apiVersion: this.azureOpenAIApiVersion,
6977
azureADTokenProvider: this.azureADTokenProvider,

libs/langchain-openai/src/azure/llms.ts

+8
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ export class AzureOpenAI extends OpenAI {
4646
azureOpenAIApiInstanceName: this.azureOpenAIApiInstanceName,
4747
azureOpenAIApiKey: this.azureOpenAIApiKey,
4848
azureOpenAIBasePath: this.azureOpenAIBasePath,
49+
azureADTokenProvider: this.azureADTokenProvider,
4950
baseURL: this.clientConfig.baseURL,
5051
};
5152

@@ -66,6 +67,13 @@ export class AzureOpenAI extends OpenAI {
6667
delete params.baseURL;
6768
}
6869

70+
params.defaultHeaders = {
71+
...params.defaultHeaders,
72+
"User-Agent": params.defaultHeaders?.["User-Agent"]
73+
? `${params.defaultHeaders["User-Agent"]}: langchainjs-azure-openai-v2`
74+
: `langchainjs-azure-openai-v2`,
75+
};
76+
6977
this.client = new AzureOpenAIClient({
7078
apiVersion: this.azureOpenAIApiVersion,
7179
azureADTokenProvider: this.azureADTokenProvider,

libs/langchain-openai/src/utils/azure.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ export interface OpenAIEndpointConfig {
22
azureOpenAIApiDeploymentName?: string;
33
azureOpenAIApiInstanceName?: string;
44
azureOpenAIApiKey?: string;
5+
azureADTokenProvider?: () => Promise<string>;
56
azureOpenAIBasePath?: string;
67
baseURL?: string | null;
78
}
@@ -35,6 +36,7 @@ export function getEndpoint(config: OpenAIEndpointConfig) {
3536
azureOpenAIApiKey,
3637
azureOpenAIBasePath,
3738
baseURL,
39+
azureADTokenProvider,
3840
} = config;
3941

4042
if (
@@ -45,7 +47,7 @@ export function getEndpoint(config: OpenAIEndpointConfig) {
4547
return `${azureOpenAIBasePath}/${azureOpenAIApiDeploymentName}`;
4648
}
4749

48-
if (azureOpenAIApiKey) {
50+
if (azureOpenAIApiKey || azureADTokenProvider) {
4951
if (!azureOpenAIApiInstanceName) {
5052
throw new Error(
5153
"azureOpenAIApiInstanceName is required when using azureOpenAIApiKey"

0 commit comments

Comments
 (0)