summaryrefslogtreecommitdiffhomepage
path: root/packages/console/app/src/routes/zen/util/handler.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/console/app/src/routes/zen/util/handler.ts')
-rw-r--r--packages/console/app/src/routes/zen/util/handler.ts29
1 files changed, 21 insertions, 8 deletions
diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts
index c15197b6e..2f75668e6 100644
--- a/packages/console/app/src/routes/zen/util/handler.ts
+++ b/packages/console/app/src/routes/zen/util/handler.ts
@@ -141,7 +141,10 @@ export async function handler(
)
validateModelSettings(billingSource, authInfo)
updateProviderKey(authInfo, providerInfo)
- logger.metric({ provider: providerInfo.id })
+ logger.metric({
+ provider: providerInfo.id,
+ "provider.model": providerInfo.model,
+ })
const startTimestamp = Date.now()
const reqUrl = providerInfo.modifyUrl(providerInfo.api, isStream)
@@ -149,12 +152,23 @@ export async function handler(
providerInfo.modifyBody({
...createBodyConverter(opts.format, providerInfo.format)(body),
model: providerInfo.model,
- ...providerInfo.payloadModifier,
- ...Object.fromEntries(
- Object.entries(providerInfo.payloadMappings ?? {})
- .map(([k, v]) => [k, input.request.headers.get(v)])
- .filter(([_k, v]) => !!v),
- ),
+ ...(() => {
+ const replacer = (obj: Record<string, any>): Record<string, any> =>
+ Object.fromEntries(
+ Object.entries(obj).flatMap(([k, v]) => {
+ if (Array.isArray(v)) return [[k, v]]
+ if (typeof v === "object") return [[k, replacer(v)]]
+ if (v === "$ip") return [[k, ip]]
+ if (v === "$workspace") return authInfo?.workspaceID ? [[k, authInfo?.workspaceID]] : []
+ if (v.startsWith("$header.")) {
+ const headerValue = input.request.headers.get(v.slice(8))
+ return headerValue ? [[k, headerValue]] : []
+ }
+ return [[k, v]]
+ }),
+ )
+ return replacer(providerInfo.payloadModifier ?? {})
+ })(),
}),
)
logger.debug("REQUEST URL: " + reqUrl)
@@ -514,7 +528,6 @@ export async function handler(
reqModel,
providerModel: modelProvider.model,
adjustCacheUsage: providerProps.adjustCacheUsage,
- safetyIdentifier: modelProvider.safetyIdentifier ? ip : undefined,
workspaceID: authInfo?.workspaceID,
}
if (format === "anthropic") return anthropicHelper(opts)