mirror of
https://github.com/yangjian102621/geekai.git
synced 2026-04-28 14:04:48 +08:00
optimize code for function call handler, fixed bug for dalle plugin
This commit is contained in:
@@ -183,140 +183,77 @@ func (h *FunctionHandler) Dall3(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// var params map[string]interface{}
|
var params map[string]interface{}
|
||||||
// if err := c.ShouldBindJSON(¶ms); err != nil {
|
if err := c.ShouldBindJSON(¶ms); err != nil {
|
||||||
// resp.ERROR(c, types.InvalidArgs)
|
resp.ERROR(c, types.InvalidArgs)
|
||||||
// return
|
return
|
||||||
// }
|
}
|
||||||
|
|
||||||
// logger.Debugf("绘画参数:%+v", params)
|
var chatModel model.ChatModel
|
||||||
// var user model.User
|
res := h.DB.Where("type = ?", "img").Where("enabled", true).First(&chatModel)
|
||||||
// res := h.DB.Where("id = ?", params["user_id"]).First(&user)
|
if res.Error != nil {
|
||||||
// if res.Error != nil {
|
resp.ERROR(c, "没有找到可用的AI绘图模型!")
|
||||||
// resp.ERROR(c, "当前用户不存在!")
|
return
|
||||||
// return
|
}
|
||||||
// }
|
|
||||||
|
|
||||||
// if user.Power < h.App.SysConfig.Base.DallPower {
|
logger.Debugf("绘画参数:%+v", params)
|
||||||
// resp.ERROR(c, "创建 DALL-E 绘图任务失败,算力不足")
|
var user model.User
|
||||||
// return
|
res = h.DB.Where("id = ?", params["user_id"]).First(&user)
|
||||||
// }
|
if res.Error != nil {
|
||||||
|
resp.ERROR(c, "当前用户不存在!")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// // create dall task
|
if user.Power < chatModel.Power {
|
||||||
// prompt := utils.InterfaceToString(params["prompt"])
|
resp.ERROR(c, "创建绘图任务失败,算力不足")
|
||||||
// task := types.DallTask{
|
return
|
||||||
// UserId: user.Id,
|
}
|
||||||
// Prompt: prompt,
|
|
||||||
// ModelId: 0,
|
|
||||||
// ModelName: "dall-e-3",
|
|
||||||
// TranslateModelId: h.App.SysConfig.Base.AssistantModelId,
|
|
||||||
// N: 1,
|
|
||||||
// Quality: "standard",
|
|
||||||
// Size: "1024x1024",
|
|
||||||
// Style: "vivid",
|
|
||||||
// Power: h.App.SysConfig.Base.DallPower,
|
|
||||||
// }
|
|
||||||
// job := model.DallJob{
|
|
||||||
// UserId: user.Id,
|
|
||||||
// Prompt: prompt,
|
|
||||||
// Power: h.App.SysConfig.Base.DallPower,
|
|
||||||
// TaskInfo: utils.JsonEncode(task),
|
|
||||||
// }
|
|
||||||
// err := h.DB.Create(&job).Error
|
|
||||||
// if err != nil {
|
|
||||||
// resp.ERROR(c, "创建 DALL-E 绘图任务失败:"+err.Error())
|
|
||||||
// return
|
|
||||||
// }
|
|
||||||
|
|
||||||
// task.Id = job.Id
|
// create dall task
|
||||||
// content, err := h.dallService.Image(task, true)
|
prompt := utils.InterfaceToString(params["prompt"])
|
||||||
// if err != nil {
|
task := types.DallTask{
|
||||||
// resp.ERROR(c, "任务执行失败:"+err.Error())
|
UserId: user.Id,
|
||||||
// return
|
Prompt: prompt,
|
||||||
// }
|
ModelId: chatModel.Id,
|
||||||
|
ModelName: chatModel.Value,
|
||||||
|
TranslateModelId: h.App.SysConfig.Base.AssistantModelId,
|
||||||
|
N: 1,
|
||||||
|
Quality: "standard",
|
||||||
|
Size: "1024x1024",
|
||||||
|
Style: "vivid",
|
||||||
|
Power: chatModel.Power,
|
||||||
|
}
|
||||||
|
job := model.DallJob{
|
||||||
|
UserId: user.Id,
|
||||||
|
Prompt: prompt,
|
||||||
|
Power: chatModel.Power,
|
||||||
|
TaskInfo: utils.JsonEncode(task),
|
||||||
|
}
|
||||||
|
err := h.DB.Create(&job).Error
|
||||||
|
if err != nil {
|
||||||
|
resp.ERROR(c, "创建绘图任务失败:"+err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// // 扣减算力
|
task.Id = job.Id
|
||||||
// err = h.userService.DecreasePower(user.Id, job.Power, model.PowerLog{
|
content, err := h.dallService.Image(task, true)
|
||||||
// Type: types.PowerConsume,
|
if err != nil {
|
||||||
// Model: task.ModelName,
|
resp.ERROR(c, "任务执行失败:"+err.Error())
|
||||||
// Remark: fmt.Sprintf("绘画提示词:%s", utils.CutWords(job.Prompt, 10)),
|
return
|
||||||
// })
|
}
|
||||||
// if err != nil {
|
|
||||||
// resp.ERROR(c, "扣减算力失败:"+err.Error())
|
|
||||||
// return
|
|
||||||
// }
|
|
||||||
|
|
||||||
// resp.SUCCESS(c, content)
|
// 扣减算力
|
||||||
// }
|
err = h.userService.DecreasePower(user.Id, job.Power, model.PowerLog{
|
||||||
|
Type: types.PowerConsume,
|
||||||
|
Model: task.ModelName,
|
||||||
|
Remark: fmt.Sprintf("绘画提示词:%s", utils.CutWords(job.Prompt, 10)),
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
resp.ERROR(c, "扣减算力失败:"+err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// // 实现一个联网搜索的函数工具,采用爬虫实现
|
resp.SUCCESS(c, content)
|
||||||
// func (h *FunctionHandler) WebSearch(c *gin.Context) {
|
|
||||||
// if err := h.checkAuth(c); err != nil {
|
|
||||||
// resp.ERROR(c, err.Error())
|
|
||||||
// return
|
|
||||||
// }
|
|
||||||
|
|
||||||
// var params map[string]interface{}
|
|
||||||
// if err := c.ShouldBindJSON(¶ms); err != nil {
|
|
||||||
// resp.ERROR(c, types.InvalidArgs)
|
|
||||||
// return
|
|
||||||
// }
|
|
||||||
|
|
||||||
// // 从参数中获取搜索关键词
|
|
||||||
// keyword, ok := params["keyword"].(string)
|
|
||||||
// if !ok || keyword == "" {
|
|
||||||
// resp.ERROR(c, "搜索关键词不能为空")
|
|
||||||
// return
|
|
||||||
// }
|
|
||||||
|
|
||||||
// // 从参数中获取最大页数,默认为1页
|
|
||||||
// maxPages := 1
|
|
||||||
// if pages, ok := params["max_pages"].(float64); ok {
|
|
||||||
// maxPages = int(pages)
|
|
||||||
// }
|
|
||||||
|
|
||||||
// // 获取用户ID
|
|
||||||
// userID, ok := params["user_id"].(float64)
|
|
||||||
// if !ok {
|
|
||||||
// resp.ERROR(c, "用户ID不能为空")
|
|
||||||
// return
|
|
||||||
// }
|
|
||||||
|
|
||||||
// // 查询用户信息
|
|
||||||
// var user model.User
|
|
||||||
// res := h.DB.Where("id = ?", int(userID)).First(&user)
|
|
||||||
// if res.Error != nil {
|
|
||||||
// resp.ERROR(c, "用户不存在")
|
|
||||||
// return
|
|
||||||
// }
|
|
||||||
|
|
||||||
// // 检查用户算力是否足够
|
|
||||||
// searchPower := 1 // 每次搜索消耗1点算力
|
|
||||||
// if user.Power < searchPower {
|
|
||||||
// resp.ERROR(c, "算力不足,无法执行网络搜索")
|
|
||||||
// return
|
|
||||||
// }
|
|
||||||
|
|
||||||
// // 执行网络搜索
|
|
||||||
// searchResults, err := crawler.SearchWeb(keyword, maxPages)
|
|
||||||
// if err != nil {
|
|
||||||
// resp.ERROR(c, fmt.Sprintf("搜索失败: %v", err))
|
|
||||||
// return
|
|
||||||
// }
|
|
||||||
|
|
||||||
// // 扣减用户算力
|
|
||||||
// err = h.userService.DecreasePower(user.Id, searchPower, model.PowerLog{
|
|
||||||
// Type: types.PowerConsume,
|
|
||||||
// Model: "web_search",
|
|
||||||
// Remark: fmt.Sprintf("网络搜索:%s", utils.CutWords(keyword, 10)),
|
|
||||||
// })
|
|
||||||
// if err != nil {
|
|
||||||
// resp.ERROR(c, "扣减算力失败:"+err.Error())
|
|
||||||
// return
|
|
||||||
// }
|
|
||||||
|
|
||||||
// 返回搜索结果
|
|
||||||
// resp.SUCCESS(c, searchResults)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// List 获取所有的工具函数列表
|
// List 获取所有的工具函数列表
|
||||||
|
|||||||
@@ -201,10 +201,6 @@ func (s *Service) Image(task types.DallTask, sync bool) (string, error) {
|
|||||||
|
|
||||||
var content string
|
var content string
|
||||||
if sync {
|
if sync {
|
||||||
imgURL, err := s.downloadImage(task.Id, res.Data[0].Url)
|
|
||||||
if err != nil {
|
|
||||||
return "", fmt.Errorf("error with download image: %v", err)
|
|
||||||
}
|
|
||||||
content = fmt.Sprintf("```\n%s\n```\n下面是我为你创作的图片:\n\n\n", task.Prompt, imgURL)
|
content = fmt.Sprintf("```\n%s\n```\n下面是我为你创作的图片:\n\n\n", task.Prompt, imgURL)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user