Skip to content

Commit 3248d6e

Browse files
authored
enhance: get more information about models (#105)
Signed-off-by: Grant Linville <[email protected]>
1 parent 8596761 commit 3248d6e

File tree

2 files changed

+39
-10
lines changed

2 files changed

+39
-10
lines changed

src/gptscript.ts

+31-2
Original file line numberDiff line numberDiff line change
@@ -168,18 +168,19 @@ export class GPTScript {
168168
}
169169
}
170170

171-
listModels(providers?: string[], credentialOverrides?: string[]): Promise<string> {
171+
async listModels(providers?: string[], credentialOverrides?: string[]): Promise<Array<Model>> {
172172
if (this.opts.DefaultModelProvider) {
173173
if (!providers) {
174174
providers = []
175175
}
176176
providers.push(this.opts.DefaultModelProvider)
177177
}
178-
return this.runBasicCommand("list-models", {
178+
const result = await this.runBasicCommand("list-models", {
179179
"providers": providers,
180180
"env": this.opts.Env,
181181
"credentialOverrides": credentialOverrides
182182
})
183+
return await JSON.parse(result) as Array<Model>
183184
}
184185

185186
version(): Promise<string> {
@@ -1229,6 +1230,34 @@ export type Credential = {
12291230
refreshToken?: string | undefined
12301231
}
12311232

1233+
// Types for OpenAI API-compatible models
1234+
1235+
export type Permission = {
1236+
created: number,
1237+
id: string,
1238+
object: string,
1239+
allow_create_engine: boolean,
1240+
allow_sampling: boolean,
1241+
allow_logprobs: boolean,
1242+
allow_search_indices: boolean,
1243+
allow_view: boolean,
1244+
allow_fine_tuning: boolean,
1245+
organization: string,
1246+
group: any,
1247+
is_blocking: boolean,
1248+
}
1249+
1250+
export type Model = {
1251+
created: number,
1252+
id: string,
1253+
object: string,
1254+
owned_by: string,
1255+
permission: Array<Permission>,
1256+
root: string,
1257+
parent: string,
1258+
metadata: Record<string, string>,
1259+
}
1260+
12321261
// for internal use only
12331262
type cred = {
12341263
context: string

tests/gptscript.test.ts

+8-8
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,12 @@ describe("gptscript module", () => {
5151
return
5252
}
5353

54-
let models = await g.listModels(["github.com/gptscript-ai/claude3-anthropic-provider"], ["github.com/gptscript-ai/claude3-anthropic-provider/credential:ANTHROPIC_API_KEY"])
54+
const models = await g.listModels(["github.com/gptscript-ai/claude3-anthropic-provider"], ["github.com/gptscript-ai/claude3-anthropic-provider/credential:ANTHROPIC_API_KEY"])
5555
expect(models).toBeDefined()
56-
for (let model of models.split("\n")) {
56+
for (const model of models) {
5757
expect(model).toBeDefined()
58-
expect(model.startsWith("claude-3-")).toBe(true)
59-
expect(model.endsWith("from github.com/gptscript-ai/claude3-anthropic-provider")).toBe(true)
58+
expect(model.id.startsWith("claude-3-")).toBe(true)
59+
expect(model.id.endsWith("from github.com/gptscript-ai/claude3-anthropic-provider")).toBe(true)
6060
}
6161
}, 60000)
6262

@@ -67,12 +67,12 @@ describe("gptscript module", () => {
6767

6868
const newg = new gptscript.GPTScript({DefaultModelProvider: "github.com/gptscript-ai/claude3-anthropic-provider"})
6969
try {
70-
let models = await newg.listModels(undefined, ["github.com/gptscript-ai/claude3-anthropic-provider/credential:ANTHROPIC_API_KEY"])
70+
const models = await newg.listModels(undefined, ["github.com/gptscript-ai/claude3-anthropic-provider/credential:ANTHROPIC_API_KEY"])
7171
expect(models).toBeDefined()
72-
for (let model of models.split("\n")) {
72+
for (const model of models) {
7373
expect(model).toBeDefined()
74-
expect(model.startsWith("claude-3-")).toBe(true)
75-
expect(model.endsWith("from github.com/gptscript-ai/claude3-anthropic-provider")).toBe(true)
74+
expect(model.id.startsWith("claude-3-")).toBe(true)
75+
expect(model.id.endsWith("from github.com/gptscript-ai/claude3-anthropic-provider")).toBe(true)
7676
}
7777
} finally {
7878
newg.close()

0 commit comments

Comments
 (0)