乐于分享
好东西不私藏

调试AI CLI:稳定参数输出竟成奢望,工具调用全是无法复现的坑

调试AI CLI:稳定参数输出竟成奢望,工具调用全是无法复现的坑

最近在用多模态AI辅助标注图片里的人、车,生成YOLO标注文件。

我让AI调用CLI的方法是,首先编写执行过程可确定的CLI应用程序,然后告诉AI该CLI的合法参数,本以为2023年12月有了tools之后,参数传递可以很稳定,没想到它有时候也会乱漂。

skill本质上自适应的tools,它从海量的tools里选择与任务最相关的几个tools发给大模型,避免过多过多token消耗。

css适配多浏览器,比如要实现屏幕旋转功能,编写函数在Firefox实现后,同样的函数在IE不适配,那就检查当前的浏览器,再if、else替换其他的适配函数。

任务的工作量在每做之前工程师是可以预估的,AI CLI开发完全没法Debug。

网站登陆界面最简单50行能实现,但是防范各种异常情况代码得暴增到500行以上。

传统程序逻辑很稳定,一次执行报错,重复运行依旧会报错,但 AI 命令行工具开发完全不一样,想让模型输出标准合法参数都格外费劲,实际踩过这些坑:

1、AI tools调用的逻辑里,前面10次调用正常,第11次可能失败

下面是合法的输出

[{"L": "car", "x": 0.08, "y": 0.55, "w": 0.15, "h": 0.08},{"L": "car", "x": 0.85, "y": 0.55, "w": 0.15, "h": 0.08}]

错误时可能输出下面待渲染格式,你说它错嘛,又好像没有

[{\n"L": "car", \n"x": 0.08, \n"y": 0.55, \n"w": 0.15, \n"h": 0.08},\n{\n"L": "car", \n"x": 0.85, \n"y": 0.55, \n"w": 0.15, \n"h": 0.08}]

还可能是下面节省token的方式,第三种情况还好解决,在tools的description给AI一个例子就能很稳定。但是输出里迁入 "\n" 修改提示词就很麻烦,至于原因看 “第3点”

["L": ["car", "car"],"x": [0.08,  0.85],"y": [0.55, 0.55],"w": [0.15, 0.15],"h": [0.08, 0.08],]

2、同样的prompt和tools描述在不同厂家AI模型返回的结果有差异,反复选择几个AI都适配的prompt

假设有3个待框选的对象,我希望每个为每个对象调用一次tools,同一个prompt模型A能调用多次prompt,模型B只调用一次,以至于我怀疑模型B不支持多次tools调用,修改tools description要求按照list/array方式传递

3、由于存在 “1” 所以 “2“ 单纯修改提示词,也不能保证持续执行

4、同一个厂家的大模型,模型A和模型B对tools的描述要求不一致、或者说tools兼容性能有差异,模型A能接受参数是json数值、模型B智能多维度参数

最后,希望是我阅读的手册不完全,没严格准寻tools的编写规则才触碰那么多坑。

END

来源:程序员写个解


版权归原作者所有,如有侵权,请联系删除
推荐阅读
嵌入式专用的AI代码审查Checklist
海思、瑞芯微、全志……说说这几家芯片的使用感受
退休三年又被请回来,这个印度人把PIC单片机卖了几百亿颗
→点关注,不迷路←