当前位置: 首页 > news >正文

LangChain4j +DeepSeek大模型应用开发——7 项目实战 创建硅谷小鹿

这部分我们实现硅谷小鹿的基本聊天功能,包含聊天记忆、聊天记忆持久化、提示词

1. 创建硅谷小鹿

创建XiaoLuAgent

package com.ai.langchain4j.assistant;import dev.langchain4j.service.*;
import dev.langchain4j.service.spring.AiService;import static dev.langchain4j.service.spring.AiServiceWiringMode.EXPLICIT;@AiService(wiringMode = EXPLICIT,chatModel = "qwenChatModel",chatMemoryProvider = "chatMemoryProviderXiaolu")
public interface XiaoLuAgent {@SystemMessage(fromResource = "prompt.txt")String chat(@MemoryId Long memoryId, @UserMessage String userMessage);
}

2. 提示词模板

prompt.txt

你的名字是“小鹿”,你是一家名为“北京协和医院”的智能客服。
你是一个训练有素的医疗顾问和医疗伴诊助手。
你态度友好、礼貌且言辞简洁。1、请仅在用户发起第一次会话时,和用户打个招呼,并介绍你是谁。2、作为一个训练有素的医疗顾问:
请基于当前临床实践和研究,针对患者提出的特定健康问题,提供详细、准确且实用的医疗建议。请同时考虑可能的病因、诊断流程、治疗方案以及预防措施,并给出在不同情境下的应对策略。对于药物治疗,请特别指明适用的药品名称、剂量和疗程。如果需要进一步的检查或就医,也请明确指示。
比如
医院信息:提供医院的位置(例如北京市东城区帅府园一号)、营业时间(如周一至周五8:00-17:00,周末及节假日9:00-16:00)等信息。
科室信息:根据患者的病情推荐相应的科室,比如内科、外科、妇产科、儿科等,并简要介绍各科室的专业领域。
医生信息:基于患者的需求,提供相关医生的信息,包括但不限于医生的专业特长、出诊时间等。
健康咨询:针对特定健康问题,提供详细的医疗建议,考虑病因、诊断流程、治疗方案、预防措施等,并给出不同情境下的应对策略。对于药物治疗,请特别指明适用药品名称、剂量和疗程。如果需要进一步检查或就医,也请明确指示。3、作为医疗伴诊助手,你可以回答用户就医流程中的相关问题,主要包含以下功能:
AI分导诊:根据患者的病情和就医需求,智能推荐最合适的科室。
AI挂号助手:现智能查询是否有挂号号源服务;实现智能预约挂号服务(需用户提供姓名、身份证号、预约科室、日期及时间);实现智能取消挂号服务。
查询预约状态:帮助用户查询是否已经成功预约,或者确认已有的预约详情。4、你必须遵守的规则如下:
在获取挂号预约详情或取消挂号预约之前,你必须确保自己知晓用户的姓名(必选)、身份证号(必选)、预约科室(必选)、预约日期(必选,格式举例:2025-04-14)、预约时间(必选,格式:上午 或 下午)、预约医生(可选)。
当被问到其他领域的咨询时,要表示歉意并说明你无法在这方面提供帮助。5、请在回答的结果中适当包含一些轻松可爱的图标和表情。例如😊、💡、📅等。6、今天是 {{current_date}}。

3. 配置小智助手

配置持久化和记忆隔离

package com.ai.langchain4j.config;@Configuration
public class XiaoLuAgentConfig {@Autowiredprivate MongoChatMemoryStore mongoChatMemoryStore;  //导入持久化介质@BeanChatMemoryProvider chatMemoryProviderXiaolu() {return memoryId -> MessageWindowChatMemory.builder().id(memoryId).maxMessages(20)   //最大记忆数.chatMemoryStore(mongoChatMemoryStore).build();}
}

4. 封装对话对象

package com.ai.langchain4j.bean;@Data
public class ChatForm {private Long memoryId;//对话idprivate String message;//用户问题
}

5. 添加Controller方法

package com.ai.langchain4j.controller;@Tag(name = "硅谷小鹿")
@RestController
@RequestMapping("/xiaolu")
public class XiaoLuController {@Autowiredprivate XiaoLuAgent xiaoluAgent;@Operation(summary = "对话")@PostMapping("/chat")public String chat(@RequestBody ChatForm chatForm)  {return xiaoluAgent.chat(chatForm.getMemoryId(), chatForm.getMessage());}
}

在这里插入图片描述

6. 待优化

信息查询:提示词中还应该提供医院信息(如位置信息,营业时间等)、科室信息(都有哪些科室)、医生信息(都有哪些医生)

业务实现:预约、取消预约、查询是否预约等

信息查询可以使用RAG检索增强生成

业务实现需要通过Function Calling函数调用

相关文章:

  • Python Cookbook-6.14 实现状态设计模式
  • DeepSeek 赋能自然语言处理:从理论到实践的全方位解析
  • Qt指南针
  • 支持selenium的chrome driver更新到136.0.7103.49
  • 打包 Python 项目为 Windows 可执行文件:高效部署指南
  • 33、VS中提示“以下文件中的行尾不一致。是否将行尾标准化?“是什么意思?
  • 【C语言练习】014. 使用数组作为函数参数
  • Java关键字解析
  • Canvas特效实例:黑客帝国-字母矩阵(字母雨)
  • OpenAI最新发布的GPT-4.1系列模型,性能体验如何?
  • 设计模式简述(十四)组合模式
  • Unity SpriteMask(精灵遮罩)
  • Go 语言中一个功能强大且广泛使用的数据验证库github.com/go-playground/validator/v10
  • Js扩展DOM、BOM、AJAX、事件、定时器
  • 系统架构设计师:设计模式概述
  • 为 Unity 项目添加自定义 USB HID 设备支持 (适用于 PC 和 Android/VR)-任何手柄、无人机手柄、摇杆、方向盘
  • 补题( Convolution, 二维卷积求输出矩阵元素和最大值)
  • 华为云Astro大屏连接器创建操作实例:抽取物联网iotda影子设备数据的连接器创建
  • 【中间件】bthread_基础_TaskControl
  • Kotlin革新数据分析
  • 屠呦呦当选美国科学院外籍院士
  • 中国公民在日本被机动车碾压身亡,我使馆发布提醒
  • 商超展销延长、专区专柜亮相……上海“外贸拓内销”商品与市民见面
  • 四川苍溪县教育局通报“工作人员辱骂举报学生”:停职检查
  • 在上海生活8年,13岁英国女孩把城市记忆写进歌里
  • 乌方称泽连斯基与特朗普进行简短会谈