File size: 2,152 Bytes
00443a6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
export interface ModelConfig {
  maxRetries: number;
  baseBackoffMs: number;
  maxBackoffMs: number;
  requestTimeoutMs: number;
  maxConcurrentRequests: number;
  defaultMaxTokens: number;
  temperature: number;
  topP: number;
  frequencyPenalty: number;
  presencePenalty: number;
}

export const modelConfig: ModelConfig = {
  maxRetries: 5,
  baseBackoffMs: 100,
  maxBackoffMs: 5000,
  requestTimeoutMs: 30000,
  maxConcurrentRequests: 10,
  defaultMaxTokens: 2048,
  temperature: 0.7,
  topP: 0.9,
  frequencyPenalty: 0.0,
  presencePenalty: 0.0,
};

/**
 * Get model configuration with environment variable overrides
 */
export function getModelConfig(): ModelConfig {
  return {
    ...modelConfig,
    maxRetries: process.env.MODEL_MAX_RETRIES
      ? parseInt(process.env.MODEL_MAX_RETRIES, 10)
      : modelConfig.maxRetries,
    baseBackoffMs: process.env.MODEL_BASE_BACKOFF_MS
      ? parseInt(process.env.MODEL_BASE_BACKOFF_MS, 10)
      : modelConfig.baseBackoffMs,
    maxBackoffMs: process.env.MODEL_MAX_BACKOFF_MS
      ? parseInt(process.env.MODEL_MAX_BACKOFF_MS, 10)
      : modelConfig.maxBackoffMs,
    requestTimeoutMs: process.env.MODEL_REQUEST_TIMEOUT_MS
      ? parseInt(process.env.MODEL_REQUEST_TIMEOUT_MS, 10)
      : modelConfig.requestTimeoutMs,
    maxConcurrentRequests: process.env.MODEL_MAX_CONCURRENT_REQUESTS
      ? parseInt(process.env.MODEL_MAX_CONCURRENT_REQUESTS, 10)
      : modelConfig.maxConcurrentRequests,
    defaultMaxTokens: process.env.MODEL_DEFAULT_MAX_TOKENS
      ? parseInt(process.env.MODEL_DEFAULT_MAX_TOKENS, 10)
      : modelConfig.defaultMaxTokens,
    temperature: process.env.MODEL_TEMPERATURE
      ? parseFloat(process.env.MODEL_TEMPERATURE)
      : modelConfig.temperature,
    topP: process.env.MODEL_TOP_P
      ? parseFloat(process.env.MODEL_TOP_P)
      : modelConfig.topP,
    frequencyPenalty: process.env.MODEL_FREQUENCY_PENALTY
      ? parseFloat(process.env.MODEL_FREQUENCY_PENALTY)
      : modelConfig.frequencyPenalty,
    presencePenalty: process.env.MODEL_PRESENCE_PENALTY
      ? parseFloat(process.env.MODEL_PRESENCE_PENALTY)
      : modelConfig.presencePenalty,
  };
}