我们是如何对 PyTorch 发起供应链攻击的 (译文)

安全问题通常滞后于技术的普及,而人工智能 (AI) 领域亦是如此。

四个月前,我和 Adnan Khan 利用了 PyTorch 的一个严重 CI/CD 漏洞,PyTorch 是全球领先的机器学习平台之一。它不仅被谷歌、Meta、波音和洛克希德·马丁等行业巨擘所使用,也因此成为黑客和各国政府的重点攻击对象。

幸运的是,我们在不法分子之前发现并利用了这个漏洞。

接下来是我们的操作过程。

原文地址:PLAYING WITH FIRE – HOW WE EXECUTED A CRITICAL SUPPLY CHAIN ATTACK ON PYTORCH

阅读全文

C++ string 意外修改之深入理解 COW 写时复制

最近工作中有小伙伴遇到了一个奇怪的问题,C++中复制一个 string 后,更改复制后的内容,结果原值也被改了。对于不是很熟悉 C++ 的小伙伴来说,这就有点“见鬼”了。本文接下来从问题的简单复现,到背后的原理,以及 C++ 标准的变更,来一起深入讨论这个问题。

C++字符串修改副本影响到原来内容

阅读全文

跟 OpenAI 学写 ChatGPT API 的 Python SDK 库

ChatGPT 问世后,OpenAI 就开源了模型调用的 Python 库 openai-python。这个库功能十分齐全,封装了 OpenAI 对外公布的 API,使用起来也十分简单。

OpenAI-python 库的封装

这个库的第一个版本,实现了 ChatGPT 各种 API 的参数封装 Python 抽象类和调用方法,通过 requests 和 aiohttp 库来发送同步或者异步 HTTP 请求。整体来说,对外接口良好,很容易就会使用。并且整体源码实现有很好的逻辑抽象,用了很多 Python 高级特性,代码写的很漂亮,值得学习。但是从本质上讲,这还是 “API boy“ 的工作,更多是重复体力劳动,没有太多技术含量。

于是,OpenAI 在 2023 年 11 月,开始引入 Stainless,自此不用再手工编写 SDK 代码。每次只用提供 API 协议更新,然后就能自动生成代码,摆脱了重复体力劳动。具体是在 Pull 677 中引入新的代码,并且作为正式的 V1 版本发布。

阅读全文