沈阳中小企业网站制作,成全视频免费观看在线看 综合 笔记 视频,wh网站建设,网站托管服务 重庆【项目实训】【项目博客#09】HarmonySmartCodingSystem系统后端智能API检索与代码助手实现#xff08;6.2-6.15#xff09; 文章目录 【项目实训】【项目博客#09】HarmonySmartCodingSystem系统后端智能API检索与代码助手实现#xff08;6.2-6.15#xff09;项目博客概述一…【项目实训】【项目博客#09】HarmonySmartCodingSystem系统后端智能API检索与代码助手实现6.2-6.15 文章目录 【项目实训】【项目博客#09】HarmonySmartCodingSystem系统后端智能API检索与代码助手实现6.2-6.15项目博客概述一、整体架构设计1.1 系统模块组成1.2 整体流程设计 二、API文档RAG检索系统实现2.1 RAG技术原理与优化2.2 RAG引擎核心实现2.3 回答生成与引用机制2.4 API接口实现 三、智能代码文件助手实现3.1 代码替换服务设计3.2 代码助手请求实现3.3 提示词设计与后端API实现3.4 前端UI组件实现 四、基于微调大模型的代码生成系统4.1 后端技术选型与实现 项目博客概述
在HarmonySmartCoding项目中为提升开发者的编码效率和API学习体验我们设计实现了一套包含RAG检索系统、智能代码助手和代码生成系统的开发辅助平台。本文将重点介绍各个系统模块的设计实现包括API文档RAG检索后端、智能代码文件助手以及基于微调大模型的代码生成系统展示如何通过AI技术提升HarmonyOS应用开发效率。
一、整体架构设计
1.1 系统模块组成
开发智能辅助系统由三个主要模块组成 API文档RAG检索系统 基于检索增强生成的API文档智能问答BGE-M3文本向量化和相似度检索DeepSeek大模型问答生成 智能代码文件助手 基于AI的代码修改建议生成自动代码替换与文件管理交互式代码编辑界面 微调大模型代码生成 基于LoRA技术的大模型微调本地代码生成推理服务前端代码生成与编辑界面
1.2 整体流程设计
系统的整体工作流程如下
开发者需求输入开发者通过统一界面输入API查询、代码修改需求或代码生成需求智能路由分发系统根据请求类型分发到对应模块并行请求处理各模块独立处理请求返回结果结果整合展示统一界面整合展示不同模块的结果提供一体化体验
二、API文档RAG检索系统实现
2.1 RAG技术原理与优化
RAG检索增强生成系统通过检索相关文档内容作为上下文增强大模型的回答能力。我们的系统实现了以下优化
检索质量优化采用BGE-M3模型替代原有向量化模型提高语义理解能力上下文构建优化改进文档片段的选择和组织方式引用追踪机制新增文档引用标记系统使生成的回答可溯源到具体文档
2.2 RAG引擎核心实现
以下是RAG引擎初始化的关键代码
def __init__(self, bge_model_path, docs_path, doc_ids_path, embeddings_path, doc_links_pathNone, api_summaries_pathNone):# 加载本地 BGE 模型self.model SentenceTransformer(bge_model_path)# 初始化DeepSeek客户端self.deepseek_client DeepSeekOfficialClient()# 加载RAG数据库with open(docs_path, r, encodingutf-8) as f:self.docs json.load(f)with open(doc_ids_path, r, encodingutf-8) as f:self.doc_ids json.load(f)with open(embeddings_path, rb) as f:self.embeddings pickle.load(f)# 加载文档链接和API摘要# ... 省略部分代码 ...查询向量化实现
def get_query_embedding(self, query):使用本地 BGE 模型获取查询的向量表示embedding self.model.encode([query], normalize_embeddingsTrue)emb embedding[0] # 取第一个结果return emb文档检索实现
def search(self, query, top_k3):根据查询检索相关文档query_emb self.get_query_embedding(query)# 计算余弦相似度sims np.dot(self.embeddings, query_emb) / (np.linalg.norm(self.embeddings, axis1) * np.linalg.norm(query_emb) 1e-8)top_indices sims.argsort()[-top_k:][::-1]# 构建结果列表results []for idx in top_indices:# ... 处理文档内容和链接 ...2.3 回答生成与引用机制
回答生成模块使用DeepSeek大模型结合检索结果生成最终回答
def generate_answer_from_docs(self, query, docs):基于检索到的文档使用DeepSeek生成智能回答if self.deepseek_client:# 构建上下文context for i, doc in enumerate(docs):doc_content self.extract_doc_content(doc)context f文档{i1} (【DOC{i1}】):\n{doc_content}\n\n# 构建提示词prompt f请基于以下HarmonyOS API文档内容回答用户的问题。引用格式要求:1. 引用文档内容时必须使用特殊标记【DOC1】、【DOC2】等...用户问题: {query}文档内容:{context}# 调用模型生成回答# ... 省略部分代码 ...2.4 API接口实现
app.route(/api/rag_query, methods[POST])
def rag_query():data request.get_json()query data.get(query, )top_k data.get(top_k, 3)if not query:return jsonify({error: No query provided}), 400try:# 执行RAG搜索results rag_engine.search(query, top_ktop_k)# 格式化响应resp rag_engine.format_api_response(query, results)return jsonify(resp)except Exception as e:return jsonify({error: fRAG 查询失败: {str(e)}}), 500三、智能代码文件助手实现
3.1 代码替换服务设计
代码替换服务是智能代码文件助手的核心组件负责解析AI生成的代码修改建议并应用到实际文件中
// 处理生成的代码 - 移除注释标记
export const processGeneratedCode (code: string): string {// 移除// ... existing code ...注释行return code.split(\n).filter(line !line.trim().startsWith(// ... existing code ...)).join(\n);
};3.2 代码助手请求实现
代码助手请求的核心是将用户需求和上下文文件发送给后端API并处理返回的响应
// 代码助手请求实现简化版
static async generateCodeAssistant(request: CodeAssistantRequest): PromiseCodeGenerationResponse {try {// 发送请求到后端APIconst response await axios.post(${this.apiUrl}/code_assistant, request);return {code: response.data.result || ,suggestions: response.data.suggestions};} catch (error) {// 处理请求失败的情况返回友好的错误消息// ...}
}3.3 提示词设计与后端API实现
提示词设计是智能代码文件助手的关键部分它直接影响了AI生成代码的质量和格式
# 提示词构建函数简化版
def get_code_assistant_prompt(user_input, language, api_version, selected_filesNone):# 读取提示词模板prompt_template read_prompt_template()# 添加选中的文件内容selected_files_str format_selected_files(selected_files)# 组合最终提示词final_prompt f{prompt_template}\n\n用户需求: {user_input} {selected_files_str}return final_prompt代码助手API的实现是后端服务的核心
app.route(/api/code_assistant, methods[POST])
def code_assistant():# 获取请求数据data request.get_json()prompt data.get(prompt, )# ...try:# 构建提示词assistant_prompt get_code_assistant_prompt(prompt, language, api_version, selected_files)# 调用DeepSeek客户端messages [{role: user, content: assistant_prompt}]result ds_client.chat_completion(messages, temperature0.7)# 移除思考标签result remove_think_tags(result)# 保存请求历史db get_db()db.save_snippet(f智能助手: {prompt[:30]}, result, assistant)return jsonify({result: result})except Exception as e:# 处理异常情况# ...3.4 前端UI组件实现
输出面板组件是智能代码文件助手的用户界面主要功能区域包括
用户输入区采用可扩展的文本输入框支持多行输入文件选择区直观的文件选择交互支持添加和删除文件结果展示区使用语法高亮显示代码修改建议操作区提供应用、忽略等操作按钮
文件修改建议展示区实现
!-- 文件修改建议展示区简化版 --
div classfile-changes-containerdiv classfile-changes-list!-- 遍历所有文件修改建议 --div v-forchange in parsedFileChanges classfile-change-item!-- 文件路径和操作按钮 --!-- 代码预览使用语法高亮 --/div/div
/div四、基于微调大模型的代码生成系统
4.1 后端技术选型与实现
代码生成系统后端基于Flask搭建集成LoRA微调的大语言模型
app.route(/api/generate, methods[POST])
def generate_code():print([DEBUG] 收到/generate_code请求)data request.get_json()print(f[DEBUG] 请求内容: {data})prompt data.get(prompt, )