CoolFace
Apppublic

lis3456/droid2api

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes
request-common.js82 linesDownload Raw Back to transformers
1import { logDebug } from '../logger.js';2import { getSystemPrompt, getUserAgent } from '../config.js';3import { generateUUID } from '../utils/uuid.js';4 5export function transformToCommon(openaiRequest) {6  logDebug('Transforming OpenAI request to Common format');7  8  // 基本保持 OpenAI 格式,只在 messages 前面插入 system 消息9  const commonRequest = {10    ...openaiRequest11  };12 13  const systemPrompt = getSystemPrompt();14  15  if (systemPrompt) {16    // 检查是否已有 system 消息17    const hasSystemMessage = commonRequest.messages?.some(m => m.role === 'system');18    19    if (hasSystemMessage) {20      // 如果已有 system 消息,在第一个 system 消息前插入我们的 system prompt21      commonRequest.messages = commonRequest.messages.map((msg, index) => {22        if (msg.role === 'system' && index === commonRequest.messages.findIndex(m => m.role === 'system')) {23          // 找到第一个 system 消息,前置我们的 prompt24          return {25            role: 'system',26            content: systemPrompt + (typeof msg.content === 'string' ? msg.content : '')27          };28        }29        return msg;30      });31    } else {32      // 如果没有 system 消息,在 messages 数组最前面插入33      commonRequest.messages = [34        {35          role: 'system',36          content: systemPrompt37        },38        ...(commonRequest.messages || [])39      ];40    }41  }42 43  logDebug('Transformed Common request', commonRequest);44  return commonRequest;45}46 47export function getCommonHeaders(authHeader, clientHeaders = {}) {48  // Generate unique IDs if not provided49  const sessionId = clientHeaders['x-session-id'] || generateUUID();50  const messageId = clientHeaders['x-assistant-message-id'] || generateUUID();51  52  const headers = {53    'accept': 'application/json',54    'content-type': 'application/json',55    'authorization': authHeader || '',56    'x-api-provider': 'baseten',57    'x-factory-client': 'cli',58    'x-session-id': sessionId,59    'x-assistant-message-id': messageId,60    'user-agent': getUserAgent(),61    'connection': 'keep-alive'62  };63 64  // Pass through Stainless SDK headers with defaults65  const stainlessDefaults = {66    'x-stainless-arch': 'x64',67    'x-stainless-lang': 'js',68    'x-stainless-os': 'MacOS',69    'x-stainless-runtime': 'node',70    'x-stainless-retry-count': '0',71    'x-stainless-package-version': '5.23.2',72    'x-stainless-runtime-version': 'v24.3.0'73  };74 75  // Copy Stainless headers from client or use defaults76  Object.keys(stainlessDefaults).forEach(header => {77    headers[header] = clientHeaders[header] || stainlessDefaults[header];78  });79 80  return headers;81}82