docs: 修复实现章节中代码的格式错误
将实现章节中的代码路径从普通文本格式修改为\texttt{}格式,以提高文档的可读性和一致性
This commit is contained in:
parent
55784b3775
commit
2cf8b1b6fd
@ -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数据处理的可靠性和可维护性。
|
||||
|
Loading…
x
Reference in New Issue
Block a user