Agent开发Tips

标准工具调用 工具名称要求 有的LLM会严格校验工具名称,所以工具名称最好是函数命名风格的, 大小写+数字+下划线,63个字符以内。 工具调用应该是成对出现 tips: 即一条rool=assistant消息,对应着一条role=tool消息 tool_call_id要对应 有的模型会要求tool_calls消息后,应该紧跟着结果消息 如果LLM返回的tool_calls解析报错,或者本地执行报错,都应该返回role=tool的结果消息,返回报错信息。有的LLM会严格要求 { "role": "assistant", "content": "老板~ 小米(01810.HK)的日线数据已经成功获取啦!(๑•̀ㅂ•́)و✧ 现在需要获取关键技术指标(如MACD、RSI、均线等)来进行趋势分析,我这就调用`mcp_tt.get_technical_indicators`工具获取最近60天的技术指标数据~", "tool_calls": [{ "id": "call_2lzdhh4w8t7j783xoam5f27t", "function": { "arguments": " {\"market\": \"HK\", \"stock_code\": \"01810.HK\", \"period\": 60}", "name": "mcp_tt.get_technical_indicators" }, "type": "function" }] }, { "role": "tool", "content": "{\"result\":{\"meta\":null,\"structuredContent\.....", "tool_call_id": "call_2lzdhh4w8t7j783xoam5f27t" } LLM可能会返回错误的工具调用 抓包分析,发现LLM返回了如下工具调用,其中有些奇怪的字符, 如]<|FunctionCallEnd|>. 下面是SSE合并后的结果,合并工具:OpenAI SSE Data Merger ...

December 22, 2025 · notsobad

PVE tips

换源 参考: https://github.com/xiangfeidexiaohuo/pve-diy/blob/master/pve.sh 命令 qm list qm config 103 #显示网桥信息 brctl show vmbr0 # 启用串口, 可以在宿主机上连接,而不必使用web qm stop 103 qm set 103 -serial0 socket qm config 103 | grep serial qm start 103 qm terminal 103

November 24, 2025 · notsobad

Nodejs Tips

编译cherry studio npm install -g corepack export ELECTRON_MIRROR="https://npmmirror.com/mirrors/electron/" export NODE_OPTIONS="--max-old-space-size=4096" export ELECTRON_CACHE=~/.cache/electron cd cherry-studio yarn dev yarn install yarn dev

July 1, 2025 · notsobad

Mcp Tips

最近研究了下MCP,一个比较混乱的技术,所有介绍MCP的文章都会讲到它的文档令人费解,我也折腾了很久。 第一次看MCP,我就想快速搞明白输入、输出,但是MCP的文档里很奇怪的一点不讲这一点,比如stdio方式运行的MCP, 是一个进程,那么它的输入是什么?输出是什么?如何交互,我能否观察他的输入输出?能否通过外部往这个进程写入? ...

June 20, 2025 · notsobad

Meshtastic

最近了解到了Meshtastic, 是一种基于Lora的点对点通信协议,于是就研究了下。 买的东西: 主板 电池,和选择的外壳有关 IPEX-1 转 SMA 连接线 天线,选择470MHz的,SMA内孔或者内针都行,需要转接到IPEX接头,和转接线配合即可 资料: https://meshcn.net/

June 19, 2025 · notsobad

Mac Os Tips

mac下,如何在命令行,停掉监听3000端口的程序 kill -9 $(lsof -ti:3000)

June 18, 2025 · notsobad

jq Tips

嵌套json 一个json中,有类似如下结构,内部有个字段是另一个json字符串,如何用jq打印那个output { "level": "info", "output": "{\"id\":\"chatcmpl-424\",\"choices\":[{\"message\":{\"content\":\"Hello\"}}]}" } 使用fromjson jq '.output | fromjson' your_file.json tail -1 relay.log|jq '.output|fromjson' # 访问json内部的字段 tail -1 relay.log|jq '.output|fromjson | .choices[0].message.content'

June 12, 2025 · notsobad

上海

五一期间去了上海玩,这是我第一次去上海,这么多年从来没有想过去上海,也是很奇怪。 家里小朋友一直念叨着要去看“磁浮悬列车”,这次就去了上海。 期间上海的天气很好,气温适宜,也没有下雨。上海的城市也很干净,街上垃圾桶很少,经常要好几个路口才能遇到一个。网约车似乎也比较新、干净一些。 ...

May 8, 2025 · notsobad

Python Datascience

Tips # 过滤某些列 df.loc[:, ['A', 'C']] # 过滤某些行、列 df.loc[0:1, ['A', 'C']] # 提取标量 df.at[3, 'C'] df.iloc[3] # 提取前3行,前两列 df.iloc[0:3, 0:2] # 提取1、2整行 df.iloc[1:3] df.iloc[1:3, :] # 第一行第一列 df.iloc[1, 1] df.iat[1, 1] # 相等过滤 df.E == 'test' df[df.E == 'test'] # 组合过滤 df[(df['len'] < 10) & (df['level_1'] == 'test')] # 打印series print("\t".join([k for k in df['content']])) # 是否在列表中 df.E.isin(['A', 'test']) # 按照level_1聚合,并计数 df3 = df.groupby(['level_1']).agg(count=('level_1', 'count')) # or df.groupby(['level_1'])size() # 分箱 bins = [0, 100, 1000, 10000] df3['bins'] = pd.cut(df3['count'], bins) df3['bins'].value_counts().sort_index()

March 11, 2025 · notsobad

RWKV Model

目前推荐使用ai00_server来运行,RWKV-Runner没跑起来。 hf上下载的.pth文件需要转换为.st文件,我使用converter一直失败,切换到python的convert_ai00.py可以用 可以使用BNF来指定输出格式,如json 不支持多卡推理 不支持CUDA,要使用Vulkan,Linux下要安装Vulkan驱动 界面Bug很多,不建议使用 参考链接: ...

February 12, 2025 · notsobad