CodeGemma初探

news2024/11/19 22:42:57

什么是 CodeGemma

CodeGemma是一系列强大而轻量级的模型的集合,可以执行各种编码任务,包括填充中间代码补全、代码生成、自然语言理解、数学推理和指令跟随。

版本:

  • instruct:7B, 这个版本专门针对自然语言到代码聊天和指令跟随进行了调整。它的目标是能够理解自然语言输入,并根据指令生成相应的代码。

  • code:7B,这个版本是一个预训练的模型,专门用于代码补全和根据代码前缀和/或后缀生成代码。它的目标是提供更好的代码自动补全和生成功能。

  • 2b:2B, 这个版本是一个最新的预训练模型,提供了最多两倍更快的代码自动补全功能。它的目标是提高代码补全的速度和效率。

优势:

  • 智能代码补全和生成:无论你是在本地工作还是使用 Google Cloud 资源,都可以完成代码行、函数,甚至生成整个代码块。这意味着 CodeGemma 可以帮助你更快地编写代码,提高生产效率。

  • 增强的准确性:CodeGemma 模型是基于主要来源于网络文档、数学和代码的 5000 亿令牌的数据进行训练的。因此,生成的代码不仅在语法上更加正确,而且在语义上更有意义,从而减少错误和调试时间。

  • 多语言能力:CodeGemma 支持多种编程语言,包括 Python、JavaScript、Java、Kotlin、C++、C#、Rust、Go 等,这使得它适用于不同的项目和团队。

  • 简化的工作流程:将 CodeGemma 模型集成到你的开发环境中,可以帮助你减少样板代码的编写,更快地专注于重要的和不同的代码编写,从而提高工作效率。

1. 安装

测试机环境:MacBook Air M1 16G
在使用CodeGemma之前,我们需要先安装Ollama,Ollama可以运行本地大语言模型,例如:Llama3、Gemma、qwen:7B等。

1.1 安装Ollama

Ollama官网:https://ollama.com/
进入官网后根据自己的操作系统,一顿无脑下载安装即可

请添加图片描述

1.2 安装

安装完成之后进入命令行工具,输入安装CodeGemma的命令,这里为了体验完整的功能,并且能与它进行自然语言交互,安装默认的 instruct 版本

ollama run codegemma

当看到如下界面则表示安装已完成
请添加图片描述

2. 使用

这里我们直接在命令行测试

2.1 PHP基础路由

CodeGemma支持多种编程语言,这里我们以PHP为例,尝试生成一个简单的路由

请添加图片描述
结果还是不错,结构很清晰,代码逻辑也是正确的,并且附有代码说明和注释。对中文的理解和输出也是到位的。

同样的提示词,我们再让ChatGPT 3.5 来帮我们生成一个路由,对比下:
请添加图片描述
可以看出CodeGemma使用类的方式,而ChatGPT使用的是纯函数的方式。都完成得不错。

2.2 Vue3基础组件

提示词:请使用vue3生成一个带prop emit的组件

CodeGemma生成结果:

以下是一个使用 Vue3 生成带 prop emit 的组件的示例:

<template>
  <div>
    <input v-model="inputValue" @input="emitInput">
    <button @click="emitButton">按钮</button>
  </div>
</template>

<script>
export default {
  props: {
    initialValue: String,
  },
  data() {
    return {
      inputValue: this.initialValue,
    };
  },
  methods: {
    emitInput() {
      this.$emit('input', this.inputValue);
    },
    emitButton() {
      this.$emit('button-click', this.inputValue);
    },
  },
};
</script>

说明:

  • 该组件有两个 prop:initialValue 用于初始化输入框的值,emitInput 用于触发自定义事件。
  • 组件使用 v-model 指令绑定输入框的值,并使用 @input 事件监听器监听输入框的变化。
  • 当输入框的值发生变化时,emitInput 方法会触发自定义事件 input,并将新的值作为参数传递。
  • 组件使用 @click 事件监听器监听按钮的点击事件,并使用 emitButton 方法触发自定义事件 button-click,并将当前输入框的值作为参数传递。

使用该组件:

<template>
  <my-component v-model:input-value="message" @input="handleInput" 
@button-click="handleButtonClick"></my-component>
</template>

<script>
import MyComponent from './MyComponent.vue';

export default {
  components: {
    MyComponent,
  },
  data() {
    return {
      message: '',
    };
  },
  methods: {
    handleInput(value) {
      this.message = value;
    },
    handleButtonClick(value) {
      console.log('按钮被点击,当前输入框的值为:', value);
    },
  },
};
</script>

说明:

  • 该示例展示了如何使用 v-model 指令绑定输入框的值,并使用自定义事件监听器监听输入框的变化和按钮的点击事件。
  • handleInput 方法会更新 message 数据,并将新的值传递给 MyComponent 组件。
  • handleButtonClick 方法会打印出当前输入框的值。

希望这能够帮到您!

ChatGPT 3.5 生成结果:

<template>
  <div>
    <h1>{{ title }}</h1>
    <button @click="increment">{{ buttonText }}</button>
  </div>
</template>

<script>
import { defineComponent } from 'vue';

export default defineComponent({
  props: {
    title: {
      type: String,
      required: true
    },
    initialCount: {
      type: Number,
      default: 0
    },
    buttonText: {
      type: String,
      default: 'Click me'
    }
  },
  emits: ['incremented'],
  data() {
    return {
      count: this.initialCount
    };
  },
  methods: {
    increment() {
      this.count++;
      this.$emit('incremented', this.count);
    }
  }
});
</script>

在这个示例中,我们定义了一个名为 Counter 的组件。它接受三个 props:title、initialCount 和 buttonText。title 是一个必需的字符串,initialCount 是一个可选的数字,默认值为 0,buttonText 是一个可选的字符串,默认值为 “Click me”。

在模板中,我们展示了一个标题和一个按钮,点击按钮会触发 increment 方法。在 increment 方法中,我们递增了 count 属性,并使用 $emit 方法触发了名为 incremented 的自定义事件,并传递了 count 值。

你可以在父组件中使用该组件,并监听 incremented 事件来获取递增后的值。例如:

<template>
  <div>
    <counter title="My Counter" :initial-count="5" @incremented="handleIncrement"></counter>
  </div>
</template>

<script>
import { defineComponent } from 'vue';

export default defineComponent({
  methods: {
    handleIncrement(value) {
      console.log('Counter incremented:', value);
    }
  }
});
</script>

在父组件中,我们使用 组件,并监听了 incremented 事件。当该事件触发时,我们调用了 handleIncrement 方法,并打印出递增后的值。

小结

从这两个示例可以看出,CodeGemma生成的代码还是Vue2的风格,而ChatGPT生成的代码是Vue3的,所以对于Vue3的组件,ChatGPT生成的代码可能更适合。

3. 性能

3.1 响应时间

尝试多次测试,CodeGemma平均响应时间在5S左右

3.2 资源占用

CPU运行前:
请添加图片描述
CPU运行后:
请添加图片描述
内存运行前:
请添加图片描述
内存运行后:
请添加图片描述

4. 总结

总体来说,CodeGemma还是比较好用,支持多语言准确性较高,而且它还包括一个code版本,可以快速接入IDE,进行生成代码和代码补全。期待它能不断优化,提供更优质的服务。

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

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

相关文章

文件上传漏洞(upload-labs)

目录 一、文件上传漏洞 1.什么是文件上传漏洞 常见的WebShell 2.文件上传产生漏洞的原因 二、文件上传绕过 &#xff08;一&#xff09;客服端绕过-JS验证 1.前端验证 upload-labs第一关 &#xff08;二&#xff09;绕过黑名单验证 黑名单验证 1.特殊解析后缀 upl…

项目十:学会python爬虫数据保存(小白圆满级)

前言 上篇我们学会的文本文件、csv文件和excel文件的相关基础知识和操作&#xff0c;这一次我们再来了解一下四个文件操作方式 存储方法 HTML文件 将数据保存为HTML格式&#xff0c;可以直接在浏览器中查看。 使用字符串拼接将数据保存为HTML格式。 代码案例 # 创建数据…

【树莓派】如何用电脑连接树莓派的远程桌面,灰屏解决

要使用VNC桌面连接到树莓派&#xff0c;你需要确保已经安装并启动了VNC服务器。以下是连接到树莓派的步骤&#xff1a; 在树莓派上启动VNC服务器&#xff1a; 打开终端或SSH连接到你的树莓派。输入以下命令以安装RealVNC的VNC服务器&#xff1a;sudo apt update sudo apt insta…

操作steam搬砖有哪些风险?你有中招吗?揭秘有没有规避技巧?

一、关于steam账号的地区问题&#xff1a; steam账号地区不要频繁的去更换&#xff0c;这样很容易导致让账号红信不能操作使用。 二、关于steam账号的充值问题&#xff1a; 一定要充值正规的礼品卡图&#xff0c;否则遇到黑卡分分钟让你的账号红锁&#xff0c;从而造成账号里…

Gemini 1.5 Pro API崭露头角,长提示下性能卓越,逼近榜首ChatGPT4

Gemini 1.5 Pro API-0409-preview 在排行榜上成功攀升至第二位&#xff0c;与榜首的 GPT-4-Turbo 齐头并进&#xff0c;仅一步之遥。相较于第三名的 GPT4-0125-preview&#xff0c;Gemini 展现出了显著的优势。 在处理更长的提示时&#xff0c;Gemini 的性能尤为出色&#xff…

【源码】完美运营版商城+虚拟商品全功能商城+全能商城小程序+智慧商城系统+全品类百货商城

完美运营版商城/拼团/团购/秒杀/积分/砍价/实物商品/虚拟商品等全功能商城 干干净净 没有一丝多余收据 还没过手其他站 还没乱七八走的广告和后门 后台可以自由拖曳修改前端UI页面 还支持虚拟商品自动发货等功能 挺不错的一套源码 前端UNIAPP 后端PHP 一键部署版本 CD&…

MySQL尾部空格处理与哪些设置有关? 字符集PAD SPACE与NO PAD属性的区别、MySQL字段尾部有空格为什么也能查询出来?

文章目录 一、问题背景二、字符集PAD_ATTRIBUTE属性&#xff08;补齐属性&#xff09;2.2、PAD SPACE与NO PAD的具体意义 三、CHAR类型尾部空格的处理四、其他问题4.1、在PAD SPACE属性时如何实现精准查询 五、总结 以下内容基于MySQL8.0进行讲解 一、问题背景 一次查询中发现…

MMSeg分析Flops和Params

Flops计算量&#xff0c;params参数量 在文件中 tools/analysis_tools/get_flops.py利用以下命令实现 python tools/analysis_tools/get_flops.py configs/xxx/xxx-Net.py后面可跟参数shape控制输入图片尺寸&#xff0c;例如 python tools/analysis_tools/get_flops.py conf…

每天不知道吃什么?食谱生成AI工具,帮你实现食谱自由

原文&#xff1a;每天不知道吃什么&#xff1f;食谱生成AI工具&#xff0c;帮你实现食谱自由 - 知乎 每天吃什么或许是世纪难题&#xff0c;要想吃的美味、吃的营养更是难上加难面对繁琐的食材怎么做才能省心省力更美味呢&#xff1f;不妨问问AI看能不能辅助我们做出别样美味。…

【Matlab函数分析】对二维或三维散点数据插值函数scatteredInterpolant

&#x1f517; 运行环境&#xff1a;Matlab &#x1f6a9; 撰写作者&#xff1a;左手の明天 &#x1f947; 精选专栏&#xff1a;《python》 &#x1f525; 推荐专栏&#xff1a;《算法研究》 #### 防伪水印——左手の明天 #### &#x1f497; 大家好&#x1f917;&#x1f91…

6.MMD ray渲染 材质的添加及打光方法

材质 前置准备 先准备好模型和场景 将ray控制器拖入进去 添加完默认的材质以后的效果 打开插入材质页面 打开MaterialMap栏 将流萤的模型展开 自发光 现在给领带添加一个自发光效果 在自发光Emissive里&#xff0c;打开x1&#xff0c;选择albedo&#xff0c;白光 现在…

为什么要分库分表?(设计高并发系统的时候,数据库层面该如何设计?)

目录 1.分表 2.分库 说白了&#xff0c;分库分表是两回事儿&#xff0c;大家可别搞混了&#xff0c;可能是光分库不分表&#xff0c;也可能是光分表不分库&#xff0c;都有可能。 我先给大家抛出来一个场景。 假如我们现在是一个小创业公司(或者是一个 BAT …

用Python和Pygame实现简单贪吃蛇游戏

1.pip安装pygame pygam插件安装 pip install 插件名字 # 安装 pip uninstall 插件名字 # 卸载 pip install 插件名字 -i 指定下载的镜像网址 pip show 插件名字 # 查看插件名字 pip install pygame -i https://pypi.tuna.tsinghua.edu.cn/simple pip show p…

猫头虎分享已解决Error || 已解决error: subprocess-exited-with-error

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

零基础HTML教程(26)--表单元素标注

文章目录 1. 引子2. 使用标注3. 元素的id与name4. 更好的写法5. 小结 1. 引子 我们看一个表单&#xff1a; <form>姓名&#xff1a;<input type"text"><br>手机号:<input type"text"><br>年龄:<input type"text&qu…

(一)Amira入门实例

1.打开Amira安装目录下的数据Foam.am图片&#xff0c;打开之后选择“um”选项。 2. 添加一个2D和3D显示组件&#xff0c;即Ortho Slice和Volume Rendering&#xff0c;分别为2D显示和3D显示&#xff08;模块左侧绿点控制是否显示&#xff09;&#xff1a; 颜色反转之后&#xf…

web案例

一、结合抽奖案例完成随机点名程序&#xff0c;要求如下: 1.点击点名按钮&#xff0c;名字界面随机显示&#xff0c;按钮文字由点名变为停止 2.再次点击点名按钮&#xff0c;显示当前被点名学生姓名&#xff0c;按钮文字由停止变为点名 3.样式请参考css及html自由发挥完成。 二…

【学习】​CSMM和CMMI的关系你了解吗

CMMI和CSMM都是评估和提升软件组织能力成熟度的模型&#xff0c;但它们在起源、应用范围、模型结构和实施目的等方面存在一些区别。在当今竞争激烈的软件市场中&#xff0c;提升软件能力成为了多数组织追求成功的关键因素。而选择适合的体系标准能够助力企业发展得更加迅速。作…

什么是拉动经济增长的“三驾马车”

从支出法核算角度看&#xff0c;经济增长是投资、消费、净出口这三种需求之和&#xff0c;因此经济学上常把最终消费支出、资本形成总额、货物和服务净出口这三者形象地比喻为拉动经济增长的“三驾马车”。 一、指标含义 最终消费支出反映消费需求&#xff0c;可以分为居民消…

Day22 SSH远程管理服务

sshd服务&#xff0c;系统自带&#xff0c;默认开机自启运行 云/物理服务器的安全组和防火墙默认放行该端口 软件包&#xff1a;openssh-server&#xff08;服务端&#xff09;&#xff1b;openssh-client&#xff08;客户端&#xff09;&#xff1b; 格式&#xff1a;ssh I…