作者|凌敏
AI 技术的迅猛发展正在为软件工程领域带来一场智能化变革,当下,AI 代码助手已经成为软件开发中不可或缺的工具。根据国际数据公司(IDC)近期发布的《中国市场代码生成产品评估》报告,全球有 82% 的开发人员已经使用具有自动完成或智能代码生成功能的 IDE 或代码编辑器,其中 71% 的人表示他们编写的代码中有 40% 以上是自动生成的。另据 Gartner 发布的业界首个 AI 代码助手魔力象限报告预测,到 2028 年,90% 的企业软件工程师将使用 AI 代码助手。
目前,市面上的 AI 代码助手核心功能普遍包括智能代码生成、自动化代码补全、错误检测与修复等。但不同行业的研发场景存在显著差异,痛点不同,其对 AI 代码助手的具体需求也不尽相同。以金融行业为例,在金融科技领域的研发环境中,开发人员通常会遇到专业领域门槛、安全合规、网络隔离、业务隔离等挑战。因此,一套能够提升开发效率、满足严格安全要求,同时适配内网环境的解决方案至关重要。
2023 年,招商证券开始着手探索 AI 辅助编程的相关技术和实践。在自研建设中,考虑到体验建设、效果优化、能力迭代等未来面临的挑战,招商证券决定引入一个行业领先、能力成熟、且支持灵活扩展的伙伴进行合作共建。经过一系列严格和细致的技术评估,招商证券最终选择与腾讯云 AI 代码助手合作,充分利用腾讯云的技术优势与成熟经验,加速推动公司的数字化转型和智能化升级进程。
如前文所言,金融科技领域的研发环境具有其特殊性,具体体现在以下四大方面。
其一,专业领域门槛高。金融证券领域业务逻辑代码复杂,不仅要求技术人员具备强大的编程能力,还要对金融市场有深刻的理解和分析能力。例如,在投研分析、投资交易、定价、风险计算等方面,都需要具备深厚的专业知识。
其二,安全合规问题。由于涉及到大量的金融数据和敏感信息,代码和数据必须在内部环境中处理,所有工具和模型必须支持私有化部署。此外,为了确保数据的安全性,开发环境往往部署在虚拟的云桌面中。
其三,网络隔离。金融证券领域的开发工作大都在沙箱环境中进行,无法连接外网,开发人员在工作中无法通过 Google、百度等搜索引擎快速查找和获取相关技术资料和解决方案。
其四,业务隔离。自营、资管、托管、机构等不同业务系统间有严格的权限隔离,每个业务线都有隔离墙,知识、代码信息都是相互隔离的。
特殊的研发环境意味着金融科技领域对 AI 编程助手的要求也更高——不仅要提供技术上的支持,还要在专业领域知识、安全合规、网络环境和业务隔离等方面提供专业的服务,以满足金融科技领域的特殊需求。
2023 年,招商证券开始启动 AI 辅助编程相关研究和技术实践,思考如何构建适用于券商的 AI 编程助手。因所处行业的特殊性,招商证券对 AI 编程助手提出了四大要求:
第一,私有化部署。全栈私有化部署方案,将所有工具和服务完全托管在内网中。
第二,领域知识库。构建金融证券领域的代码知识库,涵盖研究、交易、定价、风控等复杂场景,支持项目级代码补全。
第三,技术对话。提供代码补全、问题解析和技术问答功能,减轻无法使用外网搜索引擎的困扰。
第四,端侧支持。代码仓库向量化、 RAG 检索在端侧实现,保证业务系统间的权限隔离。
在自研建设过程中,招商证券综合体验建设、效果优化、能力迭代等方面的考量,最终选择与腾讯云 AI 代码助手联合建设一个模块化、可扩展、具备券商特色的 AI 编程工具平台,以支持其在金融科技领域的持续发展和创新。
具体来说,这一框架设计具备三大特点:
运营指标可扩展:通过腾讯云提供的开放性指标度量监控方案,招商证券能够根据自己的需求,灵活地进行统计、上报、插件、工程等模块的热插拔,实现与内部数据分析系统和代码库的无缝对接。
插件可拓展:插件可根据招商证券需要扩展快捷指令,可调整和扩展 Prompt,支持定制化场景。
模型可拓展:利用腾讯云的代码大模型,结合招商证券的特定数据,实现代码的跨文件扩展。可以支持集成招商证券的代码清洗逻辑,以及使用招商证券的代码语料库进行模型的预训练和精调,构建符合其代码特色的模型测评工具与测评用例集。
这种白盒式定制化的合作方式,也是招商证券选择腾讯云 AI 代码助手的原因之一。这种方式使得招商证券能够深入参与到产品的设计和开发过程中,确保 AI 编程助手能够精准地满足其特定的业务需求和操作习惯。
在私有化部署方面,这套框架允许招商证券将所有工具和服务完全托管在内网中,确保了数据的私密性和安全性。在构建领域知识库的过程中,抽象语法树(AST)作为解析和结构化提取工程代码的关键技术,为后续的量化分析和模型训练打下基础。为了提升端侧的智能处理能力,招商证券在本地部署了 Embedding 模型,通过本地模型将代码和文档转化为向量表示。
为了增强向量搜索能力,招商证券在端侧部署了 Qdrant 向量库,本地存储向量数据,快速进行向量检索。此外,招商证券还集成了 Tantivy 搜索引擎以优化代码搜索功能,Tantivy 能够迅速检索代码库中的相关信息,帮助开发者快速定位问题,从而显著提高开发效率。
在推进 AI 编程伙伴项目的过程中,招商证券曾遇到过来自运营、体验、效果以及扩展性等四大方面的挑战。凭借一系列创新解决方案,招商证券最终克服了这些难题,并积累了多条 AI 编程伙伴建设心得。
运营方面,改变编程习惯并非易事,因此运营的策略和反馈机制对于工具的推广至关重要。招商证券通过管理视角的数据大盘来度量成效,同时引入了采纳率和生成率等指标,以更全面地评估 AI 编程伙伴的表现。此外,为了提升个人用户的体验,公司开发了个人视角的工作台,用户能够直观地看到 AI 编程伙伴带来的效能提升。在推广过程中,通过树立标杆和个人工作台的度量,鼓励用户形成良好的使用习惯,从而提高了工具的采纳率。
体验方面,编程工作具有高度的重复性,任何小的不便都可能累积成大问题。招商证券最初使用的 JCEF WebView 方案存在白屏和缓存问题,通过重构 JetBrains IDE 对话模块,使用原生代码替换 JCEF WebView 浏览器,支持替换 IDE 代码区域选中内容、代码比对、创建代码文件、插入代码到 IDE 代码区等快捷操作,实现了体验的阶梯性提升。
效果方面,招商证券一直在考虑如何提升代码补全 / 生成效果,其中的一个基本逻辑是:AI 编程助手掌握的信息越多,其补全的准确性就越高。为此,团队不断优化信息的组织方式,提取与光标位置相关的上下文代码,并根据相似度进行排名,以提供更准确的补全建议。这种方法在跨文件补全和补全逻辑优化方面取得了显著成效。
扩展性方面,在券商公司中,除了 IT 人员,还有交易策略、衍生品模型和数据分析等领域的专业人员需要编写代码。这也要求 AI 编程助手具备一定的可扩展性。通过结合 Git 管理、引入 CodeInsight 模块,以及优化代码评审和仿写功能,AI 编程助手的扩展性得到了显著提升。此外,团队还将 AI 编程能力拓展到了 Jupyter 平台,以支持策略交易和衍生品定价等业务。
据介绍,截至目前,AI 编程伙伴覆盖总用户数近 1000 人,日活跃用户数超过 300 人,周活跃用户数超过 550 人,完成了 27.9 万次技术对话,累计接受超 16.8 万行代码,补全采纳率约 20%。
当前,招商证券与腾讯云在智能化研发领域的合作正迈向一个新的阶段。在招商证券看来,选择一个能够深度合作的伙伴,共同推动 AI 编程领域的创新,比单纯选择当前最好的框架或模型更为重要。
展望未来,招商证券期待与腾讯云一起,以 AI 编程伙伴为切入点,共同开发出更有价值的 AI 编程解决方案。通过这些解决方案,帮助更多的开发者释放 AI 编程的潜力,推动整个行业的技术进步和创新发展。