mirror of
https://github.com/danielmiessler/Fabric.git
synced 2026-01-09 14:28:01 -05:00
fix: use MaxTokens not ModelContextLength for output limit
This commit is contained in:
@@ -214,10 +214,14 @@ func parseThinkingConfig(level domain.ThinkingLevel) (*genai.ThinkingConfig, boo
|
||||
func (o *Client) buildGenerateContentConfig(opts *domain.ChatOptions) (*genai.GenerateContentConfig, error) {
|
||||
temperature := float32(opts.Temperature)
|
||||
topP := float32(opts.TopP)
|
||||
var maxTokens int32
|
||||
if opts.MaxTokens > 0 {
|
||||
maxTokens = int32(opts.MaxTokens)
|
||||
}
|
||||
cfg := &genai.GenerateContentConfig{
|
||||
Temperature: &temperature,
|
||||
TopP: &topP,
|
||||
MaxOutputTokens: int32(opts.ModelContextLength),
|
||||
MaxOutputTokens: maxTokens,
|
||||
}
|
||||
|
||||
if opts.Search {
|
||||
|
||||
@@ -127,14 +127,11 @@ func (c *Client) Send(ctx context.Context, msgs []*chat.ChatCompletionMessage, o
|
||||
return c.sendClaude(ctx, msgs, opts)
|
||||
}
|
||||
|
||||
// getMaxTokens returns the max tokens to use for a request
|
||||
// getMaxTokens returns the max output tokens to use for a request
|
||||
func getMaxTokens(opts *domain.ChatOptions) int64 {
|
||||
if opts.MaxTokens > 0 {
|
||||
return int64(opts.MaxTokens)
|
||||
}
|
||||
if opts.ModelContextLength > 0 {
|
||||
return int64(opts.ModelContextLength)
|
||||
}
|
||||
return int64(defaultMaxTokens)
|
||||
}
|
||||
|
||||
|
||||
@@ -310,24 +310,19 @@ func TestGetMaxTokens(t *testing.T) {
|
||||
expected int64
|
||||
}{
|
||||
{
|
||||
name: "MaxTokens takes priority",
|
||||
opts: &domain.ChatOptions{MaxTokens: 8192, ModelContextLength: 4096},
|
||||
name: "MaxTokens specified",
|
||||
opts: &domain.ChatOptions{MaxTokens: 8192},
|
||||
expected: 8192,
|
||||
},
|
||||
{
|
||||
name: "ModelContextLength used when MaxTokens is 0",
|
||||
opts: &domain.ChatOptions{MaxTokens: 0, ModelContextLength: 16384},
|
||||
expected: 16384,
|
||||
},
|
||||
{
|
||||
name: "Default used when both are 0",
|
||||
opts: &domain.ChatOptions{MaxTokens: 0, ModelContextLength: 0},
|
||||
name: "Default when MaxTokens is 0",
|
||||
opts: &domain.ChatOptions{MaxTokens: 0},
|
||||
expected: int64(defaultMaxTokens),
|
||||
},
|
||||
{
|
||||
name: "MaxTokens negative treated as 0",
|
||||
opts: &domain.ChatOptions{MaxTokens: -1, ModelContextLength: 2048},
|
||||
expected: 2048,
|
||||
name: "Default when MaxTokens is negative",
|
||||
opts: &domain.ChatOptions{MaxTokens: -1},
|
||||
expected: int64(defaultMaxTokens),
|
||||
},
|
||||
}
|
||||
|
||||
@@ -406,9 +401,9 @@ func TestBuildGeminiConfig(t *testing.T) {
|
||||
|
||||
t.Run("basic config with temperature and TopP", func(t *testing.T) {
|
||||
opts := &domain.ChatOptions{
|
||||
Temperature: 0.7,
|
||||
TopP: 0.9,
|
||||
ModelContextLength: 8192,
|
||||
Temperature: 0.7,
|
||||
TopP: 0.9,
|
||||
MaxTokens: 8192,
|
||||
}
|
||||
config := client.buildGeminiConfig(opts)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user