Qwen3-4B Instruct-2507实战指南:Git Commit Message规范检查与重写

你是不是也遇到过这种情况?项目代码写得漂漂亮亮,功能测试得明明白白,结果一到提交代码的时候,commit message写得像天书一样,自己过两天都看不懂写了啥。

更尴尬的是,团队协作时,队友看着你写的“修复bug”、“更新代码”这样的提交信息,完全不知道你改了哪里,为什么要改。代码审查效率低下,版本回退时更是两眼一抹黑。

今天,我就带你用Qwen3-4B Instruct-2507这个轻量级大模型,打造一个智能的Git Commit Message规范检查与重写工具。它能帮你自动检查提交信息的规范性,还能一键重写成符合团队约定的格式,让每次提交都清晰、规范、有价值。

1. 为什么我们需要规范的Commit Message?

在开始动手之前,我们先聊聊为什么要在commit message上花心思。这可不是形式主义,而是实实在在能提升开发效率的好习惯。

1.1 糟糕的Commit Message有多“坑”?

先看看几个典型的反面教材:

  • “修复bug” - 什么bug?在哪修复的?怎么修复的?
  • “更新” - 更新了什么?为什么要更新?
  • “测试” - 测试了什么?测试结果如何?
  • “啊啊啊终于搞定了” - 情绪很到位,信息量为零

这样的提交信息,时间一长,你自己都记不清当时做了什么。更别说团队协作时,别人完全无法从提交历史中获取有用信息。

1.2 规范Commit Message的四大好处

1. 提升代码可维护性 清晰的提交历史就像代码的“成长日记”,每个功能、每个修复都有迹可循。当需要排查问题时,你可以快速定位到相关的提交。

2. 提高团队协作效率 规范的提交信息让代码审查更高效。审查者不需要逐行阅读代码变更,通过提交信息就能了解改动的意图和范围。

3. 自动化生成变更日志 很多工具(如standard-version、conventional-changelog)可以自动从规范的提交信息中生成CHANGELOG.md,省去手动维护的麻烦。

4. 便于版本管理 遵循语义化版本控制(SemVer)时,规范的提交信息可以帮助自动判断版本号应该如何升级(是修复bug的patch,还是新增功能的minor)。

1.3 常见的Commit Message规范

目前最流行的是Conventional Commits规范,它的基本格式是:

<type>(<scope>): <subject>

<body>

<footer>
  • type:提交类型,如feat(新功能)、fix(修复bug)、docs(文档)、style(格式)、refactor(重构)、test(测试)、chore(构建或辅助工具)
  • scope:影响范围,可选
  • subject:简短描述,不超过50字符
  • body:详细描述,可选
  • footer:不兼容变更或关闭的issue,可选

举个例子,一个好的提交信息应该是这样的:

feat(auth): 添加用户登录功能

- 实现JWT token生成与验证
- 添加登录接口 /api/auth/login
- 添加用户信息获取接口 /api/auth/me

Closes #123

接下来,我们就用Qwen3-4B Instruct-2507来帮我们自动检查和重写提交信息。

2. 环境准备与快速部署

2.1 为什么选择Qwen3-4B Instruct-2507?

在开始之前,你可能想问:为什么选这个模型?市面上大模型那么多,这个有什么特别的?

轻量高效:Qwen3-4B Instruct-2507是阿里通义千问专门为纯文本任务优化的版本。它移除了视觉相关的模块,专注于文本处理,所以推理速度特别快,资源占用也小。对于我们这个commit message处理任务来说,完全够用,而且响应迅速。

开源可商用:模型完全开源,可以自由部署和使用,不用担心版权问题。

对话能力强:作为Instruct版本,它特别擅长理解和执行指令,正好适合我们这种“检查-重写”的任务场景。

2.2 快速部署Qwen3-4B服务

如果你还没有部署Qwen3-4B服务,这里有个快速上手的方法:

# 安装必要的库
pip install transformers torch streamlit

# 创建一个简单的启动脚本 app.py
import streamlit as st
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

# 设置页面标题
st.set_page_config(page_title="Qwen3-4B Commit助手")

# 加载模型和分词器
@st.cache_resource
def load_model():
    model_name = "Qwen/Qwen3-4B-Instruct-2507"
    tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
    model = AutoModelForCausalLM.from_pretrained(
        model_name,
        torch_dtype=torch.float16,
        device_map="auto",
        trust_remote_code=True
    )
    return model, tokenizer

model, tokenizer = load_model()

# 创建聊天界面
st.title("📝 Git Commit Message规范检查器")

# 输入原始的commit message
original_message = st.text_area("请输入你的Git Commit Message:", height=100)

if st.button("检查并重写"):
    if original_message:
        # 构建提示词
        prompt = f"""请检查以下Git Commit Message是否符合Conventional Commits规范,如果不规范,请重写它。

原始提交信息:
{original_message}

请按照以下格式回复:
1. 规范性分析:[分析是否符合规范,指出问题]
2. 建议的重写:[如果不符合,给出重写后的版本]
3. 修改说明:[解释为什么要这样修改]

要求:
- 如果符合规范,直接说明并给出肯定评价
- 如果不符合,重写为规范的格式
- 类型使用:feat, fix, docs, style, refactor, test, chore
- 主题不超过50个字符
- 正文部分详细说明改动内容
"""
        
        # 编码输入
        inputs = tokenizer.apply_chat_template(
            [{"role": "user", "content": prompt}],
            add_generation_prompt=True,
            return_tensors="pt"
        ).to(model.device)
        
        # 生成回复
        with st.spinner("正在分析..."):
            outputs = model.generate(
                inputs,
                max_new_tokens=500,
                temperature=0.3,
                do_sample=True
            )
            
            response = tokenizer.decode(outputs[0][inputs.shape[1]:], skip_special_tokens=True)
            
        # 显示结果
        st.subheader("分析结果:")
        st.write(response)
    else:
        st.warning("请输入提交信息")

运行这个脚本,你就有了一个本地的Commit Message检查工具:

streamlit run app.py

打开浏览器访问 http://localhost:8501,就能看到界面了。

3. 构建智能Commit Message检查器

现在我们来构建一个更完整的工具,它不仅能检查单个提交信息,还能批量处理,并且集成到Git工作流中。

3.1 核心检查逻辑实现

首先,我们创建一个专门的检查模块:

# commit_checker.py
import re
from typing import Dict, List, Tuple, Optional

class CommitMessageChecker:
    """Git Commit Message规范检查器"""
    
    # 定义允许的提交类型
    VALID_TYPES = [
        'feat',      # 新功能
        'fix',       # bug修复
        'docs',      # 文档更新
        'style',     # 代码格式(不影响代码逻辑)
        'refactor',  # 重构
        'test',      # 测试相关
        'chore',     # 构建过程或辅助工具
        'perf',      # 性能优化
        'ci',        # CI/CD相关
        'build',     # 构建系统
        'revert'     # 回退
    ]
    
    def __init__(self, model, tokenizer):
        self.model = model
        self.tokenizer = tokenizer
    
    def check_conventional_format(self, message: str) -> Dict:
        """检查是否符合Conventional Commits格式"""
        lines = message.strip().split('\n')
        
        # 检查第一行(标题行)
        first_line = lines[0] if lines else ""
        
        # 正则匹配:type(scope): subject
        pattern = r'^(\w+)(?:\(([^)]+)\))?:\s+(.+)$'
        match = re.match(pattern, first_line)
        
        result = {
            'is_valid': False,
            'errors': [],
            'warnings': [],
            'parsed': None
        }
        
        if not match:
            result['errors'].append("第一行不符合 'type(scope): subject' 格式")
            return result
        
        commit_type, scope, subject = match.groups()
        
        # 检查type是否有效
        if commit_type not in self.VALID_TYPES:
            result['warnings'].append(f"类型 '{commit_type}' 不是标准类型,建议使用: {', '.join(self.VALID_TYPES)}")
        
        # 检查subject长度
        if len(subject) > 50:
            result['errors'].append(f"主题过长 ({len(subject)}字符),建议不超过50字符")
        
        # 检查subject是否以大写字母开头
        if subject and subject[0].islower():
            result['warnings'].append("主题建议以大写字母开头")
        
        # 检查subject是否以句号结尾
        if subject.endswith('.'):
            result['warnings'].append("主题不应以句号结尾")
        
        # 检查是否有body部分
        if len(lines) > 1:
            body = '\n'.join(lines[1:]).strip()
            if not body:
                result['warnings'].append("有正文部分但内容为空")
        
        result['is_valid'] = len(result['errors']) == 0
        result['parsed'] = {
            'type': commit_type,
            'scope': scope,
            'subject': subject,
            'has_body': len(lines) > 1
        }
        
        return result
    
    def analyze_with_ai(self, message: str) -> str:
        """使用Qwen3-4B分析提交信息"""
        prompt = f"""你是一个Git Commit Message规范检查专家。请分析以下提交信息:

{message}

请从以下几个方面进行分析:
1. 格式规范性:是否符合Conventional Commits规范?
2. 内容完整性:是否清晰描述了做了什么、为什么做?
3. 语言表达:是否简洁、明确、专业?
4. 改进建议:如果不符合规范,请给出具体的修改建议。

请用中文回复,结构清晰。"""
        
        # 准备模型输入
        messages = [
            {"role": "system", "content": "你是一个专业的Git Commit Message规范检查助手。"},
            {"role": "user", "content": prompt}
        ]
        
        inputs = self.tokenizer.apply_chat_template(
            messages,
            add_generation_prompt=True,
            return_tensors="pt"
        ).to(self.model.device)
        
        # 生成分析结果
        with torch.no_grad():
            outputs = self.model.generate(
                inputs,
                max_new_tokens=800,
                temperature=0.3,
                do_sample=True,
                pad_token_id=self.tokenizer.eos_token_id
            )
        
        response = self.tokenizer.decode(outputs[0][inputs.shape[1]:], skip_special_tokens=True)
        return response
    
    def rewrite_with_ai(self, original_message: str, context: str = "") -> str:
        """使用Qwen3-4B重写提交信息"""
        prompt = f"""请将以下Git提交信息重写为符合Conventional Commits规范的格式。

原始提交信息:
{original_message}

{context if context else ""}

要求:
1. 使用标准的提交类型(feat, fix, docs, style, refactor, test, chore等)
2. 格式为:type(scope): subject
3. 主题不超过50个字符,简洁明了
4. 正文部分详细说明改动内容和原因
5. 如果有相关issue,在footer中注明

请直接输出重写后的完整提交信息,不要额外解释。"""
        
        messages = [
            {"role": "system", "content": "你是一个专业的Git Commit Message重写助手。"},
            {"role": "user", "content": prompt}
        ]
        
        inputs = self.tokenizer.apply_chat_template(
            messages,
            add_generation_prompt=True,
            return_tensors="pt"
        ).to(self.model.device)
        
        with torch.no_grad():
            outputs = self.model.generate(
                inputs,
                max_new_tokens=500,
                temperature=0.2,  # 温度调低,让输出更确定
                do_sample=False,   # 使用贪婪搜索,保证一致性
                pad_token_id=self.tokenizer.eos_token_id
            )
        
        rewritten = self.tokenizer.decode(outputs[0][inputs.shape[1]:], skip_special_tokens=True)
        return rewritten.strip()

3.2 集成到Git Hook中

为了让检查自动化,我们可以把它集成到Git的pre-commit hook中:

# git_hook_integration.py
import subprocess
import sys
from pathlib import Path

class GitHookIntegrator:
    """Git Hook集成工具"""
    
    def __init__(self, checker):
        self.checker = checker
    
    def get_staged_commit_message(self) -> str:
        """获取暂存的提交信息"""
        try:
            # 获取.git目录路径
            git_dir = subprocess.run(
                ['git', 'rev-parse', '--git-dir'],
                capture_output=True,
                text=True,
                check=True
            ).stdout.strip()
            
            # 读取提交信息文件
            commit_msg_file = Path(git_dir) / 'COMMIT_EDITMSG'
            if commit_msg_file.exists():
                return commit_msg_file.read_text(encoding='utf-8')
            
            # 如果文件不存在,尝试从参数获取
            if len(sys.argv) > 1:
                return sys.argv[1]
            
            return ""
        except Exception as e:
            print(f"获取提交信息失败: {e}")
            return ""
    
    def run_pre_commit_check(self) -> bool:
        """运行pre-commit检查"""
        message = self.get_staged_commit_message()
        
        if not message:
            print("❌ 未找到提交信息")
            return False
        
        print("🔍 正在检查提交信息...")
        print(f"原始提交信息:\n{message}\n")
        
        # 格式检查
        format_result = self.checker.check_conventional_format(message)
        
        if not format_result['is_valid']:
            print("❌ 格式检查失败:")
            for error in format_result['errors']:
                print(f"  - {error}")
            for warning in format_result['warnings']:
                print(f"  ⚠️  {warning}")
            
            # 询问是否自动重写
            response = input("\n是否自动重写为规范格式?(y/n): ")
            if response.lower() == 'y':
                rewritten = self.checker.rewrite_with_ai(message)
                print(f"\n✅ 重写后的提交信息:\n{rewritten}")
                
                # 询问是否使用重写后的版本
                use_rewritten = input("\n是否使用重写后的版本?(y/n): ")
                if use_rewritten.lower() == 'y':
                    self.update_commit_message(rewritten)
                    print("✅ 提交信息已更新")
                    return True
            return False
        
        print("✅ 格式检查通过")
        
        # AI深度分析
        print("\n🤖 AI深度分析:")
        analysis = self.checker.analyze_with_ai(message)
        print(analysis)
        
        return True
    
    def update_commit_message(self, new_message: str):
        """更新提交信息"""
        try:
            # 获取.git目录路径
            git_dir = subprocess.run(
                ['git', 'rev-parse', '--git-dir'],
                capture_output=True,
                text=True,
                check=True
            ).stdout.strip()
            
            # 写入新的提交信息
            commit_msg_file = Path(git_dir) / 'COMMIT_EDITMSG'
            commit_msg_file.write_text(new_message, encoding='utf-8')
            
        except Exception as e:
            print(f"更新提交信息失败: {e}")
    
    def install_hook(self):
        """安装Git Hook"""
        try:
            git_dir = subprocess.run(
                ['git', 'rev-parse', '--git-dir'],
                capture_output=True,
                text=True,
                check=True
            ).stdout.strip()
            
            hook_dir = Path(git_dir) / 'hooks'
            hook_dir.mkdir(exist_ok=True)
            
            hook_file = hook_dir / 'commit-msg'
            
            # 创建hook脚本
            hook_content = '''#!/bin/bash
# Git Commit Message规范检查Hook

python3 -c "
import sys
sys.path.insert(0, '.')
from commit_checker import CommitMessageChecker
from git_hook_integration import GitHookIntegrator
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

# 加载模型
model_name = 'Qwen/Qwen3-4B-Instruct-2507'
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype=torch.float16,
    device_map='auto',
    trust_remote_code=True
)

checker = CommitMessageChecker(model, tokenizer)
integrator = GitHookIntegrator(checker)

if not integrator.run_pre_commit_check():
    print('❌ 提交信息检查未通过,请修改后重新提交')
    sys.exit(1)
"

if [ $? -ne 0 ]; then
    exit 1
fi
'''
            
            hook_file.write_text(hook_content)
            hook_file.chmod(0o755)
            
            print("✅ Git Hook安装成功")
            print("📝 现在每次提交时都会自动检查Commit Message规范性")
            
        except Exception as e:
            print(f"安装Hook失败: {e}")

4. 实际应用案例展示

让我们看看这个工具在实际项目中能发挥多大作用。

4.1 案例一:修复一个简单的bug

原始提交信息:

修复登录问题

使用我们的工具检查:

# 示例代码
checker = CommitMessageChecker(model, tokenizer)

# 检查格式
result = checker.check_conventional_format("修复登录问题")
print("格式检查结果:", result)

# AI分析
analysis = checker.analyze_with_ai("修复登录问题")
print("\nAI分析结果:")
print(analysis)

# 自动重写
rewritten = checker.rewrite_with_ai("修复登录问题")
print("\n重写结果:")
print(rewritten)

输出结果:

格式检查结果: {'is_valid': False, 'errors': ["第一行不符合 'type(scope): subject' 格式"], ...}

AI分析结果:
1. 格式规范性:不符合Conventional Commits规范。缺少类型前缀,格式应为"type(scope): subject"。
2. 内容完整性:不完整。没有说明具体修复了什么登录问题,为什么会出现这个问题。
3. 语言表达:过于简略,缺乏具体信息。
4. 改进建议:建议使用fix类型,明确scope为auth,详细描述修复的具体问题。

重写结果:
fix(auth): 修复用户登录时token验证失败的问题

- 修复JWT token解析时的时间戳比较逻辑错误
- 添加token过期时间的容错处理
- 更新相关单元测试

Closes #45

4.2 案例二:添加新功能

原始提交信息:

加了用户头像上传功能,可以上传图片,后端会压缩存储,前端能显示

重写后的结果:

feat(user): 添加用户头像上传功能

- 实现头像上传接口,支持JPG/PNG格式
- 添加图片压缩处理,限制最大尺寸为500x500像素
- 实现七牛云OSS存储集成
- 前端添加头像上传组件和预览功能
- 添加相关单元测试和接口文档

Resolves #78

4.3 案例三:重构代码

原始提交信息:

优化了一下代码结构,把重复的部分抽出来了

重写后的结果:

refactor(utils): 提取公共函数减少代码重复

- 将数据验证逻辑提取到validators.py
- 创建common_utils.py存放通用工具函数
- 重构用户服务层,分离业务逻辑和数据访问
- 更新相关模块的导入引用

代码重复率从15%降低到5%,提高可维护性。

5. 高级功能与定制化

5.1 支持团队自定义规范

每个团队的规范可能略有不同,我们可以让工具支持自定义配置:

# config.yaml
commit_rules:
  types:
    - feat
    - fix
    - docs
    - style
    - refactor
    - test
    - chore
    - perf
    - ci
    - build
    - revert
  
  scopes:
    - auth
    - user
    - order
    - payment
    - product
    - admin
    - api
    - ui
    - db
    - config
  
  subject_max_length: 50
  body_required: false
  issue_reference_required: true
  
  templates:
    feat: "添加{feature}功能"
    fix: "修复{module}中{issue}问题"
    docs: "更新{doc_type}文档"

然后在检查器中加载这个配置:

class CustomCommitChecker(CommitMessageChecker):
    """支持自定义规范的检查器"""
    
    def __init__(self, model, tokenizer, config_path="config.yaml"):
        super().__init__(model, tokenizer)
        self.load_config(config_path)
    
    def load_config(self, config_path):
        """加载团队自定义配置"""
        import yaml
        
        with open(config_path, 'r', encoding='utf-8') as f:
            self.config = yaml.safe_load(f)
        
        # 更新有效类型
        if 'types' in self.config.get('commit_rules', {}):
            self.VALID_TYPES = self.config['commit_rules']['types']
    
    def check_with_custom_rules(self, message: str) -> Dict:
        """使用自定义规则检查"""
        result = self.check_conventional_format(message)
        
        # 添加自定义规则检查
        rules = self.config.get('commit_rules', {})
        
        # 检查scope是否在允许范围内
        if result['parsed'] and result['parsed']['scope']:
            allowed_scopes = rules.get('scopes', [])
            if allowed_scopes and result['parsed']['scope'] not in allowed_scopes:
                result['warnings'].append(
                    f"scope '{result['parsed']['scope']}' 不在允许范围内。允许的scope: {', '.join(allowed_scopes)}"
                )
        
        # 检查是否需要关联issue
        if rules.get('issue_reference_required', False):
            if not re.search(r'(close[sd]?|fix(es|ed)?|resolve[sd]?) #\d+', message, re.IGNORECASE):
                result['warnings'].append("提交信息中未关联issue编号")
        
        return result

5.2 批量检查历史提交

有时候我们需要检查整个项目的提交历史,看看有多少不符合规范的提交:

def check_git_history(self, since: str = "30.days"):
    """检查指定时间范围内的提交历史"""
    try:
        # 获取提交历史
        cmd = ['git', 'log', f'--since={since}', '--pretty=format:%H|%s|%b']
        result = subprocess.run(cmd, capture_output=True, text=True, check=True)
        
        commits = []
        for line in result.stdout.strip().split('\n'):
            if line:
                parts = line.split('|', 2)
                if len(parts) >= 2:
                    commit_hash = parts[0]
                    subject = parts[1]
                    body = parts[2] if len(parts) > 2 else ""
                    message = f"{subject}\n\n{body}".strip()
                    
                    commits.append({
                        'hash': commit_hash[:8],
                        'message': message,
                        'result': self.check_conventional_format(message)
                    })
        
        # 统计结果
        total = len(commits)
        valid = sum(1 for c in commits if c['result']['is_valid'])
        invalid = total - valid
        
        print(f"📊 提交历史检查报告 ({since})")
        print(f"总计: {total} 个提交")
        print(f"规范: {valid} 个 ({valid/total*100:.1f}%)")
        print(f"不规范: {invalid} 个 ({invalid/total*100:.1f}%)")
        
        # 显示不规范提交
        if invalid > 0:
            print("\n❌ 不规范的提交:")
            for commit in commits:
                if not commit['result']['is_valid']:
                    print(f"\n{commit['hash']}: {commit['message'].split('\n')[0]}")
                    for error in commit['result']['errors']:
                        print(f"  - {error}")
        
        return commits
        
    except Exception as e:
        print(f"检查提交历史失败: {e}")
        return []

5.3 集成到CI/CD流水线

我们还可以把这个检查器集成到CI/CD流水线中,确保每次代码合并都符合规范:

# .gitlab-ci.yml 或 .github/workflows/commit-check.yml
commit-check:
  stage: test
  script:
    - python3 -m pip install transformers torch
    - python3 commit_checker.py --ci-check
  only:
    - merge_requests
# commit_checker.py 添加CI检查功能
def run_ci_check():
    """在CI环境中运行检查"""
    import os
    
    # 获取合并请求的提交信息
    commit_message = os.environ.get('CI_COMMIT_MESSAGE', '')
    
    if not commit_message:
        print("❌ 未找到提交信息")
        sys.exit(1)
    
    checker = CommitMessageChecker(model, tokenizer)
    result = checker.check_conventional_format(commit_message)
    
    if not result['is_valid']:
        print("❌ 提交信息不符合规范:")
        for error in result['errors']:
            print(f"  - {error}")
        print("\n💡 建议格式: type(scope): subject")
        print("   例如: feat(auth): 添加用户登录功能")
        sys.exit(1)
    
    print("✅ 提交信息检查通过")
    sys.exit(0)

6. 总结

通过Qwen3-4B Instruct-2507构建的Git Commit Message规范检查与重写工具,我们实现了从“人工随意写”到“智能规范写”的转变。这个工具不仅提升了提交信息的质量,还通过自动化检查节省了团队的时间成本。

6.1 工具的核心价值

对个人开发者

  • 养成良好的提交习惯,提升代码可维护性
  • 通过AI辅助,写出更专业、更清晰的提交信息
  • 减少因提交信息不清晰导致的沟通成本

对团队协作

  • 统一提交规范,提升代码审查效率
  • 自动生成规范的变更日志
  • 便于追踪功能演进和问题修复

对项目管理

  • 清晰的提交历史便于版本管理和回退
  • 自动化检查确保规范执行
  • 数据统计帮助改进开发流程

6.2 实际使用建议

  1. 从小团队开始试点:先在小团队或个人项目中试用,收集反馈,逐步完善规则
  2. 结合代码审查流程:把提交信息质量作为代码审查的一部分
  3. 定期回顾和优化:每季度回顾提交历史,根据实际情况调整规范
  4. 提供培训和支持:对新成员进行规范培训,提供工具使用指导

6.3 后续优化方向

如果你想让这个工具更强大,可以考虑以下扩展:

  1. 多模型支持:除了Qwen3-4B,可以集成其他大模型,根据任务选择最合适的模型
  2. 学习团队习惯:通过分析历史提交,学习团队的表达习惯,提供更贴切的建议
  3. 集成IDE插件:开发VSCode、IntelliJ等IDE的插件,在编写提交时实时提示
  4. 支持多语言:根据团队主要语言,支持中英文混合或纯英文提交

好的工具加上好的习惯,能让我们的开发工作更加高效、规范。希望这个Qwen3-4B Commit Message检查器能帮助你提升代码提交的质量,让每一次提交都清晰、有价值。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐