Skip to content

Commit b8b674c

Browse files
authored
Merge pull request #1461 from Portkey-AI/feature/oracle-inference
oracle provider
2 parents f69d995 + 38ab869 commit b8b674c

File tree

13 files changed

+1694
-3
lines changed

13 files changed

+1694
-3
lines changed

src/globals.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ export const TRIPO3D: string = 'tripo3d';
109109
export const NEXTBIT: string = 'nextbit';
110110
export const MODAL: string = 'modal';
111111
export const Z_AI: string = 'z-ai';
112+
export const ORACLE: string = 'oracle';
112113
export const IO_INTELLIGENCE: string = 'iointelligence';
113114
export const AIBADGR: string = 'aibadgr';
114115

@@ -183,6 +184,7 @@ export const VALID_PROVIDERS = [
183184
NEXTBIT,
184185
MODAL,
185186
Z_AI,
187+
ORACLE,
186188
IO_INTELLIGENCE,
187189
AIBADGR,
188190
];

src/handlers/handlerUtils.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
SAGEMAKER,
1616
FIREWORKS_AI,
1717
CORTEX,
18+
ORACLE,
1819
} from '../globals';
1920
import { endpointStrings } from '../providers/types';
2021
import { Options, Params, StrategyModes, Targets } from '../types/requestBody';
@@ -988,6 +989,20 @@ export function constructConfigFromRequestHeaders(
988989
snowflakeAccount: requestHeaders[`x-${POWERED_BY}-snowflake-account`],
989990
};
990991

992+
const oracleConfig = {
993+
oracleApiVersion: requestHeaders[`x-${POWERED_BY}-oracle-api-version`],
994+
oracleRegion: requestHeaders[`x-${POWERED_BY}-oracle-region`],
995+
oracleCompartmentId:
996+
requestHeaders[`x-${POWERED_BY}-oracle-compartment-id`],
997+
oracleServingMode: requestHeaders[`x-${POWERED_BY}-oracle-serving-mode`],
998+
oracleTenancy: requestHeaders[`x-${POWERED_BY}-oracle-tenancy`],
999+
oracleUser: requestHeaders[`x-${POWERED_BY}-oracle-user`],
1000+
oracleFingerprint: requestHeaders[`x-${POWERED_BY}-oracle-fingerprint`],
1001+
oraclePrivateKey: requestHeaders[`x-${POWERED_BY}-oracle-private-key`],
1002+
oracleKeyPassphrase:
1003+
requestHeaders[`x-${POWERED_BY}-oracle-key-passphrase`],
1004+
};
1005+
9911006
const defaultsConfig = {
9921007
input_guardrails: requestHeaders[`x-portkey-default-input-guardrails`]
9931008
? JSON.parse(requestHeaders[`x-portkey-default-input-guardrails`])
@@ -1094,6 +1109,12 @@ export function constructConfigFromRequestHeaders(
10941109
...cortexConfig,
10951110
};
10961111
}
1112+
if (parsedConfigJson.provider === ORACLE) {
1113+
parsedConfigJson = {
1114+
...parsedConfigJson,
1115+
...oracleConfig,
1116+
};
1117+
}
10971118
}
10981119
return convertKeysToCamelCase(parsedConfigJson, [
10991120
'override_params',
@@ -1143,6 +1164,7 @@ export function constructConfigFromRequestHeaders(
11431164
...(requestHeaders[`x-${POWERED_BY}-provider`] === FIREWORKS_AI &&
11441165
fireworksConfig),
11451166
...(requestHeaders[`x-${POWERED_BY}-provider`] === CORTEX && cortexConfig),
1167+
...(requestHeaders[`x-${POWERED_BY}-provider`] === ORACLE && oracleConfig),
11461168
};
11471169
}
11481170

src/providers/anthropic/chatComplete.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -457,6 +457,7 @@ export const AnthropicChatCompleteConfig: ProviderConfig = {
457457
param: 'stream',
458458
default: false,
459459
},
460+
// anthropic specific fields
460461
user: {
461462
param: 'metadata.user_id',
462463
},

src/providers/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ import CometAPIConfig from './cometapi';
7070
import ZAIConfig from './z-ai';
7171
import MatterAIConfig from './matterai';
7272
import ModalConfig from './modal';
73+
import OracleConfig from './oracle';
7374
import IOIntelligenceConfig from './iointelligence';
7475
import AIBadgrConfig from './aibadgr';
7576

@@ -142,6 +143,7 @@ const Providers: { [key: string]: ProviderConfigs } = {
142143
tripo3d: Tripo3DConfig,
143144
modal: ModalConfig,
144145
'z-ai': ZAIConfig,
146+
oracle: OracleConfig,
145147
iointelligence: IOIntelligenceConfig,
146148
aibadgr: AIBadgrConfig,
147149
};

src/providers/oracle/api.ts

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import { ProviderAPIConfig } from '../types';
2+
import { OCIRequestSigner } from './utils';
3+
4+
const OracleAPIConfig: ProviderAPIConfig = {
5+
getBaseURL: ({ providerOptions }) => {
6+
// Oracle Generative AI Inference API base URL
7+
return `https://inference.generativeai.${providerOptions.oracleRegion}.oci.oraclecloud.com`;
8+
},
9+
headers: async ({
10+
providerOptions,
11+
transformedRequestUrl,
12+
transformedRequestBody,
13+
}) => {
14+
const signer = new OCIRequestSigner({
15+
tenancy: providerOptions.oracleTenancy || '',
16+
user: providerOptions.oracleUser || '',
17+
fingerprint: providerOptions.oracleFingerprint || '',
18+
privateKey: providerOptions.oraclePrivateKey || '',
19+
keyPassphrase: providerOptions.oracleKeyPassphrase,
20+
region: providerOptions.oracleRegion || '',
21+
});
22+
23+
const headers = await signer.signRequest(
24+
'POST',
25+
transformedRequestUrl,
26+
JSON.stringify(transformedRequestBody),
27+
{}
28+
);
29+
30+
return headers;
31+
},
32+
getEndpoint: ({ fn, providerOptions }) => {
33+
const { oracleApiVersion = '20231130' } = providerOptions;
34+
let endpoint = null;
35+
switch (fn) {
36+
case 'chatComplete':
37+
case 'stream-chatComplete':
38+
endpoint = '/actions/chat';
39+
break;
40+
default:
41+
return '';
42+
}
43+
return `/${oracleApiVersion}${endpoint}`;
44+
},
45+
};
46+
47+
export default OracleAPIConfig;

0 commit comments

Comments
 (0)