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

服务端grpc框架

server-grpc

etc yaml配置及

internal 内部代码包

config yaml配置解析代码包

logic 逻辑实现包

server 服务连接处理

svc 上下文配置信息

proto proto文件

go.mod model

go.sum

main.go 主函数入口

逻辑代码处理

目前该应用的逻辑只有机器人对话功能,在服务端是通过grpc服务进行数据传输,这里前提是在main函数中需要启动grpc服务,设置proto数据类型。在logic层初始化服务上下文信息,日治配置大模型配置等。

java 复制代码
func NewChatbotLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ChatbotLogic {

	llm, err := chain.New(chain.WithToken(svcCtx.Config.OpenaiClient.Token), chain.WithModel(svcCtx.Config.OpenaiClient.Model), chain.WithBaseURL(svcCtx.Config.OpenaiClient.BaseURL))
	if err != nil {
		logx.Errorf("large model import error: %v", err)
		return nil
	}
	return &ChatbotLogic{
		Logger: logx.WithContext(ctx),
		ctx:    ctx,
		svcCtx: svcCtx,
		model:  llm,
	}
}

在对话逻辑中,设置历史信息的上限,设置对话者角色,从客户端获取用户对话信息。通过langchain框架传递给大模型返回信息,最后将得到最准确的信息返回给用户。

java 复制代码
// 对话逻辑
func (c *ChatbotLogic) Chat(req *pb.ChatRequest) (*pb.ChatResponse, error) {
	//chat role and part
	message := make([]llms.MessageContent, 10)
	var index int = 0
	if index == 9 {
		index = 0
	}
	//create role instance
	message[index].Role = "human"
	//create text instance
	text := llms.TextContent{Text: req.UserInput}
	message[index].Parts = []llms.ContentPart{text}
	//input session
	respose, err := c.model.GenerateContent(c.ctx, message)
	if err != nil {
		logx.Errorf("Session error: %v", err)
		return nil, err

	}
	jsonRespponse, err := json.Marshal(respose)
	if err != nil {
		logx.Errorf("struct parse error: %v", err)
		result := respose.Choices[0].Content
		return &pb.ChatResponse{
			BotResponse: result,
		}, err
	}
	jsonRes := string(jsonRespponse)
	return &pb.ChatResponse{
		BotResponse: jsonRes,
	}, nil
}

下一期敬请期待。

相关推荐
__AtYou__3 小时前
Golang | Leetcode Golang题解之第206题反转链表
leetcode·golang·题解
craybb3 小时前
mdb转gdb实现过程介绍(2)三种方式实现GDB数据库的读、写,并将实现方式与ArcGIS环境共存配置
python·开源·gdb·格式转换·gdal
XINGTECODE4 小时前
golang写的自动更新器
开发语言·后端·golang
辣码甄源6 小时前
gdb-dashboard:用Python重塑GDB调试体验
python·测试工具·开源·github
無间行者6 小时前
Go语言学习:每日一练3
开发语言·学习·golang
soulteary16 小时前
福布斯 AI 50 榜单中唯一开源向量数据库:Weaviate
数据库·人工智能·开源·向量数据库·weaviate·gte
Hugo_Hoo19 小时前
构建LangChain应用程序的示例代码:49、如何使用 OpenAI 的 GPT-4 和 LangChain 库实现多模态问答系统
人工智能·langchain·ai编程
xiongxianhe1 天前
【SpringBoot Web框架实战教程(开源)】01 使用 pom 方式创建 SpringBoot 第一个项目
前端·spring boot·开源
Frank学习路上1 天前
【C++】开源:量化金融计算库QuantLib配置与使用
c++·金融·开源
charles_vaez1 天前
开源模型应用落地-FastAPI-助力模型交互-WebSocket篇(六)
深度学习·websocket·语言模型·langchain·fastapi