首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >AI 编程工程化:从代码生成到可信交付的实践

AI 编程工程化:从代码生成到可信交付的实践

原创
作者头像
IT大佬 jzit-top
发布于 2026-10-16 19:13:00
发布于 2026-10-16 19:13:00
250
举报

AI 编程不是“让 AI 替你写代码”,而是把大模型嵌入开发流程,用工程手段控制其不确定性。真正落地的 AI 编程,需要提示词、测试、静态分析、CI/CD 和度量五件事配合。本文从专业角度给出可运行的代码示例。

一、代码生成:结构化提示词

让 AI 生成代码,最忌“帮我写个函数”。要限定语言、输入输出、边界条件和依赖。

代码语言:javascript
复制
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["LLM_API_KEY"],
    base_url=os.environ.get("LLM_BASE_URL", "https://api.openai.com/v1"),
)

SYSTEM = """你是资深 Python 工程师。
规则:
1. 只使用标准库和 typing;
2. 函数必须包含类型注解和 docstring;
3. 边界条件显式处理,不抛裸 Exception;
4. 只输出代码,不输出解释。"""

def gen_function(spec: str) -> str:
    resp = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[
            {"role": "system", "content": SYSTEM},
            {"role": "user", "content": spec},
        ],
        temperature=0.2,
    )
    return resp.choices[0].message.content

生成后必须人工审查,AI 可能漏掉空值、并发和溢出。

二、生成测试:验证 AI 代码

AI 写的代码,也要用 AI 辅助生成测试,但断言必须由人确认。

代码语言:javascript
复制
TEST_SYSTEM = """你是测试工程师。
为给定函数生成 pytest 测试,覆盖:
正常输入、边界值、异常输入。
只输出测试代码。"""

def gen_tests(func_code: str) -> str:
    resp = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[
            {"role": "system", "content": TEST_SYSTEM},
            {"role": "user", "content": func_code},
        ],
        temperature=0,
    )
    return resp.choices[0].message.content

运行测试:

代码语言:javascript
复制
pytest -q --cov=src

覆盖率低于阈值时,CI 直接失败。

三、静态分析与安全门禁

AI 生成的代码可能引入漏洞。用 Bandit 做安全扫描:

代码语言:javascript
复制
pip install bandit
bandit -r src/ -f json -o bandit.json

在 CI 中设置门禁:

代码语言:javascript
复制
# .github/workflows/ai-code.yml
name: AI Code Review
on: [pull_request]
jobs:
  check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.12"
      - run: pip install -r requirements.txt
      - run: pytest -q --cov=src --cov-fail-under=80
      - run: bandit -r src/ -ll

任何一步失败,PR 不得合入。

四、CI/CD 集成:人工审核卡点

AI 生成代码的合入流程必须保留人工审核:

代码语言:javascript
复制
def review_gate(pr: dict) -> bool:
    if pr["ai_generated"] and not pr["human_reviewed"]:
        return False
    if pr["coverage"] < 0.8:
        return False
    if pr["bandit_high"] > 0:
        return False
    return True

高风险模块(支付、权限、加密)禁止 AI 自动合入,必须双人复核。

五、度量与反馈

记录 AI 建议的采纳率和缺陷率,持续优化提示词:

代码语言:javascript
复制
from dataclasses import dataclass

@dataclass
class AIMetric:
    suggestion_id: str
    accepted: bool
    tests_passed: bool
    defect_found: bool

def acceptance_rate(metrics: list[AIMetric]) -> float:
    if not metrics:
        return 0.0
    return sum(m.accepted for m in metrics) / len(metrics)

核心指标:采纳率、测试通过率、缺陷率、人工修改率。采纳率低说明提示词或模型选型有问题。

六、总结

AI 编程的工程化链路:提示词 → 代码生成 → 测试 → 静态分析 → CI 门禁 → 度量反馈。模型负责提效,人负责判断和责任。把 AI 生成代码当作“初级工程师的 PR”来对待:必须审查、必须测试、必须过安全门禁。守住这条底线,AI 编程才能从玩具变成生产力。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 一、代码生成:结构化提示词
  • 二、生成测试:验证 AI 代码
  • 三、静态分析与安全门禁
  • 四、CI/CD 集成:人工审核卡点
  • 五、度量与反馈
  • 六、总结
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档