AI 编程不是“让 AI 替你写代码”,而是把大模型嵌入开发流程,用工程手段控制其不确定性。真正落地的 AI 编程,需要提示词、测试、静态分析、CI/CD 和度量五件事配合。本文从专业角度给出可运行的代码示例。
让 AI 生成代码,最忌“帮我写个函数”。要限定语言、输入输出、边界条件和依赖。
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 辅助生成测试,但断言必须由人确认。
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运行测试:
pytest -q --cov=src覆盖率低于阈值时,CI 直接失败。
AI 生成的代码可能引入漏洞。用 Bandit 做安全扫描:
pip install bandit
bandit -r src/ -f json -o bandit.json在 CI 中设置门禁:
# .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 不得合入。
AI 生成代码的合入流程必须保留人工审核:
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 建议的采纳率和缺陷率,持续优化提示词:
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 删除。