基于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,
	}
}

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

下一期敬请期待。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值