手动搭一个skill

正文

现在我要做一个“传入容器名然后去火焰图的api里获取火焰图链接”的效果:

因为skill的文件夹格式是比较固定的,所以先创建一个文件夹:

1
2
3
4
5
6
7
skill-create_flamegraph_task/
├── SKILL.md
├── references/
│ ├── FAQ.md
│ └── EXAMPLES.md
└── scripts/
└── create_task.py

其中 skill.md长这样:

1
2
3
4
---
name: create_flamegraph_task
description: "当用户传入一个pod名称的时候,去执行script/create_task.py生成火焰图,返回火焰图的html链接。"
---

skill.md的用途就是:

  1. 这个 skill 的目的是什么?(几句话)
  2. 何时应该使用这个 skill ?
  3. 实际中如何使用这个 skill ?(引用所有资源文件)
  4. 用祈使句,或者是类似“To extract parameters; To call the convert_date.py script; To return the result.”这样适合复杂逻辑的不定式。

然后再去create_task.py 就正常写逻辑就行,代码我就不放了。

整个效果如图:

写完之后,把这个文件夹打包成.zip形式,然后上传到ai平台里,流程这样:

1
Skill代码 → 打包成zip → 上传到AI平台 → 平台加载Skill → 用户通过Tika使用

然后就可以用起来了,甚至可以多个skill混搭使用,效果如图:

感想

  1. 首先感觉skill跟不同的脚本还是不同的,首先skill的运行模式太宽松了,而脚本对启动的参数还是有一定的要求的。其次对参数的格式限制用脚本写很难受,但是在skill里用中文在skill.md写一下就行了,效果也非常好。
  2. 目前ai还不能直接改你的skill内容,比如你skill的py里有一个常量,想从A变成B,你跟AI说改一下,ai做不到因为他没权限,还是需要你手动改好然后上传上去。
  3. 这俩skill里我硬编码了我账号的密钥,这代表我这个skill一旦上架skill market,别人随便用我的密钥,搞出了事儿然后让我背锅,为了解决这个问题要用到skill-sdk,不过我还没深入研究这块,或者把密钥改成常量。
  4. 如果你的代码里没有写并发,那么你传入多个参数,ai平台会串行的执行多次skill。
  5. 我公司的ai平台在运行这些skill的时候还是慢,我写过一个skill,就是大故障的时候,拉“故障找人地图”文档里的值班人以及对应的puo、安全等等20多号人进群,但是给ai下发命令后足足跑了2~3分钟,有这个时间我自己都拉完了。
  6. 回答一下文章开头的“为啥ai为啥不能当定时任务?”,因为ai没有状态(虽然他有上下文的能力),而且它每次调用有严格的时间限制,不能无法执行长时间运行的进程。所以它还是一个网页,说完话提交就OK。
感谢你请我喝咖啡~

Welcome to my other publishing channels