当前位置:   article > 正文

基于langchain的开源大模型应用开发2

基于langchain的开源大模型应用开发2

客户端API框架

client-api

etc yaml配置及
internal 内部代码包

config yaml配置解析代码包
logic 逻辑实现包
server 服务连接处理
svc 上下文配置信息
type chat结构体对象

proto proto文件
go.mod model
go.sum
apiserver.api 自定义api文件用于生成api框架
apiserver.go 主函数入口

逻辑代码处理

客户端chat初始化代码只需要创建好配置信息和上下文信息即可(目前是这样)。

func NewChatLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ChatLogic {
	return &ChatLogic{
		Logger: logx.WithContext(ctx),
		ctx:    ctx,
		svcCtx: svcCtx,
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

客户端最主要的功能是提供对话接口,在未来的开发中我希望输入除了文字还有音频,图片以及视频等数据信息,这里为了和服务端连接使用的是grpc连接方式。

func (l *ChatLogic) Chat(req *types.ChatRequest) (resp *types.ChatResponse, err error) {
	// todo: add your logic here and delete this line
	port := strconv.Itoa(l.svcCtx.Config.RestConf.Port)
	addr := l.svcCtx.Config.RestConf.Host + ":" + port
	conn, err := grpc.Dial(addr, grpc.WithInsecure())
	if err != nil {
		return nil, err
	}
	defer conn.Close()
	//调用grpc服务
	client := pb.NewChatbotServiceClient(conn)
	//api数据转为rpc数据
	rpcReq := &pb.ChatRequest{
		UserInput: req.UserInput,
	}
	//返回数据
	rpcRssp, err := client.Chat(l.ctx, rpcReq)

	if err != nil {
		return nil, err
	}
	return &types.ChatResponse{
		BotResponse: rpcRssp.GetBotResponse(),
	}, nil
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

下一期敬请期待。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/901321
推荐阅读
相关标签
  

闽ICP备14008679号