Skip to content

Commit 185a2df

Browse files
committed
Expose context length in models response
1 parent aa0ed0f commit 185a2df

2 files changed

Lines changed: 37 additions & 11 deletions

File tree

sdk/api/handlers/openai/openai_handlers.go

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -67,31 +67,33 @@ func (h *OpenAIAPIHandler) OpenAIModels(c *gin.Context) {
6767
// Get all available models
6868
allModels := h.Models()
6969

70-
// Filter to only include the 4 required fields: id, object, created, owned_by
71-
filteredModels := make([]map[string]any, len(allModels))
72-
for i, model := range allModels {
70+
c.JSON(http.StatusOK, gin.H{
71+
"object": "list",
72+
"data": filterOpenAIModelsResponse(allModels),
73+
})
74+
}
75+
76+
func filterOpenAIModelsResponse(models []map[string]any) []map[string]any {
77+
filteredModels := make([]map[string]any, len(models))
78+
for i, model := range models {
7379
filteredModel := map[string]any{
7480
"id": model["id"],
7581
"object": model["object"],
7682
}
7783

78-
// Add created field if it exists
7984
if created, exists := model["created"]; exists {
8085
filteredModel["created"] = created
8186
}
82-
83-
// Add owned_by field if it exists
8487
if ownedBy, exists := model["owned_by"]; exists {
8588
filteredModel["owned_by"] = ownedBy
8689
}
90+
if contextLength, exists := model["context_length"]; exists {
91+
filteredModel["context_length"] = contextLength
92+
}
8793

8894
filteredModels[i] = filteredModel
8995
}
90-
91-
c.JSON(http.StatusOK, gin.H{
92-
"object": "list",
93-
"data": filteredModels,
94-
})
96+
return filteredModels
9597
}
9698

9799
// ChatCompletions handles the /v1/chat/completions endpoint.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package openai
2+
3+
import "testing"
4+
5+
func TestFilterOpenAIModelsResponseIncludesContextLength(t *testing.T) {
6+
models := filterOpenAIModelsResponse([]map[string]any{{
7+
"id": "gpt-5.4",
8+
"object": "model",
9+
"created": int64(123),
10+
"owned_by": "heybox",
11+
"context_length": 700000,
12+
"display_name": "GPT-5.4",
13+
}})
14+
15+
if len(models) != 1 {
16+
t.Fatalf("models len = %d, want 1", len(models))
17+
}
18+
if got := intModelValue(models[0], "context_length"); got != 700000 {
19+
t.Fatalf("context_length = %d, want 700000", got)
20+
}
21+
if _, ok := models[0]["display_name"]; ok {
22+
t.Fatal("expected display_name to remain filtered")
23+
}
24+
}

0 commit comments

Comments
 (0)