AI在开发中的应用及优势

释放双眼,带上耳机,听听看~!
本文介绍了如何利用AI提高开发效率,包括使用OpenAI API和GitLab连接实现自动化审查,以及通过ChatGPT选择API并解释开发进度加快的方法。

缘起

希望通过AI来提高开发效率,我们想到可以利用AI来帮助开发人员完成一些重复性和耗时的工作,比如使用AI来进行代码审查。AI 可以以最快的时间扫描代码,发现可能存在的漏洞和缺陷,使开发人员能够及时发现和修复这些问题,从而提升开发效率。

基本思路:

  1. 使用API可以将Open AI和GitLab连接起来,以实现自动化审查,节省时间提高效率。
  2. 在合并请求时,通过传入merge request的diff信息,ChatGPT可以给出详尽的review结果,让开发者了解需要修改哪些地方。
  3. 我在开发过程中使用了ChatGpt,它能够帮助开发者快速选择哪些API,并且一步步详细解释,让开发进度加快。

实战

1. 如何调用openAi Api?

  1. 首先,需要前往官网注册,登录后生成API Key(调用api是按返回的token的数量收费的)。

AI在开发中的应用及优势

  1. 调用Completion接口,Competions接口可以根据用户输入的提示内容(prompt),返回一个或多个预测完成的内容。它主要用于自然语言处理,可以根据用户的要求设置参数,比如调整输出结果的长度、精度等,来得到精准的结果。

    安装openai这个包

    npm i openai
    

    调用code demo:

    import { Configuration, OpenAIApi } from 'openai';
    // 输入自己的apiKey
    const configuration = new Configuration({
      apiKey: 'xxxxxxxx',
    });
    
    const openai = new OpenAIApi(configuration);
    // 接口调用
    const response = await openai.ChatCompletion.create({
        model: 'gpt-3.5-turbo',
        'messages': [
        {'role': 'code Reviewer', 'content': `{prompt}`}, // 这里输入下文拼好的prompt
      ]
      });
    

2. 如何获得merge request的更改?

  1. 使用GitLab的Change接口,需要输入项目的projectIdmege requestID。它会返回一个Patch,可以显示所做的更改。

    const gitlabAPI = `http://gitlab.com/api/v4/projects/${projectId}/merge_requests/${requestId}/changes`;
    const response = await fetch(gitlabAPI,{
      method: 'Get',
      headers: {
        'Content-Type': 'application/json',
        'Private-Token': 'XXXXXXXX' // 可以在gitlab的后台生成Token
      }
    })
    

    返回结果, patch在diff字段中:

    [
      {
        "old_path": "file1.txt",
        "new_path": "file1.txt",
        "a_mode": "100644",
        "b_mode": "100644",
        "diff": "--- a/file1.txtn+++ b/file1.txtn@@ -1,3 +1,3 @@n line1n-line2n+line2 updatedn line3n",
        "new_file": false,
        "renamed_file": false,
        "deleted_file": false
      },
      {
        "old_path": "file2.txt",
        "new_path": "file2.txt",
        "a_mode": "100644",
        "b_mode": "100644",
        "diff": "--- a/file2.txtn+++ b/file2.txtn@@ -1,3 +1,3 @@n line1n-line2n+line2 updatedn line3n",
        "new_file": false,
        "renamed_file": false,
        "deleted_file": false
      }
    ]
    
  2. 使用diff2html库来渲染patch结构(这也是chatgpt告诉我的):

    Diff2Html.html(diffStr,{
            drawFileList: false,
            highlight: true,
          })
    
    

    显示效果如下

AI在开发中的应用及优势

3. 如何导引ChatGpt做Code Review

  1. 添加Prompt,其中引用到gitlab的改动,然后将Prompt其发送给OpenAI,其中Prompt的内容参考了GitHub Review这个插件的内容。

    let prompt = `Act as a code reviewer of a GitLab merge request, providing feedback on the code changes below.
          You are provided with the merge request changes in a diff format.
          The diff which is get from the GitLab API: api/v4/projects/projectId/merge_requests/requestId/changes.
          nn
          Diff of the merge request to review:
          n
          ${diffStr}
          nn
          As a code reviewer, your task is:
          - Review the code changes (diffs) in the patch and provide feedback.
          - If there are any bugs, highlight them. 
          - Does the code do what it says in the commit messages?
          - Do not highlight minor issues and nitpicks.
          - Use bullet points if you have multiple comments.
          - If no suggestions are provided, please give good feedback.
          - please use chinese to give feedback.`
    

    这个promp的翻译如下:

    作为GitLab合并请求的代码审查员,提供下面代码更改的反馈。
    您可以从GitLab API获得合并请求更改的diff格式:api/v4/projects/projectId/merge_requests/requestId/changes。
    
    要审查的合并请求的diff:
    ${diffStr}
    
    作为代码审查员,您的任务是:
    
    - 审查补丁中的代码更改(diff)并提供反馈。
    - 如果有任何错误,请突出显示它们。
    - 代码是否符合提交消息中的内容?
    - 不要突出显示小问题和细节。
    - 如果有多个评论,请使用项目符号。
    - 如果没有提供建议,请给出良好的反馈。
    - 请使用中文给出反馈。
    
    
    • 使用英文而不是中文是因为英文可以速度更快。
    • 可以学习下这个prompt的书写方式,把task一条一条放到最下面,这样可以统一输出需求,非常好用。
  2. 发送之后,OpenAI的接口将会返回Review操作之后的结果,这样就可以看到review的结果。

AI在开发中的应用及优势

总结

通过上述步骤,可以通过OpenAI Api调用、GitLab Change接口和diff2html库来实现ChatGpt Code Review,Prompt需要详细说明Reviewer的任务,然后通过OpenAI Api就可以获得审查结果。

代码会上传,请注意在公司的项目使用中符合公司的规定

本文正在参加 人工智能创作者扶持计划

本网站的内容主要来自互联网上的各种资源,仅供参考和信息分享之用,不代表本网站拥有相关版权或知识产权。如您认为内容侵犯您的权益,请联系我们,我们将尽快采取行动,包括删除或更正。
AI教程

如何与chatGPT进行有效沟通?prompt engineering策略解析

2023-12-23 14:11:14

AI教程

环境搭建 - Python安装和依赖包配置

2023-12-23 14:22:14

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索