-
Notifications
You must be signed in to change notification settings - Fork 55
Expand file tree
/
Copy pathmapping.ts
More file actions
61 lines (51 loc) · 1.64 KB
/
mapping.ts
File metadata and controls
61 lines (51 loc) · 1.64 KB
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
/* eslint-disable camelcase */
import { chatEnabledModels } from './modelsChatEnabled.gen.js'
import * as encodingsMap from './modelsMap.js'
import { ImSep } from './specialTokens.js'
export const cl100k_base = 'cl100k_base'
export const p50k_base = 'p50k_base'
export const p50k_edit = 'p50k_edit'
export const r50k_base = 'r50k_base'
export const o200k_base = 'o200k_base'
export const o200k_harmony = 'o200k_harmony'
export const DEFAULT_ENCODING = o200k_base
export type EncodingName = keyof typeof encodingsMap
export const encodingNames = [
p50k_base,
r50k_base,
p50k_edit,
cl100k_base,
o200k_base,
o200k_harmony,
] as const satisfies EncodingName[]
/**
* maps model names to encoding names
* if a model is not listed, it uses the default encoding for new models
* which is `o200k_base`
*/
export const modelToEncodingMap = Object.fromEntries(
Object.entries(encodingsMap).flatMap(([encodingName, models]) =>
models.map((modelName) => [modelName, encodingName]),
),
) as Record<ModelName, EncodingName>
export interface ChatParameters {
messageSeparator: string
roleSeparator: string
}
const gpt3params = {
messageSeparator: '\n',
roleSeparator: '\n',
}
const gpt4params = {
messageSeparator: '',
roleSeparator: ImSep,
}
export type ModelName = keyof typeof import('./models.js')
export type ChatModelName = (typeof chatEnabledModels)[number]
export const chatModelParams = Object.fromEntries(
chatEnabledModels.flatMap((modelName) =>
modelName.startsWith('gpt-3.5')
? ([[modelName, gpt3params] as const] as const)
: ([[modelName, gpt4params] as const] as const),
),
) as Record<ChatModelName, ChatParameters>