This commit is contained in:
reanon
2025-04-17 11:47:25 +00:00
parent 5eb4858c69
commit 85fafb8edb
9 changed files with 41 additions and 2 deletions
@@ -34,4 +34,4 @@ export const applyQuotaLimits: RequestPreprocessor = (req) => {
}
);
}
};
};
@@ -22,6 +22,12 @@ export const countPromptTokens: RequestPreprocessor = async (req) => {
result = await countTokens({ req, prompt, service });
break;
}
case "openai-responses": {
req.outputTokens = req.body.max_completion_tokens || req.body.max_tokens;
const prompt: OpenAIChatMessage[] = req.body.messages;
result = await countTokens({ req, prompt, service });
break;
}
case "openai-text": {
req.outputTokens = req.body.max_tokens;
const prompt: string = req.body.prompt;
@@ -78,6 +78,7 @@ function getPromptFromRequest(req: Request) {
.join("\n\n");
case "anthropic-text":
case "openai-text":
case "openai-responses":
case "openai-image":
case "mistral-text":
return body.prompt;
@@ -23,6 +23,9 @@ export const validateVision: RequestPreprocessor = async (req) => {
case "openai":
hasImage = containsImageContentOpenAI(req.body.messages);
break;
case "openai-responses":
hasImage = containsImageContentOpenAI(req.body.messages);
break;
case "anthropic-chat":
hasImage = containsImageContentAnthropic(req.body.messages);
break;
@@ -194,6 +194,21 @@ export function buildSpoofedCompletion({
switch (format) {
case "openai":
case "openai-responses":
return {
id: "error-" + id,
object: "chat.completion",
created: Date.now(),
model,
usage: { prompt_tokens: 0, completion_tokens: 0, total_tokens: 0 },
choices: [
{
message: { role: "assistant", content },
finish_reason: title,
index: 0,
},
],
};
case "mistral-ai":
return {
id: "error-" + id,
@@ -283,6 +298,15 @@ export function buildSpoofedSSE({
switch (format) {
case "openai":
case "openai-responses":
event = {
id: "chatcmpl-" + id,
object: "chat.completion.chunk",
created: Date.now(),
model,
choices: [{ delta: { content }, index: 0, finish_reason: title }],
};
break;
case "mistral-ai":
event = {
id: "chatcmpl-" + id,
@@ -72,6 +72,8 @@ const getPromptForRequest = (
// format.
switch (req.outboundApi) {
case "openai":
case "openai-responses":
return req.body.messages;
case "mistral-ai":
return req.body.messages;
case "anthropic-chat":
@@ -84,7 +84,8 @@ export class EventAggregator {
getFinalResponse() {
switch (this.responseFormat) {
case "openai":
case "google-ai": // TODO: this is probably wrong now that we support native Google Makersuite prompts
case "openai-responses":
case "google-ai":
return mergeEventsForOpenAIChat(this.events);
case "openai-text":
return mergeEventsForOpenAIText(this.events);