mirror of
https://github.com/chaitin/MonkeyCode.git
synced 2026-02-16 05:33:52 +08:00
feat(model): 集成ModelKit支持并重构模型管理功能
重构模型管理模块,集成ModelKit作为统一模型服务接口 - 添加ZhiPu、Gemini和Other模型供应商支持 - 移除原有模型检查和列表获取逻辑,改用ModelKit实现 - 新增modelService服务层处理模型数据转换 - 删除旧版modelModal组件,改用@yokowu/modelkit-ui组件 - 更新相关依赖版本,包括ModelKit v1.4.3
This commit is contained in:
@@ -2,11 +2,14 @@ package v1
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"log/slog"
|
||||
"strings"
|
||||
|
||||
"github.com/GoYoko/web"
|
||||
|
||||
modelkitDomain "github.com/chaitin/ModelKit/domain"
|
||||
modelkit "github.com/chaitin/ModelKit/usecase"
|
||||
"github.com/chaitin/MonkeyCode/backend/domain"
|
||||
"github.com/chaitin/MonkeyCode/backend/internal/middleware"
|
||||
)
|
||||
@@ -53,10 +56,31 @@ func NewModelHandler(
|
||||
// @Success 200 {object} web.Resp{data=domain.Model}
|
||||
// @Router /api/v1/model/check [post]
|
||||
func (h *ModelHandler) Check(c *web.Context, req domain.CheckModelReq) error {
|
||||
m, err := h.usecase.Check(c.Request().Context(), &req)
|
||||
modelkitRes, err := modelkit.CheckModel(c.Request().Context(), &modelkitDomain.CheckModelReq{
|
||||
Provider: string(req.Provider),
|
||||
Model: req.ModelName,
|
||||
BaseURL: req.APIBase,
|
||||
APIKey: req.APIKey,
|
||||
APIHeader: req.APIHeader,
|
||||
APIVersion: req.APIVersion,
|
||||
Type: string(req.Type),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if modelkitRes.Error != "" {
|
||||
return errors.New(modelkitRes.Error)
|
||||
}
|
||||
|
||||
// 将输出转化为monkeycode格式
|
||||
m := &domain.Model{
|
||||
ModelType: req.Type,
|
||||
Provider: req.Provider,
|
||||
ModelName: req.ModelName,
|
||||
APIBase: req.APIBase,
|
||||
}
|
||||
// end
|
||||
|
||||
return c.Success(m)
|
||||
}
|
||||
|
||||
@@ -169,11 +193,29 @@ func (h *ModelHandler) GetTokenUsage(c *web.Context, req domain.GetTokenUsageReq
|
||||
// @Success 200 {object} web.Resp{data=domain.GetProviderModelListResp}
|
||||
// @Router /api/v1/model/provider/supported [get]
|
||||
func (h *ModelHandler) GetProviderModelList(c *web.Context, req domain.GetProviderModelListReq) error {
|
||||
resp, err := h.usecase.GetProviderModelList(c.Request().Context(), &req)
|
||||
modelkitRes, err := modelkit.ModelList(c.Request().Context(), &modelkitDomain.ModelListReq{
|
||||
Provider: string(req.Provider),
|
||||
Type: string(req.Type),
|
||||
BaseURL: req.BaseURL,
|
||||
APIKey: req.APIKey,
|
||||
APIHeader: req.APIHeader,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return c.Success(resp)
|
||||
|
||||
// 将输出转化为monkeycode格式
|
||||
res := &domain.GetProviderModelListResp{
|
||||
Models: make([]domain.ProviderModelListItem, len(modelkitRes.Models)),
|
||||
}
|
||||
for i, model := range modelkitRes.Models {
|
||||
res.Models[i] = domain.ProviderModelListItem{
|
||||
Model: model.Model,
|
||||
}
|
||||
}
|
||||
// end
|
||||
|
||||
return c.Success(res)
|
||||
}
|
||||
|
||||
// Delete 删除模型
|
||||
|
||||
Reference in New Issue
Block a user