如今,许多公司都在使用人工智能编程助手来自动处理产品中的模板代码,从而让开发者能够处理更复杂的开发问题。最近, Devin(世界上第一个完全自主的人工智能软件工程师)问世。它可以处理各种编程任务,从根据提示生成代码行,到调试、部署应用程序,甚至学习新技术以解决新挑战。在闭源产品领域,有其他的人工智能助手还包括 Github 的 CoPilot Chat。但如果我们想使用开源的替代品呢?

本文包含了一个实践教程,介绍了如何实现一个由大型语言模型(LLM)支持的代码助手,使用的是开源模型CodeLlama,并在 Paperspace Gradient 上执行。这个模型可以在 HuggingFace 上获取。

你可以向这个代码助手提问,它会用自然语言回答你的问题,并提供代码片段。

注:在这里先说明一下,Paperspace 是 DigitalOcean 云服务旗下的 GPU 云服务平台,提供了 H100、A100等一系列 GPU 资源,以及AI创业者从想法验证到模型部署所需的多种功能。如需了解,可与 DigitalOcean 中国独家战略合作伙伴卓普云AI Droplet 的技术售前咨询

什么是 Code Llama?

Code Llama 于 2023 年 8 月由 Meta 发布。该模型建立在 Llama 2 的基础上,并专门针对生成代码的目的进行了微调。最初,该模型是通过在代码特定数据集上训练 Llama 2 而开发的。它可免费用于研究和商业用途。

通过生成代码和对代码的讨论,可在模型响应时提供包含代码或自然语言的提示。Code Llama 对于开发者来说是一个非常有用的工具,可以提高他们的编程效率。它支持当前使用的大多数流行语言,包括 Python、C++、Java、PHP、Typescript(Javascript)、C# 和 Bash。

Code Llama 7 B 的其他替代品

本文使用 Code LLaMa 7 B 制作了一个构建代码助手的演示:

· Code Llama(以及更大的版本 13B、34B、70B)- 建议用于代码补全和代码摘要

· Code Llama-Python(7B、13B、34B、70B)–专门用于生成和理解 Python 代码。它对使用 Python 和 PyTorch 的开发者特别有用。

· Code Llama-Instruct(7B、13B、34B、70B)- 这是使用 Code Llama 生成代码的首选,因为它侧重于安全和信息丰富的响应。

注:在Paperspace Gradient试用这些版本的Code Llama

Demo

首先,在 Paperspace根据项目需要选择 GPU 和模板。选择自动关机时间。在本演示中,您不需要任何 HuggingFace API 密钥。

安装依赖项

pip install transformers
from transformers import pipeline

创建 codegen_pipeline

# Load the codegen model
codegen_pipeline = pipeline("text-generation", model="codellama/CodeLlama-7b-hf")

定义提示

# Define your prompt
prompt = """
# Write Python code to implement Random Forest algorithm with Scikit-Learn library
# Provide clear comments for each code section, explaining its purpose and functionality.
# Explain the code with proper explanation and its purpose
"""

此提示要求生成使用 Scikit-Learn 库实现随机森林算法的 Python 代码,并对代码的每个部分进行注释解释。

生成代码

# Generate code based on the prompt using beam search
generated_code = codegen_pipeline(prompt, max_length=400, temperature=0.7, truncation=True, num_beams=5)

参数如下

  • max_length=400——将生成文本的最大长度限制为 400 个字节。
  • temperature=0.7——控制输出的随机性。温度越低,输出的随机性越小,使模型更有信心,但生成的结果也更保守。
  • truncation=True——这将确保如果模型的输出超过 max_length,它将被截断以符合此限制。
  • num_beams=5——在生成过程中使用 5 个 Beam search)。Beam search是一种生成文本的策略,它在每一步都会跟踪被认为最有可能生成文本的固定数量的序列,这样可以获得更高质量的输出。
# Print the generated code
for completion in generated_code:
   print(completion['generated_text'])

大家还可以自己试试:用不同的编程语言执行不同的代码生成模型,并比较它们的性能。可尝试的模型有 Tabby、Codey、Mixtral 8X7 B、CodeGen、Code、T5 和 CodeGee X、StarCoder。

编程助理还可追加增强的功能

  • 错误检测和预防——在生成过程中识别潜在错误和漏洞的代码分析功能可显著提高代码质量。可在生成过程中进行实时分析,以识别语法错误、逻辑不一致和潜在的安全漏洞。
  • 代码安全——代码助手可以扫描代码,找出通常会导致 SQL 注入、缓冲区溢出和跨站脚本 (XSS) 等安全漏洞的代码模式。通过突出显示这些潜在问题,代码助手可以促使开发人员在部署前审查并纠正代码。

代码助理统计

据 Gartner 预测,到 2028 年,75% 的企业软件工程师将把人工智能编程助手纳入他们的工作流程,这与 2023 年初不到 10% 的比例相比是一个重大飞跃。

57% 的商业和技术专业人士承认他们的组织已经开始采用人工智能编码助手。

据 bain 公司称,75% 的采用者对他们正在使用的人工智能编程助手感到满意。

一些编程助手相关产品

  • Github CoPilot & CoPilot Chat ——Github Copilot 不断改进,是开发者社区中最著名的代码助手。最新版本的 GitHub Copilot 拥有多种功能,包括人工智能聊天机器人、代码生成、自动完成(autocomplete)、nline chatbox、CLI 自动完成以及其他基于 GitHub 的功能,可帮助搜索和理解代码。
  • Codeium——Codeium 提供免费的解决方案,通过智能自动完成、人工智能聊天机器人、上下文感知代码生成以及更多开发者功能来增强开发体验。它与 GitHub copilot 相似,具有安全性和更快的响应速度。
  • Blackbox AI——Blackbox AI 是一款编程助手,可帮助开发人员编写更好的代码。它可为代码补全、文档和调试提供实时建议。
  • Studio Bot——Studio Bot 基于大型语言模型(Codey,基于 PaLM-2),与 Bard 非常相似。这使得它能够提供广泛的功能,包括代码生成、调试、算法改进、代码补全和 API 更新。

小结

人工智能驱动的编码助手正迅速成为必不可少的工具。它们能自动完成繁琐的任务并生成代码,从而将人工智能开发人员解放出来,从事软件开发的创造性工作。

本文探讨了令人兴奋的代码助手世界,展示了 Meta 的 Code Llama 的强大功能。我们使用 Code Llama 制作了一个基本演示,为随机森林算法生成 Python 代码!

另外,我们此前还分享过《如何使用 Paperspace 上手 LLama 3 模型》,以及《部署、微调 MosaicML 模型的实践》,《AI 创业者如何选择 GPU 服务》如果大家感兴趣,可以点击文章标题跳转阅读。

最后,DigitalOcean 旗下的 Paperspace 可提供包括 H100、A100、A6000、A5000 等多种型号的 GPU。Paperspace 的定价是以秒为单位的,非常适合初创企业。如需要详细咨询更多业务与解决方案,欢迎与DigitalOcean 中国区独家战略合作伙伴卓普云联系

点击这里阅读英文官网原文