Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion backend/internal/model/repo/model.go
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,6 @@ func (r *ModelRepo) GetTokenUsage(ctx context.Context, modelType consts.ModelTyp
OrderBy("date")
}).
Scan(ctx, &dailyUsages)

if err != nil {
return nil, err
}
Expand Down
3 changes: 2 additions & 1 deletion backend/internal/proxy/proxy.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import (
"github.com/chaitin/MonkeyCode/backend/internal/middleware"
"github.com/chaitin/MonkeyCode/backend/pkg/logger"
"github.com/chaitin/MonkeyCode/backend/pkg/tee"
"github.com/chaitin/MonkeyCode/backend/pkg/tools"
)

type CtxKey struct{}
Expand Down Expand Up @@ -114,7 +115,7 @@ func (l *LLMProxy) rewrite(r *httputil.ProxyRequest) {
}

metadata := make(map[string]string)
if m.Provider == consts.ModelProviderZhiPu {
if tools.CheckProvider(r.In.Context(), m.Provider, m.ModelName) == consts.ModelProviderZhiPu {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

backend/internal/proxy/proxy.go 中同样使用了 tools.CheckProvider 函数,但该项目中未找到此函数的实现。这可能导致编译错误或运行时错误。

Suggested change
if tools.CheckProvider(r.In.Context(), m.Provider, m.ModelName) == consts.ModelProviderZhiPu {
```go
// TODO: 实现 CheckProvider 函数或确保其存在于 tools 包中
// if tools.CheckProvider(r.In.Context(), m.Provider, m.ModelName) == consts.ModelProviderZhiPu {

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

在代理转发逻辑中使用了新的CheckProvider函数,这是合理的。但需要注意的是,这里的实现可能会导致重复的上下文传递(ctx),因为tools.CheckProvider的第一个参数是ctx,但函数内部并未使用它。可以考虑简化函数签名。

Suggested change
if tools.CheckProvider(r.In.Context(), m.Provider, m.ModelName) == consts.ModelProviderZhiPu {
\tmetadata := make(map[string]string)\n\tif tools.CheckProvider(context.Background(), m.Provider, m.ModelName) == consts.ModelProviderZhiPu {

body, err := io.ReadAll(r.In.Body)
if err != nil {
l.logger.ErrorContext(r.In.Context(), "read request body failed", slog.String("path", r.In.URL.Path), slog.Any("err", err))
Expand Down
16 changes: 16 additions & 0 deletions backend/pkg/tools/provider_checker.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package tools

import (
"context"
"strings"

"github.com/chaitin/MonkeyCode/backend/consts"
)

// CheckProvider 根据 model 的前缀来判断 provider
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

新增的CheckProvider函数实现了基本的提供商识别逻辑,但目前只支持根据"glm"前缀识别智谱提供商。考虑到系统的可扩展性,建议采用更灵活的配置方式,比如通过配置文件或数据库来管理模型名称与提供商的映射关系,而不是硬编码在函数中。

Suggested change
// CheckProvider 根据 model 的前缀来判断 provider
// CheckProvider 根据 model 的前缀来判断 provider\nfunc CheckProvider(ctx context.Context, provider consts.ModelProvider, modelName string) consts.ModelProvider {\n\tif provider == consts.ModelProviderOther {\n\t\t// 可以考虑从配置或数据库加载映射关系\n\t\tproviderMappings := map[string]consts.ModelProvider{\n\t\t\t"glm": consts.ModelProviderZhiPu,\n\t\t\t// 可以添加更多映射\n\t\t}\n\t\t\n\t\tfor prefix, mappedProvider := range providerMappings {\n\t\t\tif strings.HasPrefix(modelName, prefix) {\n\t\t\t\treturn mappedProvider\n\t\t\t}\n\t\t}\n\t}\n\treturn provider\n}

func CheckProvider(ctx context.Context, provider consts.ModelProvider, modelName string) consts.ModelProvider {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CheckProvider函数的第一个参数ctx在当前实现中并未被使用,可以考虑移除以简化函数签名,除非未来有计划使用它。

Suggested change
func CheckProvider(ctx context.Context, provider consts.ModelProvider, modelName string) consts.ModelProvider {
// CheckProvider 根据 model 的前缀来判断 provider\nfunc CheckProvider(provider consts.ModelProvider, modelName string) consts.ModelProvider {

if strings.HasPrefix(modelName, "glm") {
provider = consts.ModelProviderZhiPu
}
return provider
}
Loading