5 大场景上手通义灵码企业知识库 RAG

news2024/9/23 11:17:09

大家好,我是通义灵码,你的智能编程助手!最近我又升级啦,智能问答功能全面升级至 Qwen2,新版本在各个方面的性能和准确性都得到了显著提升。此外,行间代码补全效果也全面优化,多种编程语言生成性能及准确性大幅提升,如前端、Java、Go、Python、C++ 等。此外,灵码新增代码提交信息(Commit Message)生成,支持 Visual Studio 端。

我还在企业版里还引入了一个超酷的新技能:RAG(Retrieval-Augmented Generation)检索增强生成的能力,今天就跟大家分享下企业知识库能帮开发者做些什么。

可能有些朋友还不太明白这是啥,别急,我来通俗解释一下。想象一下,你有个超级聪明的研发助手,它除了通过大语言模型,记得自己学过海量知识外,还能随时外挂一个更懂你或者企业的“百科全书”知识库。检索增强生成能力能够即时访问、引用深入的知识体系,让我(通义灵码)为你提供更加精准、全面的研发问答和智能编码服务,避免模型幻觉哦~

说完这么多概念,你是不是迫不及待的想试试呢?本期就从通义灵码企业知识库的问答,带你一起感受下。Let’s go。

基于知识库的内容,帮你精准回答问题

新人入职场景

假如你是一位入职新人,我们可以使用通义灵码企业知识库的问答能力,更快速地学习企业编码规范、安全规范、环境准备等。

第一步:需要通义灵码的企业管理员,在通义灵码的知识库管理后台添加相关知识文档。

在这里插入图片描述

第二步:在通义灵码插件端的问答面板上,就可以直接提问咨询了。举例来说,在问答输入框,输入:#team docs 这段代码是否符合代码规范,帮我优化

在这里插入图片描述

这个时候,通义灵码就给你召回相关文档片段(原文档切块后片段),并针对文档的内容进行总结回答。这快准狠的效率是不是比你肉眼查阅、学习快多了。

基于知识库的内容,帮我精准生成代码

2.1 根据组件库文档生成代码

在软件开发,尤其是前端开发中,我们需要从一个产品需求开始,完成具体的产品界面的实现,这个过程,面临将抽象的需求文档,转化为具体、可用的产品界面的挑战。这个过程,不仅需要深刻理解需求,还要熟练掌握所选技术栈的组件库,同时还要确保开发的速度和代码质量。使用通义灵码企业知识库,可以让这个过程事半功倍。

首先,通过上传关键组件库的帮助文档到通义灵码的知识管理中。然后,在遇到具体需求时,在通义灵码问答区域通过 #team docs 调用企业知识库,快速获得咱们自己技术栈的代码建议和示例,加速开发流程。

下面,我们通过一个例子,如何基于企业知识库,快速实现“显示未读消息计数”的需求:

  1. 理解需求:以“显示未读消息数量”为例,识别关键组件为数字显示单元(可能含图标指示)及数据更新逻辑。
  2. 组件选择:在灵码知识库中,查找适用的组件,如 badge 组件,用于高亮显示未读消息数量,利用 Vue 的数据绑定机制实现数据动态更新。
  3. 代码生成:直接在通义灵码中,以自然语言形式表述需求,如:“创建 Element-UI 的 Badge 组件,展示未读消息数量,并随数据变动实时刷新。”通义灵码将理解这个需求,快速生成代码框架,后续做简单调整,以适应设计细节。
第一步:上传文档到知识库

为了丰富你的智能化开发资源库,请登录通义灵码企业管理后台,在“知识管理”区域下点击“文档”,上传关键的前端组件文档。以《Badge.md [ 1] 》为例,此文档聚焦于使用 React,结合自研组件库开发的右上角圆形数字徽章组件,内容全面,包括详细的使用教程、实战代码示例以及 API 接口说明。

备注:请参考示例文档链接以深入了解查阅示例文档 [ 2]

在这里插入图片描述

文档处理与配置:上传完成后,系统将自动处理这些文档,当状态显示为“已完成”,表明你的知识库已经准备就绪,在列表右上角点击 “开启检索增强” 按钮,即可体验。

在这里插入图片描述

第二步:智能化实现,需求转代码

当通义灵码企业管理员已经提前在灵码企业知识库,上传好前端组件文档后,我们就可以上手了。你可以在 VSCode、JetBrains IDEs、Visual Studio 这些 IDE 上安装通义灵码插件,如未安装,参考文档 [ 3]

我们再看下需求:“显示未读消息数量”,即为消息图标添上计数徽标。

于是,你可以在通义灵码问答面板提问:#team docs 如何给图标添加数字徽标?

备注:必须使用 #team docs 标签确保调用企业内部知识库资源

在这里插入图片描述

提交问题后,通义灵码将迅速根据你的 Badge.md 组件文档,提供精确的代码片段和使用指南,确保代码既符合团队编码规范,又能快速高效实现功能。

以下是通义灵码从文档中提取的一个使用 Badge 组件的例子,它展示了如何在 React 中使用 @teamix/ui 库的 Badge 组件来给图标添加数字徽标:

在这里插入图片描述

第三步:如何应对需求变更

如果你还想继续变更需求,通义灵码也能帮忙。如新需求“只需标记未读而不展示具体数字”,我们就继续基于 #team docs 来提问,输入:#team docs 能否将徽标改为小红点而非数字

通义灵码会立即根据你的新需求和已有的知识库内容,提供 API 调用调整的建议及相应的代码示例,确保你能迅速适应需求变动,保持开发的灵活性和效率。

我们来看看通义灵码给的代码建议与示例:

在这里插入图片描述

2.2 根据接口文档生成示例代码

程度员在开发程序的过程中,需要调用相应的接口,但苦于找不到帮助文档和示例代码,特别是一些内部的非通用的接口实现。使用通义灵码,可以将知识检索增强生成能力,应用到程序员高频使用的 API 调用场景中。

首先,上传接口文档至企业知识库,如,“OpenAI-对话 Chat.md”文档,包含了接口的调用方式、请求参数、返回参数等。这样,通义灵码就懂得了该文档中描述的知识。

接下来,我们可以在通义灵码问答区输入:#team docs 根据openai对话chat请求和响应体生成对应的go语言示例

这时通义灵码就给你召回相关文档片段(原文档切块后片段)。

在这里插入图片描述

根据接口文档,生成示例代码如下:

package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "io/ioutil"
    "net/http"
)

func main() {
    // OpenAI API endpoint
    apiEndpoint := "https://api.openai.com/v1/chat/completions"

    // API key
    apiKey := "YOUR_API_KEY"

    // Request body
    requestBody := map[string]interface{}{
    "model": "gpt-3.5-turbo",
    "messages": []map[string]interface{}{
    {"role": "user", "content": "Hello!"},
    },
    }

    // Convert request body to JSON
    jsonBody, err := json.Marshal(requestBody)
    if err != nil {
    fmt.Println("Error marshaling request body:", err)
    return
    }

    // Create request
    req, err := http.NewRequest("POST", apiEndpoint, bytes.NewBuffer(jsonBody))
    if err != nil {
    fmt.Println("Error creating request:", err)
    return
    }

    // Set headers
    req.Header.Set("Content-Type", "application/json")
    req.Header.Set("Authorization", "Bearer "+apiKey)

    // Send request
    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
    fmt.Println("Error sending request:", err)
    return
    }
    defer resp.Body.Close()

    // Read response body
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
    fmt.Println("Error reading response body:", err)
    return
    }

    // Parse response body
    var response map[string]interface{}
    err = json.Unmarshal(body, &response)
    if err != nil {
    fmt.Println("Error parsing response body:", err)
    return
    }

    // Print response
    fmt.Println("Response:")
    fmt.Println(response)
}

根据文档名和接口名清晰的定义,可以从对话中召回对应信息,并根据模型的推理能力生成不同语言的处理方式,以下为使用知识检索增强前后的对比效果,是不是一目了然。

在这里插入图片描述

基于知识库的内容,帮我优化框选代码

3.1 前端老旧工程代码升级场景

前端技术领域发展特别快速,老旧项目的依赖库版本升级,对于维持竞争力也至关重要。当前端团队计划将现有业务代码从 React 15 升级至新版本 16.8 时,通过智能编码工具可以显著加速这一升级过程。以下是通过企业知识库,在通义灵码中,实现老旧工程代码升级的详细步骤。

第一步:构建企业知识库

首先,企业管理者将框架最新版本的编码指南上传至通义灵码企业知识库。比如,这份详尽的表单组件使用说明文档:表单组件文档 [ 4] ,为接下来的组件框架版本的升级提供权威指导和参考依据。

第二步:识别并准备升级目标代码

手头上恰好有一个基于 React 版本 15 的旧项目,这时,你需识别出待升级的代码片段。例如,一个传统的类组件写法如下:

class Demo extends React.Component {
  handleSubmit= (values, errors) => {
    console.log('value & errors', values, errors);
  };

  render() {
    return (
      <Form style={{ width: '60%' }} {...formItemLayout} colon>
      </Form>
  );
}
}
第三步:智能辅助代码转换

在编辑器里选中以上代码片段,并在灵码的问答面板提出问题:#team docs 转换为符合新规范的React函数式组件写法

在这里插入图片描述

第四步:自动完成代码升级

通义灵码将运用其智能算法,基于 React 的新版函数式编程范式,自动将旧代码重构成更简洁的函数组件。这一过程不仅显著缩短了手动重构的时间,还确保了代码风格与团队最新编码标准的一致性,提升了代码质量和执行效率。

在这里插入图片描述

通过企业知识库检索增强,老旧工程代码的升级过程变得高效且精确,前端团队得以以最小的投入,实现项目从旧框架到新框架的平稳迁移。这样的升级策略确保了代码能够紧跟技术发展趋势,持续保持项目的行业竞争力和技术前沿地位。

3.2 代码规范场景

代码编写好了,如果需要确定是否符合企业或业内编码规范,这时候你就可以上传企业编程规范,例如:

在这里插入图片描述

参考资料:https://juejin.cn/post/7157594175846744071

框选同样的代码内容,有检索增强,模型则会以知识库召回的数据作为上下文,进行辅助生成。效率和质量也是立竿见影。

在这里插入图片描述

无检索增强效果

在这里插入图片描述

有检索增强效果

如何开通和使用通义灵码企业知识检索增强?

首先,你必须是通义灵码企业版的用户,现在通义灵码企业标准版有 30 天的免费试用,立即开通和试用 [ 5]

其次,你需要是企业版组织的管理员,即可开通企业知识库管理了,立即开通 [ 6]

最后,开通好后,立即邀请开发者们,在问答区域唤起 #team docs 吧。

相关链接:

[1] Badge.md

https://gitee.com/tongyilingma/ui-components-wiki/blob/master/basic/badge.md

[2] 查阅示例文档

https://gitee.com/tongyilingma/ui-components-wiki/blob/master/basic/badge.md

[3] 参考文档

https://tongyi.aliyun.com/lingma/download

[4] 表单组件文档

https://gitee.com/tongyilingma/ui-components-wiki/blob/master/basic/form.md

[5] 立即开通和试用

https://help.aliyun.com/document_detail/2678297.html?spm=a2c4g.2674160.0.i0

[6] 立即开通

https://help.aliyun.com/document_detail/2796751.html

点击此处,体验通义灵码新能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2038769.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python-小理和他的猫(赛氪OJ)

[题目描述] 今天小理又要为他的猫小咪准备好吃的猫粮了&#xff0c;你愿意帮助一下他们么&#xff1f; 小理现在拥有的金钱数为 N &#xff0c;有 M 种小咪喜欢的猫粮从左到右排列&#xff0c;已知每种猫粮的价格 ai​ &#xff0c;他的购买规则如下&#xff1a; 1.必须按照从左…

数据结构与算法--图的存储与遍历

文章目录 回顾提要图的定义和表示图的表示完全图和子图顶点的度路径与回路连通图 邻接矩阵权和网 邻接表示例 深度优先遍历 (DFS)广度优先遍历 (BFS)广度优先遍历过程总结邻接矩阵存储结构邻接表存储结构 回顾 线索化二叉树&#xff1a;在某种次序遍历过程中创建线索&#xff…

简单数学运算(c语言)

1.描述 //牛牛最近学会了一些简单的数学运算&#xff0c;例如 //∑i1 ∑i 1 //请你帮他模拟一下这个运算。 &#xff08;即 1 2 3.... n - 1 n) //输入描述&#xff1a; //输入仅一个正整数 n //输出描述&#xff1a; //请你计算 //∑i1n 2.就是递归函数 方法一&#xf…

40.【C语言】指针(重难点)(E)

目录 13.指针的使用和传址调用 14.数组名的理解 *数组名就是数组首元素的地址 *两个例外 *使用指针访问数组 *一维数组的传参本质 往期推荐 承接上篇39.【C语言】指针&#xff08;重难点&#xff09;&#xff08;D&#xff09; 13. 指针的使用和传址调用 见29.【C语言】函数系…

Linux系统编程(9)

一、wait函数 1.wait函数 #include <sys/wait.h> pid_t wait(int *status);wait函数有两个作用&#xff1a; 1.获取子进程 的退出状态 当父进程要获取子进程的退出状态时&#xff0c;子进程里需要使用exit函数&#xff08;exit&#xff08;退出状态值&#xff09;退出…

10:【stm32】USART与串口通信一:USART(上)

USART&#xff08;上&#xff09; 1、串口通信1.1、简介1.2、数据帧1.2.1、简介1.2.2、校验规则1.2.3、停止位的长度 1.3、异步通信的波特率1.3.1、同步通信1.3.2、异步通信1.3.3、硬件流控 2、USART2.1、简介2.2、工作的原理2.3、相关寄存器 3、标准库编程3.1、编程接口USART_…

day16-测试自动化之selenium的PO模式

一、PO模式介绍 PO&#xff08;Page Object&#xff09;模式是一种在自动化测试中常用的设计模式&#xff0c;将页面的每个元素封装成一个对象&#xff0c;通过操作对象来进行页面的交互。 一般分为六个版本&#xff0c;现在大部分企业都用的V4版本&#xff0c;三层结构…

redis面试(十六)公平锁释放和排队加锁

锁释放 RedissonFairLock.unlockInnerAsync()方法 这和加锁的逻辑没有太大区别 也就是说在客户端A他释放锁的时候&#xff0c;也会走while true的脚本逻辑&#xff0c;看一下有序集合中的元素的timeout时间如果小于了当前时间&#xff0c;就认为他的那个排队就过期了&#xf…

Spring自动注册-<bean>标签和属性解析

xml文件中最常见也最核心的就是<bean>,<Import>,<beans>,<alias>标签,关于它们的解析主要是BeanDefinitionParserDelegate类中.<bean>标签的解析最为复杂和重要. <bean>标签 processBeanDefinition(ele, delegate)方法中,主要是是对…

数据库管理-Redis

数据库管理-Redis 一、关系型数据库和非关系型数据库1、关系型数据库&#xff08;Relational Database Management System, RDBMS&#xff09;&#xff1a;2、非关系型数据库&#xff08;NoSQL Database Management System&#xff09;&#xff1a; 二、redis简述 redis是把数据…

苦WPS云盘已久矣

主要因为软件更新后&#xff0c;设置位置都会跑到其他地方 打开wps客户端后&#xff0c;点击电脑底部任务栏的云朵图标。 2. 找到存储位置后&#xff0c;点击“更换位置”。 来自https://www.wps.cn/mlearning/question/detail/id/333165.html

Java | Leetcode Java题解之第328题奇偶链表

题目&#xff1a; 题解&#xff1a; class Solution {public ListNode oddEvenList(ListNode head) {if (head null) {return head;}ListNode evenHead head.next;ListNode odd head, even evenHead;while (even ! null && even.next ! null) {odd.next even.nex…

编程学习笔记秘籍:开启高效学习之旅

引言&#xff1a; “计算机科学教育不能使人成为程序员&#xff0c;就像学画笔和颜料不能使人成为画家一样。”——埃里克雷蒙德。在当今数字化的时代&#xff0c;编程如同一把神奇的钥匙&#xff0c;能够打开无数机遇的大门。然而&#xff0c;编程知识的海洋广阔无垠&#xff…

正也科技:医药营销管理数字化建设的重要性及其迭代方向

第三届MAH合作与创新大会暨浙江省医药产业博览会于上周在杭州圆满结束。会议汇集了众多医药领域的专家、行业领袖和企业家&#xff0c;共同探讨医药行业的转型之路与实战经验。在中国医药新趋势分论坛&#xff0c;与会人员重点讨论了当前中国医药产业在新环境下所面临的挑战、变…

文心快码 Baidu Comate 前端工程师观点分享:行业现状(二)

本系列视频来自百度工程效能部的前端研发经理杨经纬&#xff0c;她在由开源中国主办的“AI编程革新研发效能”OSC源创会杭州站105期线下沙龙活动上&#xff0c;从一款文心快码&#xff08;Baidu Comate&#xff09;前端工程师的角度&#xff0c;分享了关于智能研发工具本身的研…

Hackademic.RTB1靶机复现

查看靶机的MAC地址 使用nmap进行扫描 使用dirsearch进行目录扫描 网站登录 点击紫色字体 进一步进行目录扫描 进行拼接 拼接wp-content 拼接wp-includes 点击Got root 测试发现不存在SQL注入 点击posted in Uncategorized 测试发现存在SQL注入 测试数据库 python sqlmap.py…

Linux-Shell三剑客grep,awk,sed-08

awk、grep、sed是linux操作文本的三大利器&#xff0c;合称文本三剑客&#xff0c;也是必须掌握的linux命令之一。三者的功能都是处理文本&#xff0c;但侧重点各不相同&#xff0c;其中属awk功能最强大&#xff0c;但也最复杂。grep更适合单纯的查找或匹配文本&#xff0c;sed…

UDP通信如何测试使用

用户数据报协议(User Datagram Protocol,UDP)是一种无连接的传输层通信协议,用于互联网应用程序。与TCP(传输控制协议)不同,UDP提供了较少的服务并且不保证数据的可靠传输,但它以更少的系统资源消耗和更低的延迟作为交换,这使得UDP非常适合那些对速度要求高而对数据丢…

【LLM之RAG】GraphRAG论文阅读笔记

研究背景 本文探讨了大型语言模型&#xff08;LLM&#xff09;如何通过从外部知识源检索相关信息来回答关于私有或之前未见过的文档集合的问题。特别指出&#xff0c;传统的检索增强生成&#xff08;RAG&#xff09;系统在处理全局问题时存在局限性&#xff0c;例如问整个文本…

四种应用层协议——MQTT、CoAP、WebSockets和HTTP——在工业物联网监控系统中的性能比较

目录 摘要(Abstract) 实验设置 实验结果 节选自《A Comparative Analysis of Application Layer Protocols within an Industrial Internet of Things Monitoring System》&#xff0c;作者是 Jurgen Aquilina、Peter Albert Xuereb、Emmanuel Francalanza、Jasmine Mallia …