尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

如何让LLM自我纠错?Monty type_check_stubs把类型错误变成重试提示词的完整指南

如何让LLM自我纠错?Monty type_check_stubs把类型错误变成重试提示词的完整指南 如何让LLM自我纠错Monty type_check_stubs把类型错误变成重试提示词的完整指南【免费下载链接】montyA minimal, secure Python interpreter written in Rust for use by AI项目地址: https://gitcode.com/GitHub_Trending/monty3/montyMonty是一个用 Rust 编写的极简、安全 Python 解释器专为 AI 运行代码而设计。它的杀手级特性type_check_stubs能在代码执行前拦截类型错误把诊断信息直接变成给 LLM 的重试提示词——让大模型自己发现错误、自己修正而不必靠一次次运行失败来试错。为什么 LLM 写代码需要类型检查这道保险让 LLM 生成的 Python 代码直接运行最常见的困境是模型调用了沙箱里没有的模块如import random运行时才炸参数类型传错字符串传给期望整数的函数要到深处才报TypeError报错信息含糊模型重试时凭感觉改成功率低。Monty 的思路是把运行时错误前移成运行前的静态诊断。它内嵌了 Astral 的ty类型检查引擎与pydantic生态同源并针对 Monty 实际实现的 Python 子集做了裁剪版类型存根monty-typeshed——不认识的模块、函数、方法在存根里根本不存在所以越界代码在类型检查阶段就会被标红。相关实现见 crates/monty-type-checking/README.md。一键开启type_checkTrue 就够了类型检查默认关闭开启只需在会话签出时多传一个参数from pydantic_monty import Monty, MontyTypingError with Monty() as pool: with pool.checkout(type_checkTrue) as session: try: session.feed_run(x: int not an int) except MontyTypingError as exc: print(exc.display())注意两点代码不会执行但会话不会死——修好代码再feed_run即可诊断文本已经渲染好拿到手就是可以直接贴进提示词的字符串。完整用法见 docs/type-checking.md。核心技巧用 type_check_stubs 向检查器报备宿主工具这是 LLM 应用里最关键的一步。沙箱代码往往会调用宿主注入的工具函数查天气、查数据库这些函数在代码片段里根本没有定义类型检查器从没见过它们。type_check_stubs就是给检查器的一份工具签名声明书stubs def get_temperature(city: str) - float: ...\n with pool.checkout(type_checkTrue, type_check_stubsstubs) as session: result session.feed_run( get_temperature(London) * 2, external_lookup{get_temperature: get_temperature}, )妙处在于✅ 模型用对签名时检查通过放心执行✅ 模型传错类型比如get_temperature(123)时检查器立刻报invalid-argument-type错误行号还会自动对齐回模型写的原始行✅ 同一份声明你可以同时放进给模型的提示词和传给type_check_stubs——模型看得见契约检查器守得住契约。官方示例目录正是这个模式例如 SQL 分析示例把签名写在 examples/sql_playground/type_stubs.pyi 中再传给会话见 examples/sql_playground/main.py。拿到诊断信息一段现成的重试提示词MontyTypingError.display()返回的是带源码上下文、下划线标注和规则名的诊断块error[invalid-argument-type]: Argument to function fetch is incorrect -- main.py:1:7 | 1 | fetch(123) | ^^^ Expected str, found int这段文本天然就是给 LLM 的重试提示你上次生成的代码未通过类型检查以下是诊断信息请修正后重新生成……因为错误指向具体行号 具体规则名 期望类型模型不需要猜错在哪一轮修正的命中率远高于模糊的运行时堆栈。更多真实诊断快照可参考 crates/monty-python/tests/test_type_check.py。三步搭建自我纠错循环把上面串起来就是一个最小可运行的自我纠错闭环声明契约把工具签名同时写进 LLM 提示词和type_check_stubs捕获诊断feed_run抛MontyTypingError时取exc.display()回灌重试把诊断拼进新提示词让 LLM 重新生成再喂给同一个存活会话——会话内之前执行成功的代码会自动累积进类型上下文跨片段引用也不会漏检。 两个实用细节单次想跳过检查可传skip_type_checkTrue不想让模型看到花哨下划线可在checkout时指定type_check_formatconcise甚至json机器可读便于程序化处理。模块与文档速查想做什么看哪里理解类型检查原理crates/monty-type-checking/src/type_check.rs查看裁剪版 typeshedcrates/monty-typeshed/README.mdPython 包参数说明crates/monty-python/python/pydantic_monty/_monty.pyi官方类型检查文档docs/type-checking.md端到端示例examples/expense_analysis/main.py一句话总结Monty 的 type_check_stubs 让类型错误从运行时的意外变成 LLM 重试提示词里的精准线索——这正是让大模型稳定产出可执行代码的关键一环。【免费下载链接】montyA minimal, secure Python interpreter written in Rust for use by AI项目地址: https://gitcode.com/GitHub_Trending/monty3/monty创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表