xt8 commited on
Commit
cfba43d
·
verified ·
1 Parent(s): a6af59b

Update main.ts

Browse files
Files changed (1) hide show
  1. main.ts +16 -15
main.ts CHANGED
@@ -254,7 +254,7 @@ class GoogleAIService {
254
  }
255
  }
256
 
257
- async generateContentWithDocument(messages: OpenAIMessage[], modelName: string): Promise<string> {
258
  const apiKey = this.getNextApiKey();
259
  const fullModelName = modelName.startsWith('models/') ? modelName : `models/${modelName}`;
260
  const documentModel = this.isDocumentModel(fullModelName) ? fullModelName : 'models/gemini-1.5-pro-latest';
@@ -299,7 +299,7 @@ class GoogleAIService {
299
 
300
  const requestBody = {
301
  contents,
302
- generationConfig: { temperature: 0.7, maxOutputTokens: 8192 }
303
  };
304
 
305
  const response = await fetch(
@@ -342,10 +342,10 @@ class GoogleAIService {
342
  }
343
 
344
  // The rest of the original methods from the user's code
345
- async generateContent(messages: OpenAIMessage[], modelName: string, enableSearch: boolean = false): Promise<string> {
346
  const hasDocument = messages.some(msg => Array.isArray(msg.content) && msg.content.some(part => part.type === "document"));
347
  if (hasDocument) {
348
- return await this.generateContentWithDocument(messages, modelName);
349
  }
350
 
351
  const apiKey = this.getNextApiKey();
@@ -375,7 +375,7 @@ class GoogleAIService {
375
 
376
  const requestBody: any = {
377
  contents,
378
- generationConfig: { temperature: 0.7, maxOutputTokens: 4096 }
379
  };
380
  if (enableSearch) {
381
  requestBody.tools = [{ googleSearchRetrieval: {} }];
@@ -456,7 +456,7 @@ class GoogleAIService {
456
  return result;
457
  }
458
 
459
- async generateContentWithGrounding(messages: OpenAIMessage[], modelName: string): Promise<string> {
460
  const apiKey = this.getNextApiKey();
461
  const fullModelName = modelName.startsWith('models/') ? modelName : `models/${modelName}`;
462
  const contents = messages.map(msg => ({ role: msg.role === 'assistant' ? 'model' : 'user', parts: [{ text: typeof msg.content === 'string' ? msg.content : '' }] }));
@@ -464,7 +464,7 @@ class GoogleAIService {
464
  const requestBody = {
465
  contents,
466
  tools: [{ googleSearch: {} }],
467
- generationConfig: { temperature: 0.7, maxOutputTokens: 4096 }
468
  };
469
 
470
  const response = await fetch(
@@ -474,12 +474,12 @@ class GoogleAIService {
474
 
475
  if (!response.ok) {
476
  console.warn(`Google Search API failed: ${response.status}, trying alternative.`);
477
- return await this.generateContentWithSearchPrompt(messages, modelName);
478
  }
479
 
480
  const data = await response.json();
481
  if (!data.candidates || data.candidates.length === 0) {
482
- return await this.generateContentWithSearchPrompt(messages, modelName);
483
  }
484
 
485
  const candidate = data.candidates[0];
@@ -489,13 +489,13 @@ class GoogleAIService {
489
  return candidate.content?.parts[0]?.text || "No response generated";
490
  }
491
 
492
- async generateContentWithSearchPrompt(messages: OpenAIMessage[], modelName: string): Promise<string> {
493
  const enhancedMessages = [...messages];
494
  const lastMessage = enhancedMessages[enhancedMessages.length - 1];
495
  if (typeof lastMessage.content === "string") {
496
  lastMessage.content = `Please provide the most current and accurate information available about: ${lastMessage.content}.`;
497
  }
498
- return await this.generateContent(enhancedMessages, modelName, false);
499
  }
500
 
501
  async generateOrEditImage(prompt: string, modelName: string, inputImages?: any[]): Promise<string> {
@@ -602,7 +602,8 @@ class OpenAICompatibleServer {
602
  const body: OpenAIRequest = await request.json();
603
  const requestedModel = body.model || "gemini-1.5-pro";
604
  const stream = body.stream || false;
605
- console.log(`Request for model: ${requestedModel}, stream: ${stream}`);
 
606
 
607
  const lastMessage = body.messages[body.messages.length - 1];
608
  const content = typeof lastMessage.content === "string"
@@ -631,16 +632,16 @@ class OpenAICompatibleServer {
631
 
632
  // Routing logic based on keywords and content types
633
  if (hasDocument) {
634
- responseText = await this.googleAI.generateContentWithDocument(body.messages, requestedModel);
635
  } else if (this.googleAI.isImageEditingModel(requestedModel) && hasImages) {
636
  responseText = await this.googleAI.generateOrEditImage(content, requestedModel, inputImages);
637
  } else if (this.googleAI.isImageGenerationModel(requestedModel)) {
638
  responseText = await this.googleAI.generateOrEditImage(content, requestedModel);
639
  } else if (requestedModel.endsWith("-search")) {
640
  const searchMessages = [{ ...lastMessage, content: content }];
641
- responseText = await this.googleAI.generateContentWithGrounding(searchMessages, requestedModel.slice(0, -"-search".length));
642
  } else {
643
- responseText = await this.googleAI.generateContent(body.messages, requestedModel, false);
644
  }
645
 
646
  if (stream) {
 
254
  }
255
  }
256
 
257
+ async generateContentWithDocument(messages: OpenAIMessage[], modelName: string, maxTokens?: number): Promise<string> {
258
  const apiKey = this.getNextApiKey();
259
  const fullModelName = modelName.startsWith('models/') ? modelName : `models/${modelName}`;
260
  const documentModel = this.isDocumentModel(fullModelName) ? fullModelName : 'models/gemini-1.5-pro-latest';
 
299
 
300
  const requestBody = {
301
  contents,
302
+ generationConfig: { temperature: 0.7, maxOutputTokens: maxTokens || 8192 }
303
  };
304
 
305
  const response = await fetch(
 
342
  }
343
 
344
  // The rest of the original methods from the user's code
345
+ async generateContent(messages: OpenAIMessage[], modelName: string, maxTokens?: number, enableSearch: boolean = false): Promise<string> {
346
  const hasDocument = messages.some(msg => Array.isArray(msg.content) && msg.content.some(part => part.type === "document"));
347
  if (hasDocument) {
348
+ return await this.generateContentWithDocument(messages, modelName, maxTokens);
349
  }
350
 
351
  const apiKey = this.getNextApiKey();
 
375
 
376
  const requestBody: any = {
377
  contents,
378
+ generationConfig: { temperature: 0.7, maxOutputTokens: maxTokens || 8192 }
379
  };
380
  if (enableSearch) {
381
  requestBody.tools = [{ googleSearchRetrieval: {} }];
 
456
  return result;
457
  }
458
 
459
+ async generateContentWithGrounding(messages: OpenAIMessage[], modelName: string, maxTokens?: number): Promise<string> {
460
  const apiKey = this.getNextApiKey();
461
  const fullModelName = modelName.startsWith('models/') ? modelName : `models/${modelName}`;
462
  const contents = messages.map(msg => ({ role: msg.role === 'assistant' ? 'model' : 'user', parts: [{ text: typeof msg.content === 'string' ? msg.content : '' }] }));
 
464
  const requestBody = {
465
  contents,
466
  tools: [{ googleSearch: {} }],
467
+ generationConfig: { temperature: 0.7, maxOutputTokens: maxTokens || 8192 }
468
  };
469
 
470
  const response = await fetch(
 
474
 
475
  if (!response.ok) {
476
  console.warn(`Google Search API failed: ${response.status}, trying alternative.`);
477
+ return await this.generateContentWithSearchPrompt(messages, modelName, maxTokens);
478
  }
479
 
480
  const data = await response.json();
481
  if (!data.candidates || data.candidates.length === 0) {
482
+ return await this.generateContentWithSearchPrompt(messages, modelName, maxTokens);
483
  }
484
 
485
  const candidate = data.candidates[0];
 
489
  return candidate.content?.parts[0]?.text || "No response generated";
490
  }
491
 
492
+ async generateContentWithSearchPrompt(messages: OpenAIMessage[], modelName: string, maxTokens?: number): Promise<string> {
493
  const enhancedMessages = [...messages];
494
  const lastMessage = enhancedMessages[enhancedMessages.length - 1];
495
  if (typeof lastMessage.content === "string") {
496
  lastMessage.content = `Please provide the most current and accurate information available about: ${lastMessage.content}.`;
497
  }
498
+ return await this.generateContent(enhancedMessages, modelName, maxTokens, false);
499
  }
500
 
501
  async generateOrEditImage(prompt: string, modelName: string, inputImages?: any[]): Promise<string> {
 
602
  const body: OpenAIRequest = await request.json();
603
  const requestedModel = body.model || "gemini-1.5-pro";
604
  const stream = body.stream || false;
605
+ const maxTokens = body.max_tokens || 1024000;
606
+ console.log(`Request for model: ${requestedModel}, stream: ${stream}, max_tokens: ${maxTokens}`);
607
 
608
  const lastMessage = body.messages[body.messages.length - 1];
609
  const content = typeof lastMessage.content === "string"
 
632
 
633
  // Routing logic based on keywords and content types
634
  if (hasDocument) {
635
+ responseText = await this.googleAI.generateContentWithDocument(body.messages, requestedModel, maxTokens);
636
  } else if (this.googleAI.isImageEditingModel(requestedModel) && hasImages) {
637
  responseText = await this.googleAI.generateOrEditImage(content, requestedModel, inputImages);
638
  } else if (this.googleAI.isImageGenerationModel(requestedModel)) {
639
  responseText = await this.googleAI.generateOrEditImage(content, requestedModel);
640
  } else if (requestedModel.endsWith("-search")) {
641
  const searchMessages = [{ ...lastMessage, content: content }];
642
+ responseText = await this.googleAI.generateContentWithGrounding(searchMessages, requestedModel.slice(0, -"-search".length), maxTokens);
643
  } else {
644
+ responseText = await this.googleAI.generateContent(body.messages, requestedModel, maxTokens, false);
645
  }
646
 
647
  if (stream) {