update: cat face接口
This commit is contained in:
		
							parent
							
								
									1ca75f6567
								
							
						
					
					
						commit
						d04987302f
					
				@ -9,6 +9,7 @@ import (
 | 
			
		||||
	"catface/app/model_es"
 | 
			
		||||
	"catface/app/model_redis"
 | 
			
		||||
	"catface/app/service/animals/curd"
 | 
			
		||||
	"catface/app/service/catface"
 | 
			
		||||
	"catface/app/service/upload_file"
 | 
			
		||||
	"catface/app/utils/query_handler"
 | 
			
		||||
	"catface/app/utils/response"
 | 
			
		||||
@ -22,6 +23,37 @@ import (
 | 
			
		||||
type Animals struct { // INFO 起到一个标记的作用,这样 web.xxx 的时候不同模块就不会命名冲突了。
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (a *Animals) Guess(context *gin.Context) {
 | 
			
		||||
	// 1. Get Params
 | 
			
		||||
	filePath := context.GetString(consts.ValidatorPrefix + "file_path")
 | 
			
		||||
	// 2. Get Result
 | 
			
		||||
	catRes := catface.GetCatfaceResult(filePath)
 | 
			
		||||
	// 3. Response
 | 
			
		||||
 | 
			
		||||
	type subT struct {
 | 
			
		||||
		Id         int64  `json:"id"`
 | 
			
		||||
		Name       string `json:"name"`
 | 
			
		||||
		Status     uint8  `json:"status"`
 | 
			
		||||
		Department uint8  `json:"department"`
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	type t struct {
 | 
			
		||||
		List []subT `json:"list"`
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var resList t
 | 
			
		||||
	for _, v := range catRes.Cats {
 | 
			
		||||
		resList.List = append(resList.List, subT{
 | 
			
		||||
			Id:         v.Id,
 | 
			
		||||
			Name:       model.CreateAnimalFactory("").ShowByID(v.Id).Name,
 | 
			
		||||
			Status:     model.CreateAnimalFactory("").ShowByID(v.Id).Status,
 | 
			
		||||
			Department: model.CreateAnimalFactory("").ShowByID(v.Id).Department,
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	response.Success(context, consts.CurdStatusOkMsg, resList)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (a *Animals) List(context *gin.Context) {
 | 
			
		||||
	// 1. Get Params
 | 
			
		||||
	attrs := context.GetString(consts.ValidatorPrefix + "attrs")
 | 
			
		||||
 | 
			
		||||
@ -64,6 +64,10 @@ func WebRegisterValidator() {
 | 
			
		||||
	key = consts.ValidatorPrefix + "AnimalName"
 | 
			
		||||
	containers.Set(key, animal.Name{})
 | 
			
		||||
 | 
			
		||||
	// +cat face
 | 
			
		||||
	key = consts.ValidatorPrefix + "AnimalCatfaceGuess"
 | 
			
		||||
	containers.Set(key, animal.CatfaceGuess{})
 | 
			
		||||
 | 
			
		||||
	key = consts.ValidatorPrefix + "AnimalLikeCreate"
 | 
			
		||||
	containers.Set(key, animal_like.Create{})
 | 
			
		||||
	key = consts.ValidatorPrefix + "AnimalLikeDelete"
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										29
									
								
								app/http/validator/web/animal/catface_guess.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								app/http/validator/web/animal/catface_guess.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,29 @@
 | 
			
		||||
package animal
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"catface/app/global/consts"
 | 
			
		||||
	"catface/app/http/controller/web"
 | 
			
		||||
	"catface/app/http/validator/core/data_transfer"
 | 
			
		||||
	"catface/app/utils/response"
 | 
			
		||||
	"github.com/gin-gonic/gin"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type CatfaceGuess struct {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c CatfaceGuess) CheckParams(context *gin.Context) {
 | 
			
		||||
	if err := context.ShouldBind(&c); err != nil {
 | 
			
		||||
		// 将表单参数验证器出现的错误直接交给错误翻译器统一处理即可
 | 
			
		||||
		response.ValidatorError(context, err)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 该函数主要是将本结构体的字段(成员)按照 consts.ValidatorPrefix+ json标签对应的 键 => 值 形式绑定在上下文,便于下一步(控制器)可以直接通过 context.Get(键) 获取相关值
 | 
			
		||||
	extraAddBindDataContext := data_transfer.DataAddContext(c, consts.ValidatorPrefix, context)
 | 
			
		||||
	if extraAddBindDataContext == nil {
 | 
			
		||||
		response.ErrorSystem(context, "CatfaceGuess表单验证器json化失败", "")
 | 
			
		||||
	} else {
 | 
			
		||||
		// 验证完成,调用控制器,并将验证器成员(字段)递给控制器,保持上下文数据一致性
 | 
			
		||||
		(&web.Animals{}).Guess(extraAddBindDataContext)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										32
									
								
								app/service/catface/catface.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								app/service/catface/catface.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,32 @@
 | 
			
		||||
package catface
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"catface/app/global/variable"
 | 
			
		||||
	"catface/app/utils/micro_service"
 | 
			
		||||
	"context"
 | 
			
		||||
	"github.com/carlmjohnson/requests"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type FaceRes struct {
 | 
			
		||||
	FaceBreed int `json:"face_breed"`
 | 
			
		||||
	Cats      []struct {
 | 
			
		||||
		Id   int64   `json:"id"`
 | 
			
		||||
		Prob float64 `json:"prob"`
 | 
			
		||||
	} `json:"cats"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func GetCatfaceResult(filePath string) FaceRes {
 | 
			
		||||
	body := map[string]interface{}{
 | 
			
		||||
		"file_path": filePath,
 | 
			
		||||
	}
 | 
			
		||||
	var res FaceRes
 | 
			
		||||
	err := requests.URL(micro_service.FetchPythonServiceUrl("cnn/detect_cat")).
 | 
			
		||||
		BodyJSON(&body).
 | 
			
		||||
		ToJSON(&res).
 | 
			
		||||
		Fetch(context.Background())
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		variable.ZapLog.Error("获取cat face结果集失败: " + err.Error())
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return res
 | 
			
		||||
}
 | 
			
		||||
@ -1,15 +1,12 @@
 | 
			
		||||
package glm
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"catface/app/global/variable"
 | 
			
		||||
	"context"
 | 
			
		||||
	"errors"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/yankeguo/zhipu"
 | 
			
		||||
	"go.uber.org/zap"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// ChatWithGLM 封装了与GLM模型进行对话的逻辑
 | 
			
		||||
@ -40,10 +37,10 @@ func ChatStream(message string, ch chan<- string, client *zhipu.ChatCompletionSe
 | 
			
		||||
		})
 | 
			
		||||
 | 
			
		||||
	// Test
 | 
			
		||||
	messages := client.GetMessages()
 | 
			
		||||
	for id, message := range messages {
 | 
			
		||||
		variable.ZapLog.Info(fmt.Sprintf("message-%d", id+1), zap.String("message", message.(zhipu.ChatCompletionMessage).Role), zap.String("content", message.(zhipu.ChatCompletionMessage).Content))
 | 
			
		||||
	}
 | 
			
		||||
	//messages := client.GetMessages()
 | 
			
		||||
	//for id, message := range messages {
 | 
			
		||||
	//	variable.ZapLog.Info(fmt.Sprintf("message-%d", id+1), zap.String("message", message.(zhipu.ChatCompletionMessage).Role), zap.String("content", message.(zhipu.ChatCompletionMessage).Content))
 | 
			
		||||
	//}
 | 
			
		||||
 | 
			
		||||
	// 执行服务调用
 | 
			
		||||
	res, err := service.Do(context.Background())
 | 
			
		||||
 | 
			
		||||
@ -128,6 +128,8 @@ func InitWebRouter() *gin.Engine {
 | 
			
		||||
 | 
			
		||||
			animal.POST("like", validatorFactory.Create(consts.ValidatorPrefix+"AnimalLikeCreate"))
 | 
			
		||||
			animal.DELETE("like", validatorFactory.Create(consts.ValidatorPrefix+"AnimalLikeDelete"))
 | 
			
		||||
 | 
			
		||||
			animal.POST("catface", validatorFactory.Create(consts.ValidatorPrefix+"AnimalCatfaceGuess"))
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// backend.Use(authorization.CheckTokenAuth()) // INFO token 检查
 | 
			
		||||
 | 
			
		||||
@ -8,7 +8,7 @@ import (
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func TestEmbeddingApi(t *testing.T) {
 | 
			
		||||
	res, ok := nlp.GetEmbedding("一段测试文本。")
 | 
			
		||||
	res, ok := nlp.GetEmbedding([]string{"一段测试文本。"})
 | 
			
		||||
	if !ok {
 | 
			
		||||
		t.Error("获取嵌入向量失败")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user