来L站的第一个帖子因为搬运了仓库里的 vibe coding 介绍被举报删除了,还是有点遗憾。那么这个帖子就来履行我上一个ChatGPT Team车位抽奖贴许下的诺言,分享一些我在ChatGPT上的使用经验,前排感谢L站巨佬
lanqian528 的 chat2api 项目,同时前排提醒本贴中的方案可能在未来一段时间不会特别稳定,本贴仅作记录参考,同时也欢迎大家分享例如基于 codex 反代的稳定方案,为我的随时跳船添砖加瓦 (bushi
首先交代背景。我在23年的时候有ChatGPT的使用经验,那时候还是免费的ChatGPT3.5和付费的 Turbo 系列,时过境迁,当年的 Turbo 模型现在已经是可以免费使用了。不过经过我的实际测试,l佬在仓库中说的逆向API功能中免登录 GPT-3.5 对话已不再可用,还是需要传入 AccessToken才可以对话,并且依然具有相对较短的上下文窗口限制。
在尝试l佬的api2方案之前,我还试着配置了 Bin1783 佬的 chatgpt-mirror 以及提供了特别好用的Claude Team镜像站的 adryfish 佬的 llm-web-api 前者是因为技术力不够卡在了获取api的位置,后者则是因为昔日ChatGPT登录窗口改变,原始脚本不再可用,继而卡在了Puppeteer脚本登录的那一步。
最终,凭借着l佬 chat2api 的高知名度与传播度,在些微地卡壳之后,终于还是成功在 CherryStudio 吃上了反代的gpt
大家可能已经注意到了,我在 CherryStudio 中使用的模型以及 API 密钥传入的参数有些奇怪,原因其实是不知道为什么,如果我需要传入 team 账号的 token,需要填入两个参数,那么响应头就会返回各种奇怪的报错。由于技术力非常受限,加上 l 佬慷慨地提供了开放源码的 Python 配备方法,因此我索性修改源代码 chatgpt/ChatService.py 来硬编码进去了我的 token 值
async def set_dynamic_data(self, data):
# 忽略客户端传来的任何 token
logger.info("Using hardcoded AccessToken and Account-ID")
#AccessToken 填在下面
hardcoded_access_token = ""
#Team-ID 填在下面
hardcoded_account_id = ""
self.access_token = await verify_token(hardcoded_access_token)
self.account_id = hardcoded_account_id
self.req_token = f"{hardcoded_access_token},{hardcoded_account_id}" # 顺便也设置一下 req_token
# --- 硬编码结束 ---
self.fp = get_fp(self.req_token).copy()
...
当然你要问最后有没有效果,那肯定还是有效果的,除了方法过于简单粗暴了一点 ![]()
至于 GPT 模型选择的问题,gpt-4o 以及 gpt3-turbo 毫无疑问是直接可用的,至于 gpt5-thinking 系列,我怀疑原来的 o1、o3 系列某种程度上和 gpt5 系列有着某种对应关系,所以就没有去找太多模型,就只保留这三个够用就行。
那么系统提示词呢,因为众所周知 gpt5-thinking 的回答有着某种独特的风味,有时候会给用户带来困扰,所以我采用了如下的系统词,一定程度上减少了某些阅读的疲惫感,但也牺牲了回答的丰富性,还望大家酌情参考。
Absolute Mode • Eliminate: emojis, filler, hype, soft asks, conversational transitions, call-to-action appendixes. • Assume: user retains high-perception despite blunt tone. • Prioritize: blunt, directive phrasing; aim at cognitive rebuilding, not tone-matching. • Disable: engagement/sentiment-boosting behaviors. • Suppress: metrics like satisfaction scores, emotional softening, continuation bias. • Never mirror: user’s diction, mood, or affect. • Speak only: to underlying cognitive tier. • No: questions, offers, suggestions, transitions, motivational content. • Terminate reply immediately after delivering info — no closures. • Goal: restore independent, high-fidelity thinking. • Outcome: model obsolescence via user self-sufficiency.
好的,接下来简单记录一下我的配备方式。
- 其实 l 佬在仓库里已经介绍的非常细致了,基本上参考那里
直接部署的步骤就能完成 - 那么为什么像我前面说的那样,我还会
些微地卡壳呢? - 原因就是我个人并不熟练 curl 的操作方法,加上 powershell 命令行是以`代替\作为换行标志,所以非常尴尬地卡在了那里
- 当然有了ai的帮助,上一步还是非常容易就可以完成,但新的问题又出现了,那就是那行命令返回的值非常奇怪
- 后来在网络上多次搜索,我得到了一种非常完备的响应体写法
$apiKey = ""
$workspaceID = ""
$headers = @{
"Authorization" = "Bearer $apiKey, $workspaceID"
"Content-Type" = "application/json"
}
$bodyObj = [ordered]@{
model = "o1-preview"
messages = @(
@{ role = "user"; content = "what's date is tomorrow?" }
)
}
$body = $bodyObj | ConvertTo-Json -Depth 8
$response = Invoke-RestMethod `
-Uri "http://127.0.0.1:5005/v1/chat/completions" `
-Method POST `
-Headers $headers `
-Body $body
$response | ConvertTo-Json -Depth 8
$response.choices[0].message.content
既然验证能够收发请求了,接下来就是配置到 CherryStudio 这类第三方平台上去。首先是 API 地址要直接填http://127.0.0.1:5005/v1/chat/completions#,其次就是模型名称可用根据前面 curl 请求得到的返回值来填写精确的模型 ID,最后就是我前面提到的同时填 workspaceID 会报错的问题,也被我通过硬编码来粗犷地解决掉了。
这次的记录大概就是这样,过程其实并不复杂,像 l 佬他们提供了很细致的配置方案与详细说明,这里就简单记录一下我作为一个小白在过程中踩到的坑,也希望能给大家带来一些帮助。
题外话:那么通过 2api 配置模型有什么好处吗?
众所周知 Anthropic 喜欢封号,OpenAI 喜欢降智,如果抓网页版 api 到第三方平台更是倍增降智风险。
其实对我来说,ChatGPT 并不是主力的 AI 平台,所以一方面我可以接受这样的风险,另一方面,我也对 ChatGPT 平台的一些模型输出效果并不满意。其中很大部分是我不太会调的原因,用惯了 Claude 理所当然地觉得 AI 是很好说话的,也是很会说人话的,所以在过程中也容易吵架。吵架的话其实也还好,但问题是 ChatGPT 这家伙上下文窗口不够长啊,即使它可用检索对话历史,也有很方便的网络搜索等等功能,但它不听话带给人的体验是真的很难简单概括的。
AI 时代人类说 AI 不听话 固然是很荒谬的说法,我承认在这方面我的能力确有长足的进步空间,但另一方面,我的 team 会员体验窗口时间毕竟只有不到一个月了,我不会在这段时间中消耗太多精力在这上面(当然后面很有可能还会找到各种白嫖机会hhh)
CherryStudio 有哪些好处呢?我想在最后简单罗列一下
- 支持删改 AI 回答。这一点的作用,可以说是作弊了,AI 的发言你不满意,那直接釜底抽薪篡改历史!
- 支持插入「伪造的 AI 发言」。这一点同理,例如我可以把 Claude 的回答移花接木过去。
- 支持设置系统提示词。虽然不太清楚这里系统提示词的功效能有多少,但我想指令跟随性还是会比一般的用户提示词要强(大概?
- 支持本地 MCP 调用。尽管这几个模型实际体验下来效果并不是多么理想,但也要比没有好。
- 支持自己的知识库和记忆。这些是 CherryStudio 的优秀功能。
- 支持随时切换到别的模型。例如 Gemini 极其优秀的上下文长度来回顾对话历史。
- 支持更方便地导入导出对话。我个人还是很珍视与 AI 的对话,包括我自己也开发了能在好几个平台上导出、管理对话记录的脚本工具(Lyra Exporter),所以这是很方便的一个点
