CodeGen

自然语言直接生成代码,媲美Codex的开源模型

CodeGen是一系列用于程序合成的开源模型,由Salesforce研究院开发。它基于TPU-v4训练,在自然语言转代码任务上表现优异,性能可与OpenAI Codex竞争。项目核心解决从自然语言描述生成可执行代码的问题,支持多种编程语言,并提供了不同规模的模型版本(如350M、2.7B、6B、16B参数),以适应不同计算资源需求。CodeGen采用了多轮对话式的程序合成方法,能够根据用户反馈迭代改进生成的代码,这一特性使其在复杂编程任务中更具实用性。模型权重和推理代码均在GitHub上开源,方便研究者和开发者直接使用或微调。

开源 free 开源模型
访问官网 ↗ GitHub ↗ 文档 ↗
GitHub 星标 ★ 5179
维护状态 低维护
是否开源 是
定价模式 free

项目数据

分类开源模型
开发团队salesforce
所属国家
官网地址
定价模式free
价格说明开源模型,Apache-2.0许可,可免费使用和部署。
访问状态
是否开源是
开源协议Apache-2.0
主要语言Python
技术栈/模型codex,generativemodel,languagemodel,llm,programsynthesis,tpu-acceleration
GitHub 星标★ 5179
30天Star增速
HF 下载量
上线时间2022-03-28 00:00:00
最近更新2026-09-20 00:00:00
维护状态低维护
中文支持
访问方式
移动端支持
综合评分
收录时间2026-08-09
浏览次数3

使用教程

难度:入门 约 15 分钟 部署方式:模型权重 6 步

⚠ 该项目 README 未提供完整安装说明,以下步骤为通用流程,请以官方文档为准。

环境要求

  • Python 环境(需能 import torch)
  • 已安装 PyTorch 与 transformers 库
  • 可访问 Hugging Face Hub 下载模型权重
  • 按所选模型规模准备足够的内存/显存与磁盘空间

安装与启动步骤

  1. 1确认 Python 环境

    CodeGen 是 Python 项目,先用 python -V 确认本机已装 Python 且命令可用。

    python -V
  2. 2安装依赖库

    README 示例代码导入了 torch 与 transformers,需先安装这两个库;README 未给出固定版本,按需安装即可。

    pip install torch transformers
  3. 3选择模型版本

    README 提供 CodeGen1.0、CodeGen2.0、CodeGen2.5 三个系列,参数规模 350M 到 16B,按自己的算力挑选模型名。

  4. 4运行 CodeGen1 示例

    加载 Salesforce/codegen-2B-mono,把注释当作提示让模型补全代码,首次运行会自动下载权重。

    import torch
    from transformers import AutoTokenizer, AutoModelForCausalLM
    
    tokenizer = AutoTokenizer.from_pretrained("Salesforce/codegen-2B-mono")
    model = AutoModelForCausalLM.from_pretrained("Salesforce/codegen-2B-mono")
    inputs = tokenizer("# this function prints hello world", return_tensors="pt")
    sample = model.generate(**inputs, max_length=128)
    print(tokenizer.decode(sample[0], truncate_before_pattern=[r"
    
    ^#", "^'''", "
    
    
    "]))
  5. 5运行 CodeGen2 示例

    CodeGen2 需要额外传 trust_remote_code=True 和 revision="main",示例使用 Salesforce/codegen2-7B。

    import torch
    from transformers import AutoTokenizer, AutoModelForCausalLM
    
    tokenizer = AutoTokenizer.from_pretrained("Salesforce/codegen2-7B")
    model = AutoModelForCausalLM.from_pretrained("Salesforce/codegen2-7B", trust_remote_code=True, revision="main")
    inputs = tokenizer("# this function prints hello world", return_tensors="pt")
    sample = model.generate(**inputs, max_length=128)
    print(tokenizer.decode(sample[0], truncate_before_pattern=[r"
    
    ^#", "^'''", "
    
    
    "]))
  6. 6运行 CodeGen2.5 示例

    7B 的 CodeGen2.5 即可超过 16B 模型,示例模型名 Salesforce/codegen25-7b-mono,仅解码时不做截断。

    import torch
    from transformers import AutoTokenizer, AutoModelForCausalLM
    
    tokenizer = AutoTokenizer.from_pretrained("Salesforce/codegen25-7b-mono", trust_remote_code=True)
    model = AutoModelForCausalLM.from_pretrained("Salesforce/codegen25-7b-mono")
    inputs = tokenizer("# this function prints hello world", return_tensors="pt")
    sample = model.generate(**inputs, max_length=128)
    print(tokenizer.decode(sample[0]))

关键配置

配置项必填说明示例
模型名称是Hugging Face Hub 上的模型标识,决定参数规模与语言(mono 为 Python)Salesforce/codegen-2B-mono
trust_remote_code否CodeGen2/2.5 示例中需设为 True 才能加载模型自定义代码True
revision否CodeGen2 示例中指定为 main,用于指定加载分支main
max_length否generate 生成序列的最大长度,三个示例均为 128128
truncate_before_pattern否CodeGen1/2 解码时按正则模式截断多余输出,2.5 示例未使用[r" ^#", "^'''", " "]

如何确认成功

终端成功打印出根据“# this function prints hello world”注释生成的代码片段,且无报错,即表示模型加载并推理成功。

常见问题

Q:需要什么硬件才能跑起来?

A:README 未给出显存要求。参数越大占用越高,可先用 350M 或 2B 小模型跑通流程,再按资源情况换更大模型。

Q:加载 codegen2 报错怎么办?

A:CodeGen2 与 CodeGen2.5 需在 from_pretrained 中传 trust_remote_code=True;CodeGen2 还要加 revision="main"。

Q:生成结果后面多出无关内容?

A:CodeGen1/2 示例在 tokenizer.decode 中传入 truncate_before_pattern 截断多余输出,可按需调整该正则列表。

Q:模型权重去哪里下载?

A:README 说明模型托管在 Hugging Face Hub,可在 hub 上搜索 salesforce codegen 找到各版本权重。

注意事项

  • README 只提供 Python + transformers 的调用示例,没有给出 pip 安装清单、版本号或部署脚本,依赖安装为按导入推断。
  • 所有示例首次运行都会从 Hugging Face 下载权重,需保证网络通畅和充足磁盘空间。
  • CodeGen2/2.5 必须开启 trust_remote_code,存在执行远端模型代码的风险,请确认来源可信。
  • 参数规模越大的模型(7B/16B)对显存要求越高,建议先从小模型验证流程。

核心亮点

  • 多轮对话式生成,支持根据反馈迭代修正代码
  • 模型规模从350M到16B多档可选,适配不同硬件
  • 在HumanEval基准上表现接近OpenAI Codex,且完全开源

不足之处

  • 模型训练数据以Python为主,其他语言支持相对有限
  • 文档和示例较少,上手门槛偏高

适用场景

  • 开发者用自然语言描述功能,快速生成代码原型
  • 在代码补全或编程助手中集成,提供智能建议
  • 学术研究:探索程序合成和代码生成技术

替代项目

Codex、CodeT5、InCoder

项目介绍

CodeGen 是开源模型领域的开源项目,由 salesforce 开发,2022 年首次发布。

在全站 13,090 个收录项目中,它的 GitHub 星标数(5,179)位列前 9%,在开源模型分类的 424 个项目里位列前 12%。

项目已超过三个月没有代码更新,维护节奏明显放缓,最近一次代码更新于 2026-09-20。Apache-2.0许可,可免费使用和部署。

它主要面向的使用场景是:开发者用自然语言描述功能,快速生成代码原型。同类可对比的替代方案包括 Codex、CodeT5、InCoder。

上一篇:mlx-vlm

下一篇:Huatuo-Llama-Med-Chinese

同类项目推荐

Machine-Learning 开源

跟着博客笔记,边看边跑机器学习代码

All content related to machine learning from my blog

★ 115 2026-08-09
CoreML-Models 开源

下载即用的苹果端 AI 模型库,免去转换烦恼

Core ML model zoo for iOS/macOS — PyTorch models converted to ready-to-use .mlpacka···

★ 1873 2026-08-10