CodeGen

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

开源 🏷️完全免费 🔧 仅开源项目,无在线服务,需自行部署 开源模型 🍴 复刻 418 🐛 待处理 50 👀 关注 79
GitHub ↗
GitHub 星标 ★ 5180
维护状态 低维护
是否开源 开源
定价模式 🏷️完全免费 开源模型,Apache-2.0许可,可免费使用和部署。

项目预览

CodeGen 项目界面预览图
图片来源:GitHub 官方仓库名片

项目数据

分类开源模型
开发团队salesforce
定价模式🏷️完全免费
价格说明开源模型,Apache-2.0许可,可免费使用和部署。
访问状态🔧 仅开源项目,无在线服务,需自行部署
是否开源是
开源协议Apache-2.0
主要语言Python
技术栈/模型codex,generativemodel,languagemodel,llm,programsynthesis,tpu-acceleration
GitHub 星标★ 5180
上线时间2022-03-28 00:00:00
代码更新2026-06-02
仓库体积1.4 MB
本站数据更新2026-11-09
维护状态低维护
收录时间2026-08-09
浏览次数4

项目介绍

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

Star 增长趋势

本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整

数据来源:GitHub API 逐日快照 · 收录于 2026-08-09 · 当前星标 ★ 5180

技术标签

使用教程

⚠ 本教程由 AI 依据该项目 README 整理;原始文档不完整,部分步骤为通用流程推断,实际安装请以项目官方文档为准。

难度:入门 约 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"\n\n^#", "^'''", "\n\n\n"]))
  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"\n\n^#", "^'''", "\n\n\n"]))
  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"\n\n^#", "^'''", "\n\n\n"]

如何确认成功

终端成功打印出根据“# 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

上一篇:mlx-vlm

下一篇:Huatuo-Llama-Med-Chinese

同类项目推荐

MiniMax-01 开源

线性注意力大模型,超长上下文轻松跑

The official repo of MiniMax-Text-01 and MiniMax-VL-01, large-language-model & visio···

★ 3470 2026-08-09
Awesome-LLM-Survey 开源

一网打尽LLM综述资源,快速入门不迷路

An Awesome Collection for LLM Survey

★ 446 2026-08-09
StableDiffusion-PyTorch 开源

从零手写 Stable Diffusion,彻底搞懂扩散模型原理

This repo implements a Stable Diffusion model in PyTorch with all the essential comp···

★ 256 2026-08-09
Awesome-Ollama 开源

找 Ollama 图形界面和工具,看这一份清单就够了

An opinionated list of awesome Ollama web and desktop uis, frameworks, libraries, so···

★ 495 2026-10-15
LongLLaDA 开源

让扩散模型也能读懂长文本,解锁超长上下文

Methods and code for extending the context length of diffusion language models

★ 56 2026-08-09
Nitro-1 开源

一步生成高清图,让扩散模型快如闪电

This repo provides a working re-implementation of Latent Adversarial Diffusion Disti···

★ 126 2026-08-09
spark-nlp 开源

在 Spark 上跑 NLP,海量文本秒级处理,生产级模型开箱即用

State of the Art Natural Language Processing

★ 4162 2026-08-09
mlx-lm 开源

在 Mac 上本地跑大模型,不买显卡也能流畅推理微调

Run LLMs with MLX

★ 7603 2026-09-16
awesome-generative-ai 开源

一榜在手,尽览生成式AI前沿项目与工具

A curated list of modern Generative Artificial Intelligence projects and services

★ 12818 2026-08-09