mirror of
https://wget.la/https://github.com/leookun/cursor-byok
synced 2026-08-17 11:37:20 +08:00
v0.3.8
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"context"
|
||||
"strings"
|
||||
|
||||
"cursor/internal/modelchannel"
|
||||
legacyruntime "cursor/internal/runtime"
|
||||
)
|
||||
|
||||
const (
|
||||
defaultChannelTimeoutMS = int((2 * 60 * 60) * 1000)
|
||||
defaultChannelContextWindowTokens = 200_000
|
||||
defaultChannelMaxTokens = 65_536
|
||||
defaultChannelThinkingBudget = 4_096
|
||||
defaultChannelAnthropicEffort = "xhigh"
|
||||
)
|
||||
|
||||
func (manager *Manager) SelectChannelForModel(_ context.Context, modelID string) (*legacyruntime.ResolvedChannel, error) {
|
||||
if manager == nil {
|
||||
return nil, legacyruntime.ErrChannelNotAvailable
|
||||
}
|
||||
adapters, err := NormalizeModelAdapterConfigs(manager.Current().ModelAdapters)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return resolveModelAdapterChannel(adapters, modelID)
|
||||
}
|
||||
|
||||
func resolveModelAdapterChannel(adapters []ModelAdapterConfig, requestedModel string) (*legacyruntime.ResolvedChannel, error) {
|
||||
matchIndex, ok := modelchannel.ResolveAdapterIndex(
|
||||
adapters,
|
||||
requestedModel,
|
||||
func(adapter ModelAdapterConfig) string { return adapter.ID },
|
||||
func(adapter ModelAdapterConfig) string { return adapter.ModelID },
|
||||
func(adapter ModelAdapterConfig) string {
|
||||
return modelchannel.BuildLegacyChannelID(adapter.BaseURL, adapter.ModelID, adapter.APIKey, adapter.DisplayName)
|
||||
},
|
||||
)
|
||||
if !ok {
|
||||
return nil, legacyruntime.ErrChannelNotAvailable
|
||||
}
|
||||
matched := adapters[matchIndex]
|
||||
|
||||
resolved := &legacyruntime.ResolvedChannel{
|
||||
ID: strings.TrimSpace(matched.ID),
|
||||
Name: strings.TrimSpace(matched.DisplayName),
|
||||
GroupName: "local",
|
||||
Code: strings.TrimSpace(matched.ID),
|
||||
Provider: strings.TrimSpace(matched.Type),
|
||||
BaseURL: strings.TrimSpace(matched.BaseURL),
|
||||
APIKey: strings.TrimSpace(matched.APIKey),
|
||||
Model: strings.TrimSpace(matched.ModelID),
|
||||
OpenAIEndpoint: strings.TrimSpace(matched.OpenAIEndpoint),
|
||||
OpenAIExtraParamsEnabled: matched.OpenAIExtraParamsEnabled,
|
||||
OpenAIExtraParamsJSON: strings.TrimSpace(matched.OpenAIExtraParamsJSON),
|
||||
CustomHeadersEnabled: matched.CustomHeadersEnabled,
|
||||
CustomHeadersJSON: strings.TrimSpace(matched.CustomHeadersJSON),
|
||||
AnthropicExtraParamsEnabled: matched.AnthropicExtraParamsEnabled,
|
||||
AnthropicExtraParamsJSON: strings.TrimSpace(matched.AnthropicExtraParamsJSON),
|
||||
TimeoutMS: defaultChannelTimeoutMS,
|
||||
ContextWindowTokens: defaultChannelContextWindowTokens,
|
||||
MaxTokens: defaultChannelMaxTokens,
|
||||
ReasoningEffort: strings.TrimSpace(matched.ReasoningEffort),
|
||||
AnthropicMaxTokens: defaultChannelMaxTokens,
|
||||
AnthropicThinkingEffort: defaultChannelAnthropicEffort,
|
||||
ThinkingEnabled: true,
|
||||
ThinkingBudgetTokens: defaultChannelThinkingBudget,
|
||||
}
|
||||
if matched.ContextWindowTokens > 0 {
|
||||
resolved.ContextWindowTokens = matched.ContextWindowTokens
|
||||
}
|
||||
if matched.MaxCompletionTokens > 0 {
|
||||
resolved.MaxTokens = matched.MaxCompletionTokens
|
||||
}
|
||||
if matched.AnthropicMaxTokens > 0 {
|
||||
resolved.AnthropicMaxTokens = matched.AnthropicMaxTokens
|
||||
}
|
||||
if matched.ThinkingBudgetTokens > 0 {
|
||||
resolved.ThinkingBudgetTokens = matched.ThinkingBudgetTokens
|
||||
}
|
||||
if strings.TrimSpace(matched.AnthropicThinkingEffort) != "" {
|
||||
resolved.AnthropicThinkingEffort = strings.TrimSpace(matched.AnthropicThinkingEffort)
|
||||
}
|
||||
return resolved, nil
|
||||
}
|
||||
Reference in New Issue
Block a user