diff --git a/src/proxy/middleware/request/add-key.ts b/src/proxy/middleware/request/add-key.ts index 98edfe9..b58f0d4 100644 --- a/src/proxy/middleware/request/add-key.ts +++ b/src/proxy/middleware/request/add-key.ts @@ -1,10 +1,17 @@ import { Key, keyPool } from "../../../key-management"; -import type { ExpressHttpProxyReqCallback } from "."; +import { ExpressHttpProxyReqCallback, isCompletionRequest } from "."; /** Add a key that can service this request to the request object. */ export const addKey: ExpressHttpProxyReqCallback = (proxyReq, req) => { let assignedKey: Key; + if (!isCompletionRequest(req)) { + // Horrible, horrible hack to stop the proxy from complaining about clients + // not sending a model when they are requesting the list of models (which + // requires a key, but obviously not a model). + req.body.model = "gpt-3.5-turbo"; + } + if (!req.body?.model) { throw new Error("You must specify a model with your request."); } diff --git a/src/proxy/middleware/request/transform-outbound-payload.ts b/src/proxy/middleware/request/transform-outbound-payload.ts index 86caed4..627f762 100644 --- a/src/proxy/middleware/request/transform-outbound-payload.ts +++ b/src/proxy/middleware/request/transform-outbound-payload.ts @@ -1,6 +1,6 @@ import { Request } from "express"; import { z } from "zod"; -import type { ExpressHttpProxyReqCallback } from "."; +import { ExpressHttpProxyReqCallback, isCompletionRequest } from "."; // https://console.anthropic.com/docs/api/reference#-v1-complete const AnthropicV1CompleteSchema = z.object({ @@ -42,8 +42,7 @@ export const transformOutboundPayload: ExpressHttpProxyReqCallback = ( _proxyReq, req ) => { - if (req.retryCount > 0) { - // We've already transformed the payload once, so don't do it again. + if (req.retryCount > 0 || !isCompletionRequest(req)) { return; }