首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >从零搭建AI编程助手:本地代码生成与自动执行全攻略

从零搭建AI编程助手:本地代码生成与自动执行全攻略

原创
作者头像
用户12339161
发布2026-07-31 11:30:31
发布2026-07-31 11:30:31
1340
举报

从零搭建AI编程助手:本地代码生成与自动执行全攻略

Copilot、Cursor 让编程效率倍增,但它们的内部机制往往是个黑盒。作为一名开发者,你是否想过自己动手实现一个“AI编程助手”——不仅能生成代码,还能自动运行并返回结果?本文使用 Ollama + Qwen2.5-Coder,30 行 Python 代码带你跑通全流程,并深入探讨代码安全与解析技巧。

一、架构与选型

  • 模型:Qwen2.5-Coder-7B(Ollama 部署),支持代码生成,本地运行无隐私顾虑。
  • 流程:用户自然语言需求 → 构造 Prompt → 模型生成代码 → 正则提取 → 沙箱执行 → 返回输出。

二、核心 Prompt 设计

关键在于约束模型只输出可执行的 Python 代码块,避免额外解释:

代码语言:javascript
复制
SYSTEM_PROMPT = """你是一个专业的 Python 助手。
用户提出编程需求,你只返回可直接运行的 Python 代码,用 ```python ... ``` 包裹。
不要添加任何解释、注释或额外文字。"""

三、代码生成与解析

使用 Ollama 的 Python SDK 调用模型,并用正则提取代码块:

代码语言:javascript
复制
import ollama
import re

def generate_code(requirement: str) -> str:
    response = ollama.chat(
        model="qwen2.5-coder:7b",
        messages=[
            {"role": "system", "content": SYSTEM_PROMPT},
            {"role": "user", "content": requirement}
        ]
    )
    raw = response["message"]["content"]
    match = re.search(r"```python\n(.*?)\n```", raw, re.DOTALL)
    return match.group(1) if match else raw

四、安全执行沙箱

直接 exec() 风险极高。我们利用 Python 的 restricted 模式(__builtins__ 限制)并禁止危险模块:

代码语言:javascript
复制
import subprocess
import tempfile
import os

def safe_run(code: str, timeout: int = 5) -> str:
    # 静态检查危险模块
    dangerous = ["import os", "import shutil", "import socket", "eval", "exec"]
    for word in dangerous:
        if word in code:
            return "[安全检查] 检测到危险操作,已拦截。"

    with tempfile.NamedTemporaryFile(mode="w", suffix=".py", delete=False) as f:
        f.write(code)
        tmp_path = f.name
    try:
        result = subprocess.run(
            ["python", tmp_path],
            capture_output=True,
            text=True,
            timeout=timeout
        )
        return result.stdout if result.stdout else result.stderr
    except subprocess.TimeoutExpired:
        return "[超时] 代码执行超过 %s 秒" % timeout
    finally:
        os.unlink(tmp_path)

五、完整串联示例

代码语言:javascript
复制
def ai_programmer(requirement: str):
    print(f"需求:{requirement}")
    code = generate_code(requirement)
    print(f"生成的代码:\n{code}")
    output = safe_run(code)
    print(f"执行结果:\n{output}")

if __name__ == "__main__":
    ai_programmer("计算斐波那契数列第10项并打印")

运行输出(示例):

代码语言:javascript
复制
需求:计算斐波那契数列第10项并打印
生成的代码:
def fib(n):
    a,b=0,1
    for _ in range(n):
        a,b=b,a+b
    return a
print(fib(10))
执行结果:
55

六、生产环境进阶建议

  • 权限隔离:使用 Docker 容器执行,挂载只读文件系统。
  • 多语言支持:扩展 Prompt 支持 Java/JS,并动态选择解释器。
  • 迭代优化:若执行报错,将错误信息回喂给模型,让其自动修正(Self-Debug)。
  • 代码质量:集成 pylintblack 对生成代码先格式化再执行。

结语

整个实现不足百行代码,却涵盖了 Prompt 工程、代码解析、安全沙箱、异常处理等 AI 编程助手的核心要素。你可以基于此快速定制内部开发工具,或嵌入 CI/CD 流程实现自动化代码生成。AI 编程不是魔法,只要拆解清楚,每个开发者都能打造自己的“副驾驶”。

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

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

目录
  • 从零搭建AI编程助手:本地代码生成与自动执行全攻略
    • 一、架构与选型
    • 二、核心 Prompt 设计
    • 三、代码生成与解析
    • 四、安全执行沙箱
    • 五、完整串联示例
    • 六、生产环境进阶建议
    • 结语
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档