docs: 修复实现章节中代码的格式错误

将实现章节中的代码路径从普通文本格式修改为\texttt{}格式,以提高文档的可读性和一致性
This commit is contained in:
carry 2025-04-28 21:37:52 +08:00
parent 55784b3775
commit 2cf8b1b6fd

View File

@ -20,7 +20,7 @@
\subsection{数据库设计与实现}
\subsubsection{双数据库架构设计SQLite + TinyDB}
本系统创新性地采用SQLite与TinyDB相结合的双数据库架构以应对不同类型数据的管理需求。对于API提供者信息等结构化数据系统选用SQLite作为核心数据库并通过SQLModel这一ORM工具实现面向对象的数据操作其内置的线程锁机制有效保障了多线程环境下的数据并发安全。SQLite数据库的实体文件持久化存储于workdir/db/db.sqlite路径确保数据的可追溯性。
本系统创新性地采用SQLite与TinyDB相结合的双数据库架构以应对不同类型数据的管理需求。对于API提供者信息等结构化数据系统选用SQLite作为核心数据库并通过SQLModel这一ORM工具实现面向对象的数据操作其内置的线程锁机制有效保障了多线程环境下的数据并发安全。SQLite数据库的实体文件持久化存储于\texttt{workdir/db/db.sqlite}路径,确保数据的可追溯性。
针对数据集信息包含文档元数据及问答对集合和提示词模板等半结构化数据的管理系统则采用轻量级文档数据库TinyDB。数据集采用内存存储与JSON文件持久化相结合的混合模式而提示词模板则直接通过JSON文件进行存储。TinyDB的无模式Schema-free特性为数据模型的灵活扩展提供了便利其对原生JSON格式的处理能力显著提升了数据序列化与反序列化的效率。这种双数据库协同架构在保障事务完整性的同时充分兼顾了半结构化数据处理的敏捷性需求实现了数据存储方案的最优化配置。
\subsubsection{据模型定义与存储方案}
@ -35,13 +35,13 @@
\subsection{语料生成与处理技术}
\subsubsection{Markdown文档解析}
该解析器采用树形结构组织Markdown文档内容核心是通过栈结构维护标题层级关系。当遇到\#号开头的标题行时,解析器会根据\#号数量确定当前标题的层级,并通过栈结构维护父子关系。如果遇到比栈顶元素层级低的标题,会不断弹出栈顶元素直到找到合适的父节点。对于代码块内容,解析器会特殊处理以```或\textasciitilde{}\textasciitilde{}\textasciitilde{}开头的行将其间的所有内容视为原始文本直接附加到当前节点不进行任何解析。这种处理方式保证了代码块内的特殊字符不会被误解析为Markdown语法。文档内容的组织采用递归遍历方式。process\_markdown\_file函数会先构建完整的文档树然后通过traverse函数递归遍历所有节点。对于叶子节点(没有子节点的节点),会将从根节点到该节点的所有标题用``-\textgreater{}''连接并与节点内容组合输出形成完整的上下文信息。解析器还提供了print\_tree函数用于可视化文档结构可以清晰展示各层级标题的嵌套关系和内容分布。这种树形结构表示法特别适合处理具有复杂层级关系的长文档能够准确反映文档的原始组织结构。
该解析器采用树形结构组织Markdown文档内容核心是通过栈结构维护标题层级关系。当遇到\#号开头的标题行时,解析器会根据\#号数量确定当前标题的层级,并通过栈结构维护父子关系。如果遇到比栈顶元素层级低的标题,会不断弹出栈顶元素直到找到合适的父节点。对于代码块内容,解析器会特殊处理以```或\textasciitilde{}\textasciitilde{}\textasciitilde{}开头的行将其间的所有内容视为原始文本直接附加到当前节点不进行任何解析。这种处理方式保证了代码块内的特殊字符不会被误解析为Markdown语法。文档内容的组织采用递归遍历方式。\texttt{process\_markdown\_fil}函数会先构建完整的文档树,然后通过\texttt{traverse}函数递归遍历所有节点。对于叶子节点(没有子节点的节点),会将从根节点到该节点的所有标题用``-\textgreater{}''连接,并与节点内容组合输出,形成完整的上下文信息。解析器还提供了\texttt{print\_tree}函数用于可视化文档结构,可以清晰展示各层级标题的嵌套关系和内容分布。这种树形结构表示法特别适合处理具有复杂层级关系的长文档,能够准确反映文档的原始组织结构。
\subsubsection{prompt模板套用和提示词格式引导}
通过PromptTemplate类构建动态提示词模板前端界面支持选择预存模板并自动提取变量生成可编辑表格实现提示词参数化采用提示词追加JSON格式要求和API强制返回结构的双重保障机制确保输出结构化支持多轮生成并记录详细耗时和token使用情况同时具备异常处理能力通过严格的数据验证流程将响应解析映射到数据模型确保数据质量特别实现了文档切片与模板变量的智能组合有效支持从长文档生成结构化QA数据集形成了一套完整的提示词模板应用与数据集生成解决方案。
\subsubsection{OpenAI API的协程并发语料生成}
本系统的OpenAI API协程并发语料生成模块采用异步IO架构实现高并发处理其核心逻辑体现在 reasoning.py 中的 call\_openai\_api 方法。该方法通过实例化 openai.AsyncOpenAI 异步客户端支持多轮次rounds参数连续对话请求自动解析JSON格式响应并记录完整的调用元数据。在并发控制方面基于Python原生asyncio事件循环实现非阻塞式请求处理通过await关键字异步等待API响应这种设计理论上可扩展为使用asyncio.gather实现并行请求批处理。数据流设计采用 dataset\_generation.py 中定义的 LLMRequest 请求对象封装输入参数,生成 LLMResponse 响应列表。错误处理机制采用全异常捕获策略在发生API超时或格式错误时保留错误上下文和response\_id追踪链同时维护包含耗时统计精确到毫秒、prompt/completion tokens使用量及总资源消耗的性能监控体系。该模块通过 dataset\_generate\_page.py 集成到前端生成流程实现文档切片处理、可配置并发参数当前UI隐藏和实时进度反馈的完整工作流。
本系统的OpenAI API协程并发语料生成模块采用异步IO架构实现高并发处理其核心逻辑体现在 \texttt{reasoning.py} 中的 \texttt{call\_openai\_api} 方法。该方法通过实例化 \texttt{openai.AsyncOpenAI} 异步客户端支持多轮次rounds参数连续对话请求自动解析JSON格式响应并记录完整的调用元数据。在并发控制方面基于Python原生\texttt{asyncio}事件循环实现非阻塞式请求处理通过await关键字异步等待API响应这种设计理论上可扩展为使用\texttt{asyncio.gather}实现并行请求批处理。数据流设计采用 \texttt{dataset\_generation.py} 中定义的 \texttt{LLMRequest} 请求对象封装输入参数,生成 \texttt{LLMResponse} 响应列表。错误处理机制采用全异常捕获策略在发生API超时或格式错误时保留错误上下文和\texttt{response\_id}追踪链同时维护包含耗时统计精确到毫秒、prompt/completion tokens使用量及总资源消耗的性能监控体系。该模块通过 \texttt{dataset\_generate\_page.py} 集成到前端生成流程实现文档切片处理、可配置并发参数当前UI隐藏和实时进度反馈的完整工作流。
\subsubsection{json格式校验、反序列化和持久化}
本系统采用三层架构实现JSON数据处理全流程管理在数据输入层通过动态Schema绑定技术结合大语言模型的格式约束参数构建双向校验机制确保原始数据符合预定义结构规范在数据处理层设计基于异常传播模型的三级解析体系通过语法验证、语义补全和类型强转实现安全反序列化采用领域驱动设计模式将原始JSON映射为业务对象在数据存储层运用分层持久化策略通过内存序列化缓存、文档数据库中间存储和文件系统冷备份三级存储机制实现数据生命周期管理。系统通过管道过滤器模式串联各处理模块建立数据校验→结构转换→持久存储的完整处理链路各组件间通过标准接口解耦形成高内聚低耦合的可扩展架构有效提升复杂JSON数据处理的可靠性和可维护性。