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

【个人博客—山东大学项目实训——古诗词与文章智能创作助学平台(一)】

个人博客—山东大学项目实训——古诗词与文章智能创作助学平台一大模型API接入与诗词检索的提示词工程一、功能概述二、大模型API接入2.1 ArkService初始化2.2 基础对话方法三、诗词检索的提示词设计3.1 提示词内容3.2 检索服务实现四、JSON解析容错处理4.1 解析器设计4.2 Poem实体定义五、总结大模型API接入与诗词检索的提示词工程一、功能概述在古诗词学习平台中诗词检索功能需要调用大模型API根据用户输入的关键词返回结构化的诗词信息。本文介绍大模型API的接入方式、提示词设计思路以及JSON解析的容错处理。二、大模型API接入2.1 ArkService初始化项目使用火山引擎提供的豆包大模型进行交互。在LlmService中完成API服务的初始化和资源管理ServicepublicclassLlmService{Value(${volcengine.api.key})privateStringapiKey;Value(${volcengine.model.name:ep-20260313212708-bhpdc})privateStringmodelName;Value(${volcengine.base.url:https://ark.cn-beijing.volces.com/api/v3})privateStringbaseUrl;privateArkServicearkService;PostConstructpublicvoidinit(){this.arkServiceArkService.builder().apiKey(apiKey).baseUrl(baseUrl).build();}PreDestroypublicvoiddestroy(){if(this.arkService!null){this.arkService.shutdownExecutor();}}}通过PostConstruct注解在Bean初始化时创建ArkService实例PreDestroy确保应用关闭时释放线程池资源。2.2 基础对话方法LlmService提供了基础的对话方法publicStringchat(Stringmessage){try{CreateResponsesRequestrequestCreateResponsesRequest.builder().model(modelName).input(ResponsesInput.builder().addListItem(ItemEasyMessage.builder().role(ResponsesConstants.MESSAGE_ROLE_USER).content(MessageContent.builder().addListItem(InputContentItemText.builder().text(message).build()).build()).build()).build()).thinking(ResponsesThinking.builder().type(ResponsesConstants.THINKING_TYPE_DISABLED).build()).build();ResponseObjectresparkService.createResponse(request);returnextractResponseText(resp);}catch(Exceptione){e.printStackTrace();return调用大模型失败e.getMessage();}}关键点使用Builder模式构建请求对象关闭深度思考功能以降低响应延迟统一的异常处理和错误返回三、诗词检索的提示词设计3.1 提示词内容为了让大模型输出结构化的诗词数据在PoemSearchService中设计了专门的System PromptprivatestaticfinalStringSEARCH_SYSTEM_PROMPT你是一位古诗词专家请根据用户的检索条件诗词名、作者、意象、主题等提供一首最匹配的诗词。\n\n请严格按照以下 JSON 格式输出不要添加任何额外说明\n{\n \poemId\: 自动生成的唯一 ID,\n \title\: \诗词标题\,\n \dynasty\: \朝代\,\n \author\: \作者\,\n \userId\: 用户 ID,\n \content\: \诗词完整内容\,\n \translation\: \白话文翻译\,\n \analysis\: \诗词赏析和创作背景分析\,\n \type\: \search\\n}\n\n要求\n1. content 字段必须是诗词原文保持原有格式和标点\n2. translation 字段提供准确流畅的白话文翻译\n3. analysis 字段包含创作背景、艺术特色、思想情感等分析\n4. 如果找不到完全匹配的诗词请返回最接近的一首;提示词明确了角色定位古诗词专家输出格式严格的JSON结构包含所有必需字段字段规范每个字段的含义和要求边界处理找不到匹配时的降级策略3.2 检索服务实现PoemSearchService封装了诗词检索的核心逻辑ServicepublicclassPoemSearchService{AutowiredprivateJsonParserjsonParser;Value(${volcengine.api.key})privateStringapiKey;Value(${volcengine.model.name:ep-20260313212708-bhpdc})privateStringmodelName;Value(${volcengine.base.url:https://ark.cn-beijing.volces.com/api/v3})privateStringbaseUrl;privateArkServicearkService;PostConstructpublicvoidinit(){this.arkServiceArkService.builder().apiKey(apiKey).baseUrl(baseUrl).build();}PreDestroypublicvoiddestroy(){if(this.arkService!null){this.arkService.shutdownExecutor();}}publicPoemsearchPoem(Stringquery){try{// 构建系统提示词 用户查询StringsystemPromptSEARCH_SYSTEM_PROMPT\n\n用户检索query;CreateResponsesRequestrequestCreateResponsesRequest.builder().model(modelName).input(ResponsesInput.builder().addListItem(ItemEasyMessage.builder().role(ResponsesConstants.MESSAGE_ROLE_USER).content(MessageContent.builder().addListItem(InputContentItemText.builder().text(systemPrompt).build()).build()).build()).build()).thinking(ResponsesThinking.builder().type(ResponsesConstants.THINKING_TYPE_DISABLED).build()).build();ResponseObjectresparkService.createResponse(request);// 提取响应文本StringresponseTextextractResponseText(resp);// 将 JSON 字符串解析为 Poem 对象PoempoemjsonParser.parseToPoem(responseText);returnpoem;}catch(Exceptione){e.printStackTrace();thrownewRuntimeException(搜索诗词失败e.getMessage(),e);}}privateStringextractResponseText(ResponseObjectresp){if(resp!nullresp.getOutput()!null){for(ObjectitemObj:resp.getOutput()){if(itemObjinstanceofItemOutputMessage){ItemOutputMessageoutputMessage(ItemOutputMessage)itemObj;if(outputMessage.getContent()!null){for(ObjectcontentObj:outputMessage.getContent()){if(contentObjinstanceofOutputContentItemText){OutputContentItemTexttextItem(OutputContentItemText)contentObj;returntextItem.getText();}}}}}}return未收到模型回复;}}检索流程将System Prompt与用户查询拼接调用大模型API获取响应从响应对象中提取文本内容通过JsonParser解析为Poem对象四、JSON解析容错处理4.1 解析器设计由于大模型的输出可能不完全符合标准JSON格式如包含额外说明文字、Markdown标记等设计了容错解析机制ComponentpublicclassJsonParser{privatestaticfinalObjectMapperobjectMappernewObjectMapper();/** * 将 JSON 字符串解析为 Poem 对象 */publicPoemparseToPoem(Stringjson)throwsIOException{// 第一层尝试直接解析try{returnobjectMapper.readValue(json,Poem.class);}catch(Exceptione){// 第二层提取JSON片段后解析returnextractAndParsePoem(json);}}/** * 从文本中提取并解析诗词 JSON */privatePoemextractAndParsePoem(Stringtext)throwsIOException{intstartIndextext.indexOf({);intendIndextext.lastIndexOf(});if(startIndex-1||endIndex-1||startIndexendIndex){thrownewIOException(未找到有效的 JSON 格式);}Stringjsontext.substring(startIndex,endIndex1);returnobjectMapper.readValue(json,Poem.class);}}解析策略第一层尝试直接将响应文本解析为Poem对象第二层如果失败定位第一个{和最后一个}之间的内容提取纯JSON后再解析失败处理如果连JSON片段都无法提取抛出异常由上层处理4.2 Poem实体定义DatapublicclassPoem{IdprivateStringid;Indexed(uniquetrue)privateIntegerpoemId;privateStringtitle;privateStringdynasty;privateStringauthor;IndexedprivateIntegeruserId;privateStringcontent;privateStringtranslation;privateStringanalysis;privateStringtype;}Poem实体与JSON字段一一对应Jackson会自动完成映射。五、总结诗词检索功能的核心技术点大模型API接入通过Ark SDK建立与大模型的通信通道管理服务生命周期提示词工程设计System Prompt约束输出格式明确字段要求和边界处理JSON解析实现两层容错机制处理非标准JSON输出响应提取从嵌套的响应对象中提取纯文本内容通过提示词工程和容错解析的配合确保了大模型输出的稳定性和可用性。

相关文章:

【个人博客—山东大学项目实训——古诗词与文章智能创作助学平台(一)】

个人博客—山东大学项目实训——古诗词与文章智能创作助学平台(一)大模型API接入与诗词检索的提示词工程一、功能概述二、大模型API接入2.1 ArkService初始化2.2 基础对话方法三、诗词检索的提示词设计3.1 提示词内容3.2 检索服务实现四、JSON解析容错处…...

网安护网面试-3-鸿鹄科技护网面试

以下为已总结“网络安全”及“护网”面试,均在:(https://www.haotaoyun.com/category/soc “网安 护网”终极 300 多问题面试笔记 - 全“网安 护网”终极 300 多问题面试笔记 - 1 共 3 - 内网 & 域相关“网安 护网”终极 300 多问题面试笔记 - 2…...

告别pip install失败!Ubuntu 20.04上搞定python-pcl的两种保姆级方案

告别pip install失败!Ubuntu 20.04上搞定python-pcl的两种保姆级方案 在Ubuntu 20.04上使用python-pcl进行点云处理时,很多开发者会遇到一个令人头疼的问题:直接使用pip install python-pcl命令安装时,往往会遭遇各种报错。这主要…...

【关注合作源码】-家政服务管理系统|家政预约|家政平台

博主介绍: 所有项目都配有从入门到精通的安装教程,可二开,提供核心代码讲解,项目指导。 项目配有对应开发文档、解析等 项目都录了发布和功能操作演示视频;项目的界面和功能都可以定制,包安装运行&#xff…...

IntelliPro 企业级产研协作平台:前端智能生产模块设计与落地

摘要 当前企业级前端研发面临复杂度高、迭代快、跨团队协作成本高的痛点,传统开发模式难以适配高效产研需求。本文围绕 IntelliPro 平台前端智能生产模块,拆解其定位、分层架构、智能代理体系与落地保障,输出企业前端智能化研发的实践方案。 …...

图像自回归生成(Auto-regressive image generation)实战学习(六)

相关项目下载链接 基于 Transformer 的自回归图像生成模型完整的链路是:1、先用 Patch AutoEncoder BSQ 量化器,把原始图像压缩为离散的 token 序列(每个整数 token 对应原图的一个小图像 patch)2、训练这个自回归 Transformer …...

etcd Raft 实现:分布式一致性核心原理

# etcd Raft 实现:分布式一致性核心原理> **源码版本**: etcd 3.5.9 | Go 1.21.5 > **阅读时间**: 约 25 分钟 > **难度**: ⭐⭐⭐⭐## 📋 引言在分布式系统中,如何让多个节点达成一致是一个经典难题。etcd 作为云原生时代的核心…...

.NET 新特性概览与相关文章索引蜕

从 UI 工程师到 AI 应用架构者 13 年前,我的工作是让按钮在 IE6 上对齐; 13 年后,我用 fetch-event-source 订阅大模型的“思维流”,用 OCR 解锁图片中的文字——前端,正在成为 AI 产品的第一道体验防线。 最近&#x…...

Mware虚拟机去虚拟化DLL版

、 链接:https://pan.quark.cn/s/d2f35a95a54a...

【实战】Streamlit搭建Python章节代码可视化系统

【实战】Streamlit搭建Python章节代码可视化系统 在日常学习和教学中,我们经常会遇到多章节代码文件管理的问题,手动切换文件夹、打开文件查看代码效率极低。本文将手把手教你用Streamlit快速搭建一个Python章节代码可视化系统,支持左侧章节…...

.NET10之 HttpClient 使用指南

一、HttpClient 核心概念与工作原理 System.Net.Http.HttpClient 是 .NET 中用于发送 HTTP 请求和接收 HTTP 响应的核心类,它封装了与 HTTP 服务交互的底层细节,提供了简洁、一致的编程接口。每个 HttpClient 实例包含一套应用于所有请求的配置集合&…...

TinyXML2嵌入式XML解析实战指南

1. TinyXML2 嵌入式应用技术指南:轻量级 XML 解析器在资源受限环境中的工程实践TinyXML2 是一款专为嵌入式系统与资源受限平台设计的 C XML 解析库,其核心定位并非功能完备的全功能 XML 处理引擎,而是以“小、快、可靠”为设计哲学的底层数据…...

鸿蒙Flutter实战:30.在Pub上发布鸿蒙化插件

背景 当我们编写好鸿蒙化插件后,特别是以 xxx_ohos 命名的联合插件,可以将其发布到 pub.dev 仓库中,以便其他开发者可以轻松地使用。 步骤 准备工作 包括但不限于: 做好插件的测试,尤其要在真机上进行测试&#x…...

维普、万方、知网 AI 检测有什么区别?一文讲清三大平台差异

国内高校目前主要使用知网 AIGC 检测、维普 AI 检测和万方 AI 检测三大平台。很多同学发现,同一篇论文在不同平台上的检测率差异很大。本文将详细对比三大平台的差异,帮助你针对性地准备。 三大平台基本信息 平台全称主要用户检测方式知网 AIGC学术文献…...

HCIP---VRRP实验

网络拓扑:分析:1.pc1和pc2处于不同vlan,所以处于不同网段。2.sw1为vlan10即pc1的网关,sw2为vlan20即pc2的网关,所以要使用vlanif接口。3.实现负载分担效果,使用pc1流量主要从sw1过,如果sw1故障或…...

大模型到底是啥?运维人分钟搞懂(不用数学)匙

1. 流图:数据的河流 如果把传统的堆叠面积图想象成一块块整齐堆叠的积木,那么流图就像一条蜿蜒流淌的河流,河道的宽窄变化自然流畅,波峰波谷过渡平滑。 它特别适合展示多个类别数据随时间的变化趋势,尤其是当你想强调整…...

保姆级 uPyPi 教程|从 到 :MicroPython 驱动包一键安装 + 分享全攻略蕾

这个代码的核心功能是:基于输入词的长度动态选择反义词示例,并调用大模型生成反义词,体现了 “动态少样本提示(Dynamic Few-Shot Prompting)” 与 “上下文长度感知的示例选择” 的能力。 from langchain.prompts impo…...

【2026年最新600套毕设项目分享】基于微信小程序的商品展示(30033)

有需要的同学,源代码和配套文档领取,加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码(前后端源代码SQL脚本)配套文档(LWPPT开题报告/任务书)远程调试控屏包运行一键启动项目&…...

网络工程作业四:拓扑图配置(动态)

1.作业要求2.作业预览图3.实验过程(1).设备放置和划分网段(顺便把IP地址标准好)(2)配置网关在启动设备后,进入路由器用户视图,可以通过命令sys(system-view),进入系统视图…...

【2026年最新600套毕设项目分享】微信小程序的电子商城购物平台(30032)

有需要的同学,源代码和配套文档领取,加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码(前后端源代码SQL脚本)配套文档(LWPPT开题报告/任务书)远程调试控屏包运行一键启动项目&…...

RGB LCD显示屏残存显示问题

📊 ESP32-S3 RGB接口LCD(ST7701S等)显示异常问题全总结 结合你遇到的烧录后残影、断电恢复、花屏/竖条等现象,我把这类问题的根因分类、排查逻辑、避坑方案、应急解决做了完整梳理,方便你以后快速定位和根治。一、 核…...

用 Laravel AI SDK 构建多智能体工作流计

1.安装环境准备 1.1.查看物理内存 [rootaiserver ~]# free -m 1.2.操作系统版本 [rootaiserver ~]# cat /etc/redhat-release 1.3.操作系统内存 [rootaiserver ~]# df -h /dev/shm/ 1.4.磁盘空间 [rootaiserver ~]# df -TH [rootaiserver ~]# df -h /tmp/ [rootaiserver ~]# d…...

**发散创新:基于TypeScript的VSCode插件开发实战——打造高效代码片段管理神

发散创新:基于TypeScript的VSCode插件开发实战——打造高效代码片段管理神器 在现代前端开发中,提升编码效率是每一位开发者的核心诉求。VSCode作为当前最主流的代码编辑器之一,其强大的插件生态为开发者提供了无限可能。本文将围绕 TypeScri…...

**发散创新:基于以太坊 Layer2 的Rollup 架构实现与性能优化实践**在区块链技术持续演进的今天,Layer2

发散创新:基于以太坊 Layer2 的 Rollup 架构实现与性能优化实践 在区块链技术持续演进的今天,Layer2 扩容方案已成为解决以太坊主网拥堵、Gas 费高昂问题的核心路径之一。本文将深入探讨 Optimistic Rollup Ethereum 主网验证机制 的实现细节&#xff0…...

**发散创新:基于脉冲计算的神经形态编程实践与Python实现**在传统冯·诺依曼架构下,计算

发散创新:基于脉冲计算的神经形态编程实践与Python实现 在传统冯诺依曼架构下,计算和存储分离导致能效瓶颈日益突出。近年来,脉冲计算(Spiking Neural Computing, SNC)作为一种受生物神经系统启发的新范式,…...

保姆级教程:在Ubuntu 22.04上,用Gitee镜像5分钟搞定ESP-IDF环境(告别GitHub龟速)

5分钟极速搭建ESP-IDF开发环境:Ubuntu 22.04Gitee镜像全攻略 还在为GitHub龟速下载ESP-IDF而抓狂?作为国内开发者,每次看到git clone进度条卡住不动时,都恨不得砸键盘。别担心,今天教你用Gitee镜像乐鑫官方工具链&…...

BERT在小说大模型中的核心定位:理解者、解码者、守护者

在AI重塑文学创作与阅读体验的时代浪潮中,Transformer架构的大语言模型无疑是聚光灯下的绝对主角。GPT系列以惊人的生成能力续写故事,DeepSeek-R1在阅文集团的集成让网文创作迎来了智能化时刻。然而,一个微妙却关键的问题正在浮出水面&#x…...

嵌入式摇杆驱动库:ADC滤波、死区补偿与方向判定

1. 项目概述Joystick 库是一个轻量级、硬件无关的嵌入式 C 语言函数集合,专为读取模拟摇杆(Analog Joystick)输入而设计。其核心目标并非提供完整驱动框架,而是封装底层 ADC 采样、去抖动、死区补偿、坐标映射与方向判定等共性逻辑…...

算法的时间和空间复杂度

1算法效率主要取决于时间和空间,一般从时间和空间衡量一个算法的好坏2时间复杂度算法的时间复杂度是一个函数,算法基本的执行次数,为算法的时间复杂度。对于时间复杂度的计算,我们采用大O的渐进表示法。大O渐进表示法1用常数1取代…...

将盾CDN:WAF工作机制与多层次防御策略解析

将盾CDN:Web应用防火墙的工作机制与防御策略 在当前数字化浪潮中,Web应用面临着DDoS攻击、SQL注入、跨站脚本等多元化威胁。将盾CDN通过智能防护机制,为企业Web应用构建了多层次的安全防线。## 将盾CDN的核心防护机制将盾CDN的WAF功能部署在…...