基于大模型 + 知识库的 Code Review 实践

基于大模型与知识库的Code Review实践 本文介绍了如何结合大模型与知识库进行Code Review,以提高代码质量和开发效率。通过实例和生动的语言,解释了抽象的技术概念,并提供了可操作的建议和解决方法。 阅读详情

背景

💡想法源于在一次 Code Review 时,向 Claude 询问哪种写法代码更优雅得来。当时就想能不能让 AI 帮我们辅助做 Code Review?

1.png

痛点

  • 信息安全合规问题:公司内代码直接调 ChatGPT / Claude 会有安全/合规问题,为了使用 ChatGPT / Claude 需要对代码脱敏,只提供抽象逻辑,这往往更花时间。
  • 低质量代码耗费时间:业务每天至少 10~20 个 MR 需要 CR,虽然提交时 MR 经过 单测 + Lint 过滤了一些低级错误,但还有些问题(代码合理性、经验、MR 相关业务逻辑等)需要花费大量时间,最后可以先经过自动化 CR,再进行人工 CR,可大大提升 CR 效率!
  • 团队 Code Review 规范缺少执行:大部分团队的 Code Review 停留在文档纸面上,成员之间口口相传,并没有一个工具根据规范来严格执行。

介绍

一句话介绍就是:基于开源大模型 + 知识库的 Code Review 实践,类似一个代码评审助手(CR Copilot)。

特性

符合公司安全规范,所有代码数据不出内网,所有推理过程均在内网完成

  • 🌈 开箱即用:基于 Gitlab CI,仅 10 几行配置完成接入,即可对 MR 进行 CR。
  • 🔒 数据安全:基于开源大模型做私有化部署,隔离外网访问,确保代码 CR 过程仅在内网环境下完成。
  • ♾ 无调用次数限制:部署在内部平台,只有 GPU 租用成本。
  • 📚 自定义知识库:CR 助手基于提供的飞书文档进行学习,将匹配部分作为上下文,结合代码变更进行 CR,这将大大提升 CR 的准确度,也更符合团队自身的 CR 规范。
  • 🎯 评论到变更行:CR 助手将结果评论到变更代码行上,通过 Gitlab CI 通知,更及时获取 CR 助手给出的评论。

名词解释

名词释义
CR / Code Review越来越多的企业都要求研发团队在代码的开发过程中要进行CodeReview(简称 CR),在保障代码质量的同时,促进团队成员之间的交流,提高代码水平。
llm / 大规模语言模型大规模语言模型(Large Language Models,LLMs)是自然语言处理中使用大量文本数据训练的神经网络模型,可以生成高质量的文本并理解语言。如GPT、BERT等。
AIGC利用NLP、NLG、计算机视觉、语音技术等生成文字、图像、视频等内容。 全称是人工智能生成/创作内容(Artificial Intelligence Generated Content);是继UGC,PGC后,利用人工智能技术,自动生成内容的生产方式;AIGC底层技术的发展,驱动围绕不同内容类型(模态)和垂直领域的应用加速涌现。
LLaMAMeta(Facebook)的大型多模态语言模型。
ChatGLMChatGLM 是一个开源的、支持中英双语的对话语言模型,底座是 GLM 语言模型。
BaichuanBaichuan 2 是百川智能推出的新一代开源大语言模型,采用 2.6 万亿 Tokens 的高质量语料训练。
Prompt一段文本或语句,用于指导机器学习模型生成特定类型、主题或格式的输出。在自然语言处理领域中,Prompt 通常由一个问题或任务描述组成,例如“给我写一篇有关人工智能的文章”、“翻译这个英文句子到法语”等等。在图像识别领域中,Prompt 则可以是一个图片描述、标签或分类信息。
langchainLangChain 是一个开源Python 库,由 Harrison Chase 开发,旨在支持使用大型语言模型(LLM)和外部资源(如数据源或语言处理系统)开发应用程序。它提供了标准的接口,与其他工具集成,并为常见应用程序提供端到端链 。
embedding将任意文本映射到固定维度的向量空间中,相似语义的文本,其向量在空间中的位置会比较接近。在 LLM 应用中常用于相似性的文本搜索。
向量数据库 (Vector stores)存储向量表示的数据库,用于相似性搜索。如Milvus、Pinecone等。
Similarity Search在向量数据库中搜索离查询向量最近的向量,用于检索相似项。
知识库存储结构化知识的数据库,LLM可以利用这些知识增强自己的理解能力。
In-context LearningIn-Context Learning 是机器学习领域的一个概念,指不调整模型自身参数,而是在 Prompt 上下文中包含特定问题相关的信息,就可以赋予模型解决新问题能力的一种方式。
Finetune / 微调在预训练模型基础上使用特定数据集进行微调,提升模型在某任务上的性能。

实现思路

流程图

image.png

系统架构

完成一次 CR 流程,需要用到如下技术模块:

4.png

LLMs / 开源大模型选型

CR Copilot 功能的核心在于大语言模型基座,基于不同大模型基座生成的 CR 质量也不尽相同。对于 CR 这个场景,我们需要选型的模型满足以下几个条件:

  • 理解代码
  • 对中文支持好
  • 较强的上下文学习能力

image

FlagEval 8 月大模型评测榜单(https://flageval.baai.ac.cn/#/trending)

模型后面的 -{n}b 指 n*10 亿参数量,比如 13b 就是 130 亿参数,个人试用下来参数量的多少并不能决定效果怎样,根据实际情况来判断。

起初在众多大模型中选择『Llama2-Chinese-13b-Chat』和『chatglm2-6b』、『Baichuan2-13B-Chat』,通过一段时间模型赛马🐎,主观上感觉 Llama2 会更适用于 CR 场景,而 ChatGLM2 更像是文科生,对代码评审没有太多建设性建议,但在中文 AIGC 上会比较有优势!

image.png

两个模型执行过程中的记录

因大模型合规问题,CR Copilot 会默认使用 ChatGLM2-6B,如有使用 Llama2 模型需求需要向 Meta 申请,通过后可使用。

image

Llama 2 要求企业的月活用户数不超过 7 亿

目前支持的模型可选,仅供参考的评分如下:

8.png

知识库设计

为什么需要知识库?

大模型基座只包含互联网上的公开数据,对公司内部的框架知识和使用文档并不了解。

举个例子🌰:公司内有个框架叫 Lynx,让大模型从内部文档中知道『什么是 Lynx?』、『怎么写 Lynx?』

image.png

一图胜千言

这里的『强化模式』会使用向量数据库,并将匹配的知识库片段和问题『什么是 Lynx?』生成 Prompt,发送到 LLM 执行。

怎样找到相关度高的知识?

有了知识库后,怎样将我们『搜索的问题/代码』在『知识库』中找到『相关度最高的内容』?

答案是通过三个过程:

  1. Text Embeddings(文本向量化)
  2. Vector Stores(向量存储)
  3. Similarity Search(相似性搜索)

image

文本相似度匹配流程图,图源 Langchain-Chatchat

Text Embeddings(文本向量化)

不同于传统数据库的模糊搜索/匹配关键字,我们需要进行语义/特征匹配。

例如:你搜索『猫』,只能得到带 『猫』 关键字匹配的结果,没办法得到 『布偶』、『蓝白』 等结果,传统数据库认为『布偶』是『布偶』、『猫』是『猫』。要实现关联语义搜索,是通过人工打特征标签,这个过程也被称为特征工程(Feature Engineering)。

image

如何才能将文本自动化的方式来提取这些特征?这就要通过 Vector Embedding 向量化实现,目前社区通过 OpenAI 提供的 text-embedding-ada-002 模型生成,这会引起两个问题:

  1. 数据安全问题:需要调用 OpenAI 的 API 才能做向量化 image.png
  2. 收费:大概 3000页/美元

image.png

我们使用了国产文本相似度计算模型 bge-large-zh,并私有化部署公司内网,一次 embedding 向量化耗时基本在毫秒级。

image.png

Vector Stores(向量存储)

提前将官方文档进行 Vector Embeddings,然后存储在向量数据库里,我们这里选择的向量数据库是 Qdrant,主要考虑到是用 Rust 写的,存储和查询也许会快一些!这里引用一个向量数据库选型的几个维度选择:

向量数据库URLGitHub** **StarLanguageCloud
chromagithub.com/chroma-core…8.5KPython❌
milvusgithub.com/milvus-io/m…22.8KGo/Python/C++✅
pineconewww.pinecone.io/❌❌✅
qdrantgithub.com/qdrant/qdra…12.7KRust✅
typesensegithub.com/typesense/t…14.4KC++❌
weaviategithub.com/weaviate/we…7.4KGo✅

数据截止到2023年9月10号

Similarity Search(相似性搜索)

原理是通过比较向量之间的距离来判断它们的相似度

image

那么有了『query 问题的向量』和『数据库里录入的知识库向量』后,这可以直接使用向量数据库提供的 Similarity Search 方式匹配相关内容。

image.png

加载知识库

CR Copilot 知识库分为『内置官方文档知识库』、『自定义知识库』,query 输入是先用完整代码截取前半段 + LLM 生成 summary 总结,然后和知识库做相似上下文,匹配流程如下:

image.png

截取完整代码前半段作为 query 输入,是因为大部分语言前半段都声明了 modules、packages,通过这种方式提高知识库相似匹配度。

官方文档-知识库(内置)

避免大家将官方文档重复录入、embedding,CR Copilot 内置了官方文档,目录包含:

内容数据源
React 官方文档react.dev/learn
TypeScript 官方文档www.typescriptlang.org/docs/
Rspack 官方文档www.rspack.dev/zh/guide/in…
Garfishgithub.com/web-infra-d…
公司内 Go / Python / Rust 等编程规范…

并通过一个简单的 CURD 来管理内置知识库

image.png

自定义知识库-飞书文档(自定义)

飞书文档没有格式要求,能看懂正确代码是怎样就行

这里直接使用 LangChain 提供的 LarkSuite 文档加载类,对有权限的飞书文档进行获取,使用 CharacterTextSplitter / RecursiveCharacterTextSplitter 将文本分割成固定长度的块(chunks),方法有两个主要参数:

  • chunk_size: 控制每个块的长度。例如设置为 1024,则每个块包含 1024 个字符。
  • chunk_overlap: 控制相邻两个块之间的重叠长度。例如设置为 128,则每个块会与相邻块重叠 128 个字符。

image.png

Prompt 指令设计

因为大模型有足够多的数据,我们想让大模型按要求执行就需要用到『Prompt 提示词』。

image.png

(图源 Stephen Wolfram)

代码 summary 总结指令

让 LLM 通过文件代码分析当前代码涉及的知识点,用于后续知识库相似度匹配:

prefix = "user: " if model == "chatglm2" else "<s>Human: "
suffix = "assistant(用中文): let's think step by step." if model == "chatglm2" else "\n</s><s>Assistant(用中文): let's think step by step."

return f"""{prefix}根据这段 {language} 代码,列出关于这段 {language} 代码用到的工具库、模块包。
{language} 代码:
```{language}
{source_code}

请注意:

  • 知识列表中的每一项都不要有类似或者重复的内容
  • 列出的内容要和代码密切相关
  • 最少列出 3 个, 最多不要超过 6 个
  • 知识列表中的每一项要具体
  • 列出列表,不要对工具库、模块做解释
  • 输出中文
    {suffix}“”"

其中:

*   `language`:当前文件的代码语言(TypeScript、Python、Rust、Golang 等)
*   `source_code`:是当前变更文件的完整代码

### CR 指令

如果使用的模型(如 LLaMA 2)对中文 Prompt 支持较差,需要在设计 Prompt 时采用『输入英文』『输出中文』的方式,即:

llama2

f"""Human: please briefly review the {language}code changes by learning the provided context to do a brief code review feedback and suggestions. if any bug risk and improvement suggestion are welcome(no more than six)

{context}

<code_changes>
{diff_code}
</code_changes>\nAssistant: “”"

chatglm2

f"""user: 【指令】请根据所提供的上下文信息来简要审查{language} 变更代码,进行简短的代码审查和建议,变更代码有任何 bug 缺陷和改进建议请指出(不超过 6 条)。
【已知信息】:{context}

【变更代码】:{diff_code}

assistant: “”"


其中:

*   `language`:当前文件的代码语言(TypeScript、Python、Rust、Golang 等)
*   `context`:根据知识库返回的上下文信息
*   `diff_code`:是变更的代码(不使用完整代码主要是考虑 LLM max\_tokens 最大限制)

评论到变更代码行
--------

为了能计算出变更代码行,写了一个函数,通过解析 diff 来输出变更的行数:

import re

def parse_diff(input):
if not input:
return []
if not isinstance(input, str) or re.match(r"^\s+$", input):
return []

lines = input.split("\n")
if not lines:
    return []

result = []
current_file = None
current_chunk = None
deleted_line_counter = 0
added_line_counter = 0
current_file_changes = None

def normal(line):
    nonlocal deleted_line_counter, added_line_counter
    current_chunk["changes"].append({
        "type": "normal",
        "normal": True,
        "ln1": deleted_line_counter,
        "ln2": added_line_counter,
        "content": line
    })
    deleted_line_counter += 1
    added_line_counter += 1
    current_file_changes["old_lines"] -= 1
    current_file_changes["new_lines"] -= 1

def start(line):
    nonlocal current_file, result
    current_file = {
        "chunks": [],
        "deletions": 0,
        "additions": 0
    }
    result.append(current_file)

def to_num_of_lines(number):
    return int(number) if number else 1

def chunk(line, match):
    nonlocal current_file, current_chunk, deleted_line_counter, added_line_counter, current_file_changes
    if not current_file:
        start(line)
    old_start, old_num_lines, new_start, new_num_lines = match.group(1), match.group(2), match.group(
        3), match.group(4)

    deleted_line_counter = int(old_start)
    added_line_counter = int(new_start)
    current_chunk = {
        "content": line,
        "changes": [],
        "old_start": int(old_start),
        "old_lines": to_num_of_lines(old_num_lines),
        "new_start": int(new_start),
        "new_lines": to_num_of_lines(new_num_lines),
    }
    current_file_changes = {
        "old_lines": to_num_of_lines(old_num_lines),
        "new_lines": to_num_of_lines(new_num_lines),
    }
    current_file["chunks"].append(current_chunk)

def delete(line):
    nonlocal deleted_line_counter
    if not current_chunk:
        return

    current_chunk["changes"].append({
        "type": "del",
        "del": True,
        "ln": deleted_line_counter,
        "content": line
    })
    deleted_line_counter += 1
    current_file["deletions"] += 1
    current_file_changes["old_lines"] -= 1

def add(line):
    nonlocal added_line_counter
    if not current_chunk:
        return
    current_chunk["changes"].append({
        "type": "add",
        "add": True,
        "ln": added_line_counter,
        "content": line
    })
    added_line_counter += 1
    current_file["additions"] += 1
    current_file_changes["new_lines"] -= 1

def eof(line):
    if not current_chunk:
        return
    most_recent_change = current_chunk["changes"][-1]
    current_chunk["changes"].append({
        "type": most_recent_change["type"],
        most_recent_change["type"]: True,
        "ln1": most_recent_change["ln1"],
        "ln2": most_recent_change["ln2"],
        "ln": most_recent_change["ln"],
        "content": line
    })

header_patterns = [
    (re.compile(r"^@@\s+-(\d+),?(\d+)?\s++(\d+),?(\d+)?\s@@"), chunk)
]

content_patterns = [
    (re.compile(r"^\ No newline at end of file$"), eof),
    (re.compile(r"^-"), delete),
    (re.compile(r"^+"), add),
    (re.compile(r"^\s+"), normal)
]

def parse_content_line(line):
    nonlocal current_file_changes
    for pattern, handler in content_patterns:
        match = re.search(pattern, line)
        if match:
            handler(line)
            break
    if current_file_changes["old_lines"] == 0 and current_file_changes["new_lines"] == 0:
        current_file_changes = None

def parse_header_line(line):
    for pattern, handler in header_patterns:
        match = re.search(pattern, line)
        if match:
            handler(line, match)
            break

def parse_line(line):
    if current_file_changes:
        parse_content_line(line)
    else:
        parse_header_line(line)

for line in lines:
    parse_line(line)

return result

image.png

这里机器人账号调用 Gitlab API 进行的评论,会默认被 Resolved,这样可以避免 CR Copilot 评论过多造成每个评论要手动点下 Resolved

如何学习AI大模型?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

想正式转到一些新兴的 AI 行业,不仅需要系统的学习AI大模型。同时也要跟已有的技能结合,辅助编程提效,或上手实操应用,增加自己的职场竞争力。

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高

那么我作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,希望可以帮助到更多学习大模型的人!至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

👉 福利来袭优快云大礼包:《2025最全AI大模型学习资源包》免费分享,安全可点 👈

全套AGI大模型学习大纲+路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

👉 福利来袭优快云大礼包:《2025最全AI大模型学习资源包》免费分享,安全可点 👈

img

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

Abaqus6.14.4 Linux详细图文安装教程 Abaqus6.14.4 Linux详细图文安装教程 20170409 1. 准备安装环境 1.1 安装CentOS 6.5,更新库 1.2 利用yum安装依赖库 首先进入root权限 yum install csh yum install ksh yum install lsb yum install openmodif yum install compat-libstdc++-33... 阅读详情

相关推荐

逆变器方案(工频全套)工频正弦波逆变器开发板全套设计资

逆变器方案(工频全套)工频正弦波逆变器开发板,24V-72V通用12只TO-247封装MOS管,额定输出功率6500W以下;配有触摸屏操作界面,运行数据一目了然,带市电互补UPS功能,可选择电池优先或市电有限工作,我们的开发板均从实战角度出发,让您的学习更便捷,包含全套设计资料,PCB.原理图.源代码,程序均有中文注释,MCU选用美国微芯公的PIC-8位单片机,民用数字电源首选单片机,抗干扰能力强,运行稳定。...

m0_73494033的博客 892

code review总结

文章目录前言一.error日志二 装箱与拆箱三 没完没了的字符串四 过多的嵌套五 乱拷贝六 引用了不该引用的jar包。 前言 一六年,我参与了一个我有生以来的最高大尚的项目,我在项目中负责某功能计费模块的开发,尽管总个项目投入了很多人力,还有引进了很多先进的工具和管理方式,但那还是我有生以来见过最糟的项目之一 一七年,我去朋友的创业公司,帮他组建团队,一九年至今年,我于一家物流公司担任架构方面的工作,在开发中,我常见那种写业务能力很强,但代码细节惨不忍睹的开发者,于是我想整理一些我见过的代码片断,并提供一

pingwangzhi的专栏 605

《通信工程施工与管理》

制作馈线接头必须使用专用的工具,专用工具包括:馈线切割刀、馈线安全刀、小金属丝毛刷、固定尺寸或大号活动扳手、小号扁锉刀、细齿小手锯、接头扩孔器、3M防水胶或防水接头盒;如图所示,详情如表所示。

2302_78710464的博客 1653

CodeReview 规范及实施

你的代码整体结构清晰,逻辑合理,很容易理解。随着业务压力增大,引发代码质量下降,代码质量的下降导致了开发效率的降低,维护成功高等问题,开发效率下降后又加重了业务压力,最终陷入了死亡三角的内耗之中。,因为开发者比你更了解整个系统的业务逻辑和架构,你的意见可能不适合该系统或架构,因此需要友好的交流,让他们知道他们的代码是对的,继续保持,自己则更进一步的了解整个系统和架构,避免第二次犯同样的错误。代码评审是一个学习的机会,通过审查他人的代码,可以学习到新的编码技巧和最佳实践,同时也可以分享自己的知识和经验。

程序猿进阶 9370

用 Coze 打造纯自动化 AI 情报助手

本文将引导您逐步构建一个简易的AI情报助手,从提示词到工作流,再到卡片消息,详细讲解了如何利用Coze平台开发自动化工具。过程简单易懂,何不亲自动手一试?如果您对此类内容感兴趣,敬请关注本作者。未来,我将带来更多精彩的AI工具教程,助您迅速掌握各类AI应用。在这个AI时代,让您领先一步。t=O83A2AGI.NET AI 教程 震撼!用 Coze 打造纯自动化 AI 情报助手震撼!

xinzhaobuxuan的博客 2531

避坑指南:Unity与Visual Studio开发环境配置中的5个常见问题及解决方案

本文针对Unity与Visual Studio开发环境配置中的5个常见问题,提供了详细的解决方案。重点解决了项目文件生成失败导致命名空间无法识别、调试器无法附加、包管理器与扩展安装混乱、脚本编译错误以及多版本环境冲突等核心痛点,帮助开发者构建稳定高效的开发调试环境。

weixin_27791839的博客 281

代码review总结

Code Review应该是软件工程最最有价值的一个活动,之前,本站发表过《简单实用的Code Review工具》,那些工具主要是用来帮助更有效地进行这个活动,这里的这篇文章,我们主要想和大家分享一下Code Review代码审查的一些心得。首先,我们先来看看Code Reivew的用处:Code reviews 中,可以通过大家的建议增进代码的质量。Code reviews  是一个传递知识的手...

fishmai的专栏 2万+

ESP-IDF 5.4下esp32-camera组件编译报错?手把手教你解决头文件缺失问题

本文详细解析了ESP-IDF 5.4环境下esp32-camera组件编译时出现的头文件缺失问题,提供了从目录结构优化、CMake配置到VSCode智能感知设置的完整解决方案。针对第三方组件集成难题,文章特别强调了PRIV_REQUIRES依赖声明和路径配置的关键作用,帮助开发者高效解决编译错误并建立稳定的开发环境。

weixin_28829629的博客 309

【AIGC】基于大模型+知识库的Code Review实践

基于大模型与知识库的Code Review实践,具体实施细节可以归纳如下:一、选择合适的大模型与知识库二、集成大模型与知识库到Code Review流程三、结合人工审查四、持续优化与改进通过以上具体实施细节,可以确保基于大模型与知识库的Code Review实践能够高效、准确地评估代码的质量和可靠性,提高开发效率。

后端研发工程师Marion的博客 8793

Windows 64 位系统下安装配置 DOSBox 及 debug.exe

该篇博客同样作为类似问题 “如何在 Windows 64 位系统下进入 debug” 的答案。 很多同学初看王爽的《汇编语言》,或者因为其它原因需要进入 debug 调试模式下学习汇编语言的时候,会发现进入不了,出现类似以下的错误提示。 这是因为他们使用的是 64 位的 Windows 系统(Win 7,Win 8 以及 Win 10 等),而 64 位 Windows 系统不再支持在命令提示符窗口下进入 debug 调试模式。那么对于使用 64 位 Windows 系统的用户来说,该怎样才能够顺利进入 d

加号减减号的博客 5万+

从软体机器人到鞋垫分析:Abaqus超弹性材料(Ogden模型)仿真配置全流程

本文详细介绍了Abaqus中Ogden模型在超弹性材料仿真中的应用全流程,涵盖从实验数据导入、参数拟合到模型构建与求解优化的关键步骤。特别针对鞋垫分析等生物力学场景,提供了单元选择、接触设置和并行计算等实用技巧,帮助工程师实现高精度仿真分析。

weixin_42525385的博客 400

大模型与知识库结合的Code Review优化实践

代码审查(Code Review)是软件开发中确保代码质量的关键环节,传统方式依赖人工检查,效率低下且易出错。随着大模型技术的发展,结合知识库的智能Code Review方案逐渐成为趋势。这类方案通过大模型的语义理解能力与知识库的规范存储,实现自动化代码缺陷检测与建议生成。其技术原理涉及代码解析、特征提取、向量检索等关键步骤,特别适合金融等对数据安全要求高的场景。本文以Llama 2大模型与Milvus向量数据库的组合为例,详解如何构建企业级Code Review系统,涵盖内网部署、多语言支持等工程实践要点

weixin_34235457的博客 309

ESD防护设计宝典(十一):CE(传导发射)超标问题排查与解决

(Conducted Emission, CE),亦称为传导骚扰,是电子电气设备或系统内部的电压、电流通过信号线、电源线或地线向外传输,对其他电子电气设备或系统造成电磁干扰的物理现象。其。

m0_56451176的博客 856

大模型与知识库结合的自动化Code Review实践

代码审查(Code Review)是软件开发中确保代码质量的关键环节,但传统方式常面临效率低下和标准不统一的问题。通过结合大模型和向量知识库技术,可以实现智能化的自动化代码审查。大模型如Llama2-7B能够快速理解代码语义,而向量知识库则存储了企业内部的架构规范和安全红线等文档。这种技术组合不仅能实时检测代码问题,还能提供上下文相关的修复建议,显著提升审查效率。在金融系统等对代码质量要求高的场景中,这种方案可以降低人力成本,同时保证审查标准的统一性。私有化部署的7B参数模型在保持高准确率的同时,也能满足企

weixin_34274029的博客 455

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

大模型与知识库结合的智能Code Review实践

代码审查(Code Review)是软件开发中确保代码质量的关键环节,传统静态分析工具常因规则库更新滞后和缺乏业务理解而受限。通过结合大模型(如Llama 2)与知识库检索增强(RAG)技术,可以实现更智能化的代码审查。大模型作为推理引擎,能够理解代码上下文,而向量化存储的知识库则提供动态业务规范支持。这种混合架构显著提升了缺陷发现率和评审效率,同时降低了误报率。典型应用场景包括金融支付系统等对代码质量要求严格的领域。本文以CodeLlama-13B和Milvus向量数据库为例,详细解析了系统架构设计与工程

diaohong5075的博客 417

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: 《大型语言模型实战指南:应用实践与场景落地》一文详解大型语言模型的11种微调方法
下一篇: 大模型爆火的NLP书籍来了!!《掌握NLP:从基础到大语言模型》附PDF,手慢无!
AI大模型_学习君
博客等级 码龄3年 6137粉丝 551原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值