Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
actions-user committed Jul 12, 2024
2 parents 0556299 + 89049e1 commit 4c375cb
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 38 deletions.
33 changes: 9 additions & 24 deletions app/api/alibaba/[...path]/route.ts
Original file line number Diff line number Diff line change
Expand Up @@ -91,34 +91,14 @@ async function request(req: NextRequest) {
);

const fetchUrl = `${baseUrl}${path}`;

const clonedBody = await req.text();

const { messages, model, stream, top_p, ...rest } = JSON.parse(
clonedBody,
) as RequestPayload;

const requestBody = {
model,
input: {
messages,
},
parameters: {
...rest,
top_p: top_p === 1 ? 0.99 : top_p, // qwen top_p is should be < 1
result_format: "message",
incremental_output: true,
},
};

const fetchOptions: RequestInit = {
headers: {
"Content-Type": "application/json",
Authorization: req.headers.get("Authorization") ?? "",
"X-DashScope-SSE": stream ? "enable" : "disable",
"X-DashScope-SSE": req.headers.get("X-DashScope-SSE") ?? "disable",
},
method: req.method,
body: JSON.stringify(requestBody),
body: req.body,
redirect: "manual",
// @ts-ignore
duplex: "half",
Expand All @@ -128,18 +108,23 @@ async function request(req: NextRequest) {
// #1815 try to refuse some request to some models
if (serverConfig.customModels && req.body) {
try {
const clonedBody = await req.text();
fetchOptions.body = clonedBody;

const jsonBody = JSON.parse(clonedBody) as { model?: string };

// not undefined and is false
if (
isModelAvailableInServer(
serverConfig.customModels,
model as string,
jsonBody?.model as string,
ServiceProvider.Alibaba as string,
)
) {
return NextResponse.json(
{
error: true,
message: `you are not allowed to use ${model} model`,
message: `you are not allowed to use ${jsonBody?.model} model`,
},
{
status: 403,
Expand Down
39 changes: 26 additions & 13 deletions app/client/platforms/alibaba.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,19 +32,25 @@ export interface OpenAIListModelResponse {
}>;
}

interface RequestPayload {
interface RequestInput {
messages: {
role: "system" | "user" | "assistant";
content: string | MultimodalContent[];
}[];
stream?: boolean;
model: string;
}
interface RequestParam {
result_format: string;
incremental_output?: boolean;
temperature: number;
presence_penalty: number;
frequency_penalty: number;
repetition_penalty?: number;
top_p: number;
max_tokens?: number;
}
interface RequestPayload {
model: string;
input: RequestInput;
parameters: RequestParam;
}

export class QwenApi implements LLMApi {
path(path: string): string {
Expand Down Expand Up @@ -91,17 +97,21 @@ export class QwenApi implements LLMApi {
},
};

const shouldStream = !!options.config.stream;
const requestPayload: RequestPayload = {
messages,
stream: options.config.stream,
model: modelConfig.model,
temperature: modelConfig.temperature,
presence_penalty: modelConfig.presence_penalty,
frequency_penalty: modelConfig.frequency_penalty,
top_p: modelConfig.top_p,
input: {
messages,
},
parameters: {
result_format: "message",
incremental_output: shouldStream,
temperature: modelConfig.temperature,
// max_tokens: modelConfig.max_tokens,
top_p: modelConfig.top_p === 1 ? 0.99 : modelConfig.top_p, // qwen top_p is should be < 1
},
};

const shouldStream = !!options.config.stream;
const controller = new AbortController();
options.onController?.(controller);

Expand All @@ -111,7 +121,10 @@ export class QwenApi implements LLMApi {
method: "POST",
body: JSON.stringify(requestPayload),
signal: controller.signal,
headers: getHeaders(),
headers: {
...getHeaders(),
"X-DashScope-SSE": shouldStream ? "enable" : "disable",
},
};

// make a fetch request
Expand Down
2 changes: 1 addition & 1 deletion app/utils/model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ export function collectModelTable(
modelTable[fullName]["available"] = available;
// swap name and displayName for bytedance
if (providerName === "bytedance") {
[name, displayName] = [displayName, name];
[name, displayName] = [displayName, modelName];
modelTable[fullName]["name"] = name;
}
if (displayName) {
Expand Down

0 comments on commit 4c375cb

Please sign in to comment.