引言
好的,今天我们继续聊一下Spring AI的相关内容。在10月的时候,我使用Spring AI搭建了一个简易版的个人助理系统,整体来说效果还是非常不错的。通过这次尝试,我对业务系统与AI结合的探索有了更为明确的理解和实践。虽然目前功能上还相对简单,整体系统也缺乏较多可操作的交互方式,特别是在数据库操作方面,功能较为基础,目前主要实现了一个简单的查询功能。
但就在10月末,Spring AI迎来了一个重要的更新,更新后不仅增强了函数调用的能力,还引入了全局参数的概念。这两个新特性为系统的扩展性和可玩性带来了极大的提升,开启了更多可能性。

那么,今天我们就利用这个全局参数的特性,来实现一个数据库插件。具体来说,我们将实现一个完整的增删改查(CRUD)操作。对于目前的智能体系统来说,数据库操作已经是一个至关重要的功能,尤其是在业务系统中,智能体能够与数据库进行交互,不仅提升了系统的灵活性和智能化程度,也大大增强了业务处理的效率。因此,我们今天的目标就是通过Spring AI的强大功能,实现一套基础的数据库操作框架,完成增、删、改、查四个功能模块。
需要特别注意的是,这里我们仅仅是通过一个简单的使用案例来进行分析和讲解,当然,这并不代表只能局限于此,实际上对于大部分业务场景来说,这样的数据库操作已经足够满足需求,并且可以根据具体的业务需求进一步扩展和优化功能。
个人助理大优化
首先,让我们来看一下我们计划实现的个人助理功能。目前,我们已经实现了旅游攻略查询和天气查询功能。今天,我们将在此基础上新增一个“个人待办”功能。由于数据库模块较为庞大且复杂,针对这个部分我们将单独进行详细讲解。以下是该功能的大致实现效果及相关流程示意图:

效果演示
首先,让我们来看看经过半天调整后的效果演示。经过一段时间的优化和调试,最终呈现的效果基本符合我的预期。
这里只演示了下待办的增删改查,并没有演示天气查询和旅游攻略,可以看上一章节的演示。

开始优化
提示词
当然,我们的优化工作从入口部分开始,首先,提示词的设计是不可或缺的。回顾上一章节,由于当时功能较少,我们并没有对提示词做过多的修饰,因此整体的交互和模型的响应相对简单。然而,随着本次新增功能的增多,模型的回答可能会变得较为杂乱无序。
因此,为了确保模型的输出能够更精准、有序,我们在本次优化中提前准备并生成了详细的提示词。
String conversation_id = "123";
OpenAiChatOptions openAiChatOptions = OpenAiChatOptions.builder()
.withModel("hunyuan-pro").withTemperature(0.5)
.build();
String systemPrompt = """
- Role: 个人助理小助手
- Background: 用户需要一个多功能的AI助手,可以提供实时的天气信息、详尽的旅游攻略以及帮助记录待办事项。
- Profile: 你是一个专业的旅行天气小助手,具备强大的信息检索能力和数据处理能力,能够为用户提供精确的天气信息、详尽的旅游攻略,并帮助管理日常待办事项。
- Skills: 你拥有强大的网络搜索能力、数据处理能力以及用户交互能力,能够快速准确地为用户提供所需信息。
- Goals: 提供准确的天气信息,制定包含航班、酒店、火车信息的详尽旅游攻略,并帮助用户记录和管理待办事项。
- Constrains: 提供的信息必须准确无误,旅游攻略应详尽实用,待办事项管理应简洁高效。
- OutputFormat: 友好的对话式回复,包含必要的详细信息和格式化的数据。
- Workflow:
1. 接收用户的天气查询请求,并提供准确的天气信息。
2. 根据用户的旅游目的地,搜索并提供包括航班、酒店、火车在内的旅游攻略。
3. 接收用户的待办事项,并提供简洁的记录和提醒服务。
""";
ChatMemory chatMemory1 = messageChatMemoryAdvisor.getChatMemory();
String content = this.myChatClientWithSystem
.prompt()
.system(systemPrompt)
.user(userInput)
.options(openAiChatOptions)
.advisors(messageChatMemoryAdvisor,myLoggerAdvisor,promptChatKnowledageAdvisor,promptCh

2021

被折叠的 条评论
为什么被折叠?



