十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

GPT Academic 动态代码解释器:自然语言驱动 Python 代码生成、验证与隔离执行全流程解析

GPT Academic 动态代码解释器:自然语言驱动 Python 代码生成、验证与隔离执行全流程解析 GPT Academic 动态代码解释器自然语言驱动 Python 代码生成、验证与隔离执行全流程解析【免费下载链接】gpt_academic为GPT/GLM等LLM大语言模型提供实用化交互接口特别优化论文阅读/润色/写作体验模块化设计支持自定义快捷按钮函数插件支持Python和C等项目剖析自译解功能PDF/LaTex论文翻译总结功能支持并行问询多种LLM模型支持chatglm3等本地模型。接入通义千问, deepseekcoder, 讯飞星火, 文心一言, llama2, rwkv, claude2, moss等。项目地址: https://gitcode.com/GitHub_Trending/gp/gpt_academicGPT Academic 的动态代码解释器CodeInterpreter是一项需求描述 → 代码生成 → 自动执行的智能体功能用户只需上传文件并用自然语言描述任务系统即自动生成 Python 代码、校验其可执行性并在独立子进程中限时运行最后将结果文件或计算值回传到界面。本篇将带你完整掌握它的使用流程、任务描述技巧、界面执行进度含义并结合 Dynamic_Function_Generate.py 与 gen_fns_shared.py 的源码深入解析两阶段 Prompt、最多 3 次重试、15 秒超时与进程隔离的实现细节。一、功能定位与工作原理代码解释器是 GPT Academic 智能体分类下的插件在 crazy_functional.py 中以动态代码解释器CodeInterpreter名称注册Group为智能体函数本体是Dynamic_Function_Generatefunction_plugins.update( { 动态代码解释器CodeInterpreter: { Group: 智能体, Color: stop, AsButton: False, Function: HotReload(Dynamic_Function_Generate), } } )它的独特之处在于闭环执行您不需要自己写代码AI 生成、系统验证、自动运行、结果回传一气呵成。其运作分为三个核心阶段1. 需求理解当您上传文件并用自然语言描述任务后系统会将您的需求和文件类型信息发送给 AI 模型。从源码看这一步实际由 gpt_interact_multi_step() 分两轮对话完成第一步向模型下发形如以下的指令sys_prompt为 You are a world-class programmer.要求模型编写一个以{file_type}文件路径为唯一参数、返回分析结果字符串或生成文件路径的 Python 函数并用 Markdown 代码块包裹输出fYour job:\n f1. write a single Python function, which takes a path of a {file_type} file as the only argument and returns a string containing the result of analysis or the path of generated files. \n, f2. You should write this function to perform following task: txt \n, f3. Wrap the output python function with markdown codeblock.第二步要求模型把上一步的函数改写为固定的可执行模板。该模板Dynamic_Function_Generate.py 中的template变量强制约束了类名与方法签名template python import ... # Put dependencies here, e.g. import numpy as np. class TerminalFunction(object): # Do not change the name of the class, The name of the class must be TerminalFunction def run(self, path): # The name of the function must be run, it takes only a positional argument. # rewrite the function you have just written here ... return generated_file_path类名必须为 TerminalFunction、入口方法必须为 run(self, path)——这一约定正是后续验证与执行阶段能够用同一套机制处理任意 AI 生成代码的基础。文件类型来自上传文件名的后缀file_type file_list[0].split(.)[-1]因此 Prompt 中会明确告知模型待处理文件是 png、csv 还是 txt。 ### 2. 代码验证 AI 生成的代码会被解析和检查。[Dynamic_Function_Generate.py](https://link.gitcode.com/i/5dd6a51baad06e7d64facb45f8b5cd77#L190-L209) 中的主循环设置了 MAX_TRY 3即整个生成 → 提取代码块 → 验证流程最多重试 3 次 1. 用正则 r([\s\S]*?) 从模型回复中提取代码块[get_code_block()](https://link.gitcode.com/i/5dd6a51baad06e7d64facb45f8b5cd77#L47-L56)若存在多个代码块会优先选择包含 class TerminalFunction 的那一个 2. 调用 [try_make_module()](https://link.gitcode.com/i/9606678fd3d34c782b60bde74a072cb1#L14-L27)把代码落盘到日志目录gen_plugin_verify然后**另起一个子进程**动态 import 该模块、实例化 TerminalFunction 类验证依赖能否导入、结构是否合法 3. 若初次生成存在问题系统会把错误追踪traceback显示在对话区等待 5 秒后重新尝试重试过程中模型可基于之前的对话历史改进代码。 验证子进程自身也有 10 秒的 p.join(timeout10) 限制防止验证阶段卡死。 ### 3. 安全执行 验证通过的代码会在独立子进程中执行[Dynamic_Function_Generate.py](https://link.gitcode.com/i/5dd6a51baad06e7d64facb45f8b5cd77#L211-L234) python TIME_LIMIT 15 manager multiprocessing.Manager() return_dict manager.dict() # ⭐⭐⭐ subprocess_worker ⭐⭐⭐ p multiprocessing.Process(targetsubprocess_worker, args(code, file_path, return_dict)) # ⭐ 开始执行时间限制TIME_LIMIT p.start(); p.join(timeoutTIME_LIMIT) if p.is_alive(): p.terminate(); p.join()subprocess_worker() 在工作进程中再次动态加载代码模块、实例化TerminalFunction并调用instance.run(file_path)把result、success、traceback写入multiprocessing.Manager()提供的共享字典回传主进程。TIME_LIMIT 15秒的执行时间限制确保代码陷入死循环时进程会被强制终止p.terminate()。执行完成后结果生成的文件路径或计算结果字符串会返回主界面供您查看和下载——若结果是一个存在的文件路径还会通过promote_file_to_downloadzone()推送到下载区图片类结果会直接在对话区内联预览。这种设计让代码解释器成为一个灵活的通用工具只要能用 Python 实现的任务理论上都可以通过自然语言描述来完成。二、适用场景与能力边界代码解释器特别适合处理以下类型的任务图像处理裁剪图片、调整尺寸、转换格式、添加滤镜效果、提取颜色通道、生成缩略图等。例如把图片的下半部分裁剪掉或将这张图片转换为灰度图。数据转换CSV 与 Excel 互转、JSON 格式化、数据清洗、简单的统计分析等。例如把这个 CSV 文件转换成 Excel 格式或统计这个数据文件中每列的平均值。文件操作批量重命名、格式转换、内容提取等。例如提取这个 PDF 的文字内容或把这个文档的所有图片提取出来。简单计算数学计算、公式求解、数据可视化等。例如根据这些数据绘制一个折线图。以上场景与模块头部注释中的官方自测用例完全一致Dynamic_Function_Generate.py测试 - 裁剪图像保留下半部分 - 交换图像的蓝色通道和红色通道 - 将图像转为灰度图像 - 将csv文件转excel表格!!! info 能力边界 代码解释器的能力取决于两个因素AI 模型的代码生成能力以及系统中已安装的 Python 依赖包。对于需要特殊依赖包的任务如深度学习模型推理可能会因缺少依赖而执行失败。常见的数据处理和图像处理任务通常都能顺利完成。从源码结构看验证与执行阶段都直接exec_module加载代码依赖导入失败会进入 3 次重试循环最终失败时把 traceback 展示在对话区。三、使用方法基本流程使用代码解释器的标准流程如下上传文件将需要处理的文件拖拽到界面上方的文件上传区域。支持各种常见文件格式如图片PNG、JPG、数据文件CSV、Excel、文本文件等。描述任务在输入框中用自然语言描述您想对这个文件做什么。描述要尽量具体明确。选择插件在函数插件区的智能体分类中找到并点击动态代码解释器CodeInterpreter。等待执行系统会依次进行代码生成、验证和执行。整个过程通常在 10-30 秒内完成。获取结果执行结果会显示在对话区如果生成了新文件文件会出现在下载区。从源码看第 4 步背后有三道前置检查值得注意上传有效性检查have_any_recent_upload_files() 读取chatbot._cookies[most_recent_uploaded]中记录的最近上传时间戳只有 5 分钟内_5min 5 * 60的上传才被视为有效文件清单有效时以glob.glob(os.path.join(file_dir, **/*), recursiveTrue)递归列出上传目录下的所有文件作为处理清单若无任何近期上传对话区会提示没有发现任何近期上传的文件。并直接返回输入纠错若输入框内容恰好是上传目录路径本身is_the_upload_folder(txt)系统会提醒请在输入框内填写需求, 然后再次点击该插件而不是把路径当任务描述发给模型。此外插件还支持通过高级参数file_path_arg显式指定待处理文件路径此时跳过近期上传检测直接使用指定路径。仓库测试用例如 test_plugins.py即采用这种方式# plugin_test(plugincrazy_functions.Dynamic_Function_Generate-Dynamic_Function_Generate, # main_input交换图像的蓝色通道和红色通道, # advanced_arg{file_path_arg: ./build/ants.jpg})任务描述技巧任务描述的清晰程度直接影响 AI 生成代码的质量。以下是一些有效的描述方式裁剪图像保留下半部分交换图像的蓝色通道和红色通道将 CSV 文件转换为 Excel 表格统计文本文件中每个单词出现的次数并按频率排序描述时应注意明确指出要对文件做什么操作如果有具体的参数如尺寸、比例最好一并说明避免过于复杂或歧义的表达。四、执行过程详解当您点击插件按钮后系统会在对话区实时显示执行进度阶段显示内容说明启动正在启动: 插件动态生成插件开始处理请求文件检测当前文件处理列表: [文件路径]显示检测到的上传文件代码生成AI 生成的 Python 代码展示 AI 编写的处理代码代码验证正在验证上述代码的有效性检查代码是否可执行执行中开始创建新进程并执行代码在隔离环境中运行代码完成执行结果或生成的文件显示最终结果这些提示文案与源码中的update_ui_latest_msg调用一一对应启动提示来自chatbot.append([正在启动: 插件动态生成插件, ...])文件检测来自当前文件处理列表: {file_list}验证与执行提示分别来自正在验证上述代码的有效性 ...与开始创建新进程并执行代码! 时间限制 15 秒. 请等待任务完成...。如果代码生成或执行失败系统会显示错误信息并自动重试对话区会出现类似第 j/3 次代码生成尝试, 失败了~ 别担心, 我们5秒后再试一次的提示并附上本次的完整错误追踪traceback。重试过程中AI 会参考之前的对话历史来改进代码。如果 3 次重试后仍然失败系统会显示详细的错误追踪信息帮助您了解问题所在。执行阶段失败时对话区同样会输出执行失败了及错误追踪块。五、安全机制代码解释器虽然功能强大但在设计上充分考虑了安全性进程隔离AI 生成的代码在独立的子进程中执行multiprocessing.Process与主应用完全隔离。即使代码出现异常或崩溃也不会影响 GPT Academic 的正常运行。验证阶段与执行阶段各自使用独立的子进程且验证代码与运行代码分别落盘在gen_plugin_verify、gen_plugin_run两个日志子目录中便于事后排查。时间限制正式执行有TIME_LIMIT 15秒的超时限制超过限制的进程会被p.terminate()强制终止。此外验证子进程也有 10 秒的独立超时gen_fns_shared.py。文件范围run(self, path)只接收上传文件的路径作为入参代码的默认操作对象是您上传的文件生成结果通过返回值交还给系统。依赖控制代码只能使用系统已安装的 Python 包import 阶段由exec_module直接检验。这在一定程度上限制了代码的能力但也防止了任意拉取外部依赖的行为。!!! warning 使用建议 尽管有上述安全机制仍建议您- 不要用于处理包含敏感信息的文件 - 查看 AI 生成的代码了解它要执行的操作 - 对于重要文件先在备份上测试六、常见问题??? question 提示没有发现任何近期上传的文件 代码解释器需要您先上传文件才能使用。请确保1. 文件已成功上传上传区会显示文件名 2. 上传后不要等待太久再点击插件超过 5 分钟的上传会被视为过期——对应源码中 _5min 5 * 60 的时间戳判断 3. 先点击上传区确认文件已就绪再描述任务??? question 代码生成失败多次重试后仍然报错 这可能是因为1. **任务描述不清晰**尝试用更简单、更明确的语言重新描述 2. **任务过于复杂**将复杂任务拆分成多个简单步骤 3. **缺少必要的依赖包**某些特殊功能需要额外安装依赖 4. **模型能力限制**尝试切换到更强的模型如 GPT-4o??? question 执行超时提示进程被终止 代码执行有 15 秒的时间限制源码中的TIME_LIMIT 15。如果您的任务超时1. 尝试处理更小的文件 2. 将任务简化如处理图片的一部分而非全部 3. 某些耗时操作可能不适合用代码解释器完成??? question 生成的结果不符合预期 AI 生成的代码可能没有完全理解您的意图。建议1. 查看对话区显示的代码了解它实际做了什么 2. 在任务描述中添加更多细节 3. 尝试用不同的方式描述同一个任务??? question 图片处理后颜色异常 这通常是颜色通道顺序RGB vs BGR的问题。可以在任务描述中明确指出 处理图片时请保持 RGB 颜色顺序 七、与其他功能的对比代码解释器与 GPT Academic 的其他功能有所不同了解这些差异有助于选择合适的工具特性代码解释器预设插件如图像处理插件灵活性高 - 可处理任意任务低 - 只能完成预设功能可靠性中 - 依赖 AI 代码生成质量高 - 经过测试的稳定代码使用门槛低 - 自然语言描述低 - 点击按钮即可适用场景一次性、非标准任务重复性、标准化任务简而言之如果已有现成的插件能完成您的任务优先使用现成插件如果没有合适的插件或者您有特殊的自定义需求代码解释器是一个灵活的补充选择。从实现角度看两者的区别在源码中也很直白预设插件是仓库里固定的函数而代码解释器在每次请求时现场向 LLM 索要一个符合TerminalFunction契约的新函数再用统一的子进程 限时 共享字典回传机制去跑它。八、关键源码索引内容位置插件注册智能体分组crazy_functional.py主入口Dynamic_Function_Generate、3 次重试、15 秒限时crazy_functions/Dynamic_Function_Generate.py两阶段 Prompt 与TerminalFunction模板crazy_functions/Dynamic_Function_Generate.py5 分钟上传有效期判定crazy_functions/Dynamic_Function_Generate.py代码验证try_make_module/ 执行subprocess_workercrazy_functions/gen_fns/gen_fns_shared.py上传时间戳的底层记录toolbox.py插件测试用例file_path_arg用法tests/test_plugins.py相关文档虚空终端 — 另一个用自然语言调用功能的智能体基础操作 — 了解文件上传等基础操作源码分析 — 专门用于分析代码项目的功能【免费下载链接】gpt_academic为GPT/GLM等LLM大语言模型提供实用化交互接口特别优化论文阅读/润色/写作体验模块化设计支持自定义快捷按钮函数插件支持Python和C等项目剖析自译解功能PDF/LaTex论文翻译总结功能支持并行问询多种LLM模型支持chatglm3等本地模型。接入通义千问, deepseekcoder, 讯飞星火, 文心一言, llama2, rwkv, claude2, moss等。项目地址: https://gitcode.com/GitHub_Trending/gp/gpt_academic创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表