Skip to content

Commit

Permalink
OpenAI v1/completions: allow stop token list (ollama#5551)
Browse files Browse the repository at this point in the history
* stop token parsing fix

* add stop test
  • Loading branch information
royjhan authored Jul 9, 2024
1 parent 0aff678 commit 4918fae
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 5 deletions.
14 changes: 9 additions & 5 deletions openai/openai.go
Original file line number Diff line number Diff line change
Expand Up @@ -338,12 +338,16 @@ func fromCompleteRequest(r CompletionRequest) (api.GenerateRequest, error) {
switch stop := r.Stop.(type) {
case string:
options["stop"] = []string{stop}
case []string:
options["stop"] = stop
default:
if r.Stop != nil {
return api.GenerateRequest{}, fmt.Errorf("invalid type for 'stop' field: %T", r.Stop)
case []any:
var stops []string
for _, s := range stop {
if str, ok := s.(string); ok {
stops = append(stops, str)
} else {
return api.GenerateRequest{}, fmt.Errorf("invalid type for 'stop' field: %T", s)
}
}
options["stop"] = stops
}

if r.MaxTokens != nil {
Expand Down
11 changes: 11 additions & 0 deletions openai/openai_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ func TestMiddlewareRequests(t *testing.T) {
Model: "test-model",
Prompt: "Hello",
Temperature: &temp,
Stop: []string{"\n", "stop"},
}

bodyBytes, _ := json.Marshal(body)
Expand All @@ -99,6 +100,16 @@ func TestMiddlewareRequests(t *testing.T) {
if genReq.Options["temperature"] != 1.6 {
t.Fatalf("expected 1.6, got %f", genReq.Options["temperature"])
}

stopTokens, ok := genReq.Options["stop"].([]any)

if !ok {
t.Fatalf("expected stop tokens to be a list")
}

if stopTokens[0] != "\n" || stopTokens[1] != "stop" {
t.Fatalf("expected ['\\n', 'stop'], got %v", stopTokens)
}
},
},
}
Expand Down

0 comments on commit 4918fae

Please sign in to comment.