更新了一下PC主机

纠结了几天,升级了一下自己的PC主机,机器还是疫情前配的,现在确是有点慢,当然用还是能用。升级主要不是因为需要,是因为心里会爽。

第一个定下来的是显卡,3060->4090D,从打游戏的角度来看,4070Ti super就足够足够了。但是,为了心里比较爽。还是直接一步到位了,买了块丐中丐的4090D,12k不到一点。目前这个价格比4090划算一点,性能损失不大,反正对我来说都已经溢出的没法溢出了。

之前担心的4090显卡太大会压到450m主板的跳线这个情况没有发生。唯一会冲突的是主板底部的usb3.0接口接机箱前置usb口的线是会撞显卡风扇的,所以买了个90度转接头把主板上的usb口转了个方向。

为了升级显卡,之前的550瓦电源肯定不能用了,就又换了个1000瓦电源。这没啥好说的。

之前机器配的是Ryzen5 3500x,明显在打游戏的时候是瓶颈,博德之门3,CPU占用长期100%,所以也换掉了。考虑到换主板代价就有点太大了——换主板就直接新平台了,那内存也要换。等于重新配台机器。所以在450主板能够支持的CPU里面挑了个还凑活的5700x3D。其实最高能上5950,但是我对多核性能没有那么高要求,如果剪视频,我应该就会买5950了,而5800x3D当然很牛逼,但是现在价格炒上了天也没啥必要。综合下来,5700x3D算是折衷——主板刷个bios就能直接用,内存和散热都不用换。

当然这样的方案也有些问题,比如450主板不支持PCIE4.0,4090D只能跑在PCIE3.0*16上,性能损失5%左右。主板的供电也差一下,处理器的电压和温度都不如用550和x370芯片组的主板。但是这些都是小问题。

如果不是升级是全新装机, 我建议一步到位,直接新平台按预算买到最高。

最后上一下现在的配置

录了一套给小学生的python课程

今天更完了最后一集,做个记录吧,视频发在B站,https://space.bilibili.com/236087487/channel/collectiondetail?sid=2185480&ctype=0

这套视频配套的书是《教孩子学编程python语言版》,书有点老了,但是内容还可以,不过时。适合小学生学习,没有特别深入和枯燥的语法。所有内容都是基于一个个小的项目进行的。缺点就是没有太明确的体系。还是那句话,适合小学生学习,以激发兴趣为主。语法知识这些,到了初高中,找个靠谱的课程,一周也就学明白了。

录的比较仓促,也没完全照书讲,甚至连幻灯片都没做。不过自以为比目前各种忽悠小朋友考级的培训机构课还是要有意思一点。真要说问题的话,大概就是我自己的代码能力比较弱了。。。

Bard升级到Gemini了,但是不怎么样

谷歌开了个发布会,挺热闹的,早上试了下bard,确实升级到Gemini了,但是不是Ultra。

测了一下做题能力,直接给题目,没有任何引导和提示。对比一下bard和GPT-4的答案。

题目:

# [USACO1.5] 回文质数 Prime Palindromes

## 题目描述

因为 $151$ 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 $151$ 是回文质数。

写一个程序来找出范围 $[a,b] (5 \le a < b \le 100,000,000)$(一亿)间的所有回文质数。

## 输入格式

第一行输入两个正整数 $a$ 和 $b$。

## 输出格式

输出一个回文质数的列表,一行一个。

## 样例 #1

### 样例输入 #1

```
5 500
```

### 样例输出 #1

```
5
7
11
101
131
151
181
191
313
353
373
383
```

## 提示

Hint 1: Generate the palindromes and see if they are prime.

提示 1: 找出所有的回文数再判断它们是不是质数(素数).


Hint 2: Generate palindromes by combining digits properly. You might need more than one of the loops like below.

提示 2: 要产生正确的回文数,你可能需要几个像下面这样的循环。


题目翻译来自NOCOW。

USACO Training Section 1.5


产生长度为 $5$ 的回文数:

```cpp
for (d1 = 1; d1 <= 9; d1+=2) {    // 只有奇数才会是素数
     for (d2 = 0; d2 <= 9; d2++) {
         for (d3 = 0; d3 <= 9; d3++) {
           palindrome = 10000*d1 + 1000*d2 +100*d3 + 10*d2 + d1;//(处理回文数...)
         }
     }
 }

```

先看Bard的答案:(完整答案链接在这里https://g.co/bard/share/310082fb6c72)

#include <iostream>
using namespace std;

// 判断一个数是否是质数
bool isPrime(int n) {
    if (n <= 1) {
        return false;
    }
    for (int i = 2; i * i <= n; i++) {
        if (n % i == 0) {
            return false;
        }
    }
    return true;
}

// 生成长度为 n 的回文数
int generatePalindrome(int n) {
    int max_digit = 9;
    if (n % 2 == 0) {
        max_digit = 8;
    }
    int palindrome = 0;
    for (int i = max_digit; i >= 0; i--) {
        palindrome = palindrome * 10 + i;
    }
    return palindrome;
}

int main() {
    int a, b;
    cin >> a >> b;
    // 注意:这里只需要判断奇数,因为偶数一定不是质数
    for (int i = 3; i <= b; i += 2) {
        // 判断 i 是否是回文数
        int palindrome = generatePalindrome(i);
        if (i == palindrome && isPrime(palindrome)) {
            cout << palindrome << endl;
        }
    }
    return 0;
}

对题目的分析基本都对(可以看链接里面的文字),但是代码提交得0分。

再来看GPT 4的答案:https://chat.openai.com/share/f78d1596-90fe-4e33-9215-9a9a56086ed2

#include <iostream>
#include <cmath>
using namespace std;

bool isPrime(int n) {
    if (n <= 1) return false;
    if (n <= 3) return true;
    if (n % 2 == 0 || n % 3 == 0) return false;
    for (int i = 5; i * i <= n; i += 6) {
        if (n % i == 0 || n % (i + 2) == 0) return false;
    }
    return true;
}

int createPalindrome(int input, int b, bool isOdd) {
    int n = input;
    int palin = input;
    if (isOdd)
        n /= b;
    while (n > 0) {
        palin = palin * b + (n % b);
        n /= b;
    }
    return palin;
}

void generatePalindromes(int a, int b) {
    int number;
    for (int j = 0; j < 2; j++) {
        int i = 1;
        bool isOdd = (j % 2 == 0);
        while ((number = createPalindrome(i, 10, isOdd)) < b) {
            if (number >= a && isPrime(number)) {
                cout << number << endl;
            }
            i++;
        }
    }
}

int main() {
    int a, b;
    cin >> a >> b;
    generatePalindromes(a, b);
    return 0;
}

其实两者分析题目的结论都差不多,也都是对的,但是代码不一样。gpt得了55分

结论,都不太能打。

我让chatGPT(gpt4)做了一下CSP-J的题目,结果让人失望

今天让chatGPT做了两道2023年CSP-J的第二轮题目,比我想象的要差一些,CSP-J按道理说不是特别难的编程题目,我以为chatGPT能轻松拿下的。

第一题

[CSP-J 2023] 小苹果

题目描述

小 Y 的桌子上放着 $n$ 个苹果从左到右排成一列,编号为从 $1$ 到 $n$。

小苞是小 Y 的好朋友,每天她都会从中拿走一些苹果。

每天在拿的时候,小苞都是从左侧第 $1$ 个苹果开始、每隔 $2$ 个苹果拿走 $1$ 个苹果。随后小苞会将剩下的苹果按原先的顺序重新排成一列。

小苞想知道,多少天能拿完所有的苹果,而编号为 $n$ 的苹果是在第几天被拿走的?

输入格式

输入的第一行包含一个正整数 $n$,表示苹果的总数。

输出格式

输出一行包含两个正整数,两个整数之间由一个空格隔开,分别表示小苞拿走所有苹果所需的天数以及拿走编号为 $n$ 的苹果是在第几天。

chatGPT的基本解题过程如下:

先是给出了一个错误的题目理解

最后这个代码在洛谷的数据上测试,得了90分,最后一组测试数据因为数据太大内存超限了。

如果说这道题目是差强人意的话,第二道题目直接就蒙了,做了十几遍连示例数据都过不了。

[CSP-J 2023] 公路

题目描述

小苞准备开着车沿着公路自驾。

公路上一共有 $n$ 个站点,编号为从 $1$ 到 $n$。其中站点 $i$ 与站点 $i + 1$ 的距离为 $v_i$ 公里。

公路上每个站点都可以加油,编号为 $i$ 的站点一升油的价格为 $a_i$ 元,且每个站点只出售整数升的油。

小苞想从站点 $1$ 开车到站点 $n$,一开始小苞在站点 $1$ 且车的油箱是空的。已知车的油箱足够大,可以装下任意多的油,且每升油可以让车前进 $d$ 公里。问小苞从站点 $1$ 开到站点 $n$,至少要花多少钱加油?

输入格式

输入的第一行包含两个正整数 $n$ 和 $d$,分别表示公路上站点的数量和车每升油可以前进的距离。

输入的第二行包含 $n – 1$ 个正整数 $v_1, v_2\dots v_{n-1}$,分别表示站点间的距离。

输入的第三行包含 $n$ 个正整数 $a_1, a_2 \dots a_n$,分别表示在不同站点加油的价格。

输出格式

输出一行,仅包含一个正整数,表示从站点 $1$ 开到站点 $n$,小苞至少要花多少钱加油。

前面分析的有模有样

但是给出的代码无论是动态规划还是贪心算法都不对。测试了几轮之后,我让它直接用python写算法,因为我用的是code intepreter 模型,可以直接运行python代码。我提供测试数据,让它写完代码之后把测试数据带入程序自己看输出结果是否正确,然后它就陷入了死循环。

很努力的做不对

看来在给出更清晰的引导之前,它自己是没办法作出这道题目了。

10.31更新

CCF官方给出了数据,在新的官方数据的条件下,chatGPT4这次写出了这道题目,但是不确定是数据的关系比较大还是最近GPT-4被喂了比较多算法的关系比较大

题目的理解和分析:

这道题目的核心问题是找出从站点 1 开车到站点 ( n ) 的最低油费。每个站点 ( i ) 之间的距离是 ( v_i ) 公里,站点 ( i ) 的油价是 ( a_i ) 元/升。车的油箱足够大,每升油可以行驶 ( d ) 公里。

算法思路

  1. 初始化变量:
    • min_cost 为 0,用于记录最小油费。
    • current_fuel 为 0,表示当前油能行驶的距离。
    • cheapest_price_so_far 为 ( a_1 ),即第一个站点的油价。
  2. 遍历每个站点 ( i )(从 1 到 ( n-1 )):
    • 计算从站点 ( i ) 到站点 ( i+1 ) 所需的油量 needed_fuel(以距离表示)。
    • 如果 current_fuel 小于 needed_fuel,则需要在最便宜的油站加足够的油以到达站点 ( i+1 ),然后更新 min_costcurrent_fuel
    • 更新 cheapest_price_so_far 为 ( \min(cheapest_price_so_far, a_{i+1}) )。

时间复杂度

由于我们只遍历一次所有站点,算法的时间复杂度是 ( O(n) ),这在题目给定的数据范围内是可行的。

特点

这个解决方案的一个重要特点是它的贪婪性:在任何时候,我们总是选择当前最便宜的油站进行加油。这是因为,如果有更便宜的油站,那么在那里加油总是更优的。

这样的算法也适应了各种可能的特殊情况,例如一开始油价就很高但后来变便宜,或者油价在途中突然上升等。

希望这能清晰地解释这个问题和解决方案。如果你有其他问题或需要更多的细节,请随时问。

代码:

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    int n, d;
    cin >> n >> d;
    
    vector<int> v(n - 1);
    vector<int> a(n);
    
    for (int i = 0; i < n - 1; ++i) {
        cin >> v[i];
    }
    
    for (int i = 0; i < n; ++i) {
        cin >> a[i];
    }
    
    long long min_cost = 0;
    long long current_fuel = 0;  // Stored as distance the fuel can cover
    long long cheapest_price_so_far = a[0];
    
    for (int i = 0; i < n - 1; ++i) {
        long long needed_fuel = v[i];  // Needed fuel (converted to distance)
        
        // Add enough fuel to reach the next station (converted to distance)
        if (current_fuel < needed_fuel) {
            long long additional_fuel_needed = needed_fuel - current_fuel;
            long long liters_to_add = (additional_fuel_needed + d - 1) / d;  // Ceiling division
            min_cost += liters_to_add * cheapest_price_so_far;
            current_fuel += liters_to_add * d;  // Convert to distance
        }
        
        // Update the current fuel amount (converted to distance) and the cheapest price so far
        current_fuel -= needed_fuel;
        cheapest_price_so_far = min(cheapest_price_so_far, (long long)a[i + 1]);
    }
    
    cout << min_cost << endl;
    
    return 0;
}

面向prompt的编程

昨天试着想做个基于telegram bot的日程管理工具,就是在telegram上发一条消息给gpt,然后它就会提取里面的日程信息,然后通过google calendar的API写到我的日历里面去。

刚开始我尝试用metaGPT来写,消耗了大概$2的token,生成了一堆文件,但是代码不work……其实metaGPT把写代码部分去掉,只留需求分析,生成项目文档的功能,就挺好,可以做幻灯片唬人了。

于是还是用了旧办法,在chatGPT里面进行对话,一步一步引导chatGPT生成代码,并和它一起调试。

chatGPT做的google API使用的教程和代码非常清晰,一次性通过。

后续的代码也没有大问题,主要的时间都用在调试,GPT返回的日程时间信息不符合谷歌API的要求,有很多边缘情况要处理:时间没有明确的开始时间啊,上午下午,明天今天这些模糊时间怎么处理成谷歌要求的具体时间点啊。开始是用了一堆的判断来处理,后来换了个思路,直接把要求都写到和GPT沟通的prompt里面,并且给了一个返回的json格式模板,把这些判断的要求,如果怎么样就怎么样,都用自然语言写在prompt里面,一次性通过。目前demo完成了发送事件,脚本会自动处理并把事件写进谷歌日历的功能。

更进一步的,每天早上7点自动发当日日程提醒,日程写入有冲突的时候反馈给用户等待处理,这些都还没写。

主要是这种面向GPT的编程方式非常奇妙,体验感很强。

当然这个项目本身没什么太大意义,我还是建议直接用chatGPT + TimeNavi 插件来完成日程管理。自己做这个只是为了验证一些想法。

日程管理的几个尝试

暑假试了用obsidian进行日程管理,参考的是这篇文章。坚持了2个星期,但是效果很一般。就像之前用notion进行日程管理和记录,也遇到类似的问题:这些工具的理论都非常科学,但是使用的时候非常不自然,需要强迫自己按照这些工具的逻辑和哲学进行生活和工作,也要有非常大的强制力来进行记录,整理。或者说,使用工具本身需要的努力甚至超过了做这些事情需要的努力。

当然,我相信如果能够养成这样的习惯,对自己的日程安排,学习工作效率会有非常大的好处,但是这个习惯的养成难度太大了,太不自然了。

因此,我开始思考是否可以像之前博客中所述的日记系统一样,运用chatGPT来进行日程管理。我所需要做的就是用自然语言告诉它。这个过程基本上涉及了两个主要步骤:

1、对日记的pormpt进行了修改,增加了回顾前一天的待办事项列表,并根据今天的活动内容,找出哪些事情完成了,哪些事情没完成的功能;增加了把每天活动分成工作,学习,休闲等几类,并统计时间的功能。效果还不错

2、利用chatGPT+timenavi插件,可以把输入的事项自动写进google calendar。输入的时候只要用自然语言,开启对话后可以在手机端用语言输入。chatGPT理解的非常好。

然后,每天把完成的事情,要修改的事情都告诉它。晚上让它列出今天事项完成的情况。早上让它给出今天有哪些待办。

以周为单位可以避免对话过长,chatGPT丢失对话记忆或者出现幻觉。

不过暑假期间事情比较少,等到开学,可以把每周课表,会议提前输入进去,遇到换课,临时新增加的会议就可以看到它能不能很好的处理时间冲突的情况。

这个日记系统和周日程管理没办法放到同一个prompt里面,我担心对话多了会丢失记忆。如果以每天为单位进行管理,好像时间又过于碎片化了。后面使用中再进行调整吧。

目前比较缺的一个功能是对项目进行拆解,变成待办事项进行管理。这个纯靠prompt似乎不太好解决。但是prompt的对话式流程是最自然的,符合人的语言习惯,不用点任何设置啊,格式啊,只要说话就行了。符合我们认知里的“秘书”的角色。

用chatGPT写日记

项目fork自@onenewbite 的这个视频。在视频里他提供了prompt和ios的快捷操作。

根据我自己的使用习惯进行了一点修改,结合noteable插件,把每天的日记内容输入到noteable里面,储存和检索更方便。

我的prompt是这样的,比较简单:


Dear ChatGPT, 今天是 x年x月x日(日期每天更新). 我希望你能成为我的日记助手。我会在一天中写下我随机的想法和笔记。在一天结束时,我会请你:

  1. 收集我一天内的全部想法和笔记,根据这些内容写一个完整版的日记。这个新版本要有更好的格式和逻辑结构,更好的写作水平同时不改变我日记的原意。
  2. 总结日记中的关键要点
  3. 根据日记,对我生活做出的重要洞察并像一位心理专家/人生导师一样给出鼓励/安慰/分析/建议等
  4. 分析我的日记内容,创建一个可行的待办事项列表。请用第一人称写列表,并按照下面的JSON格式模板用中文创建列表:

{ "Task Name ": “Task Description”, }

Here is an example: { “Develop AI Tutoring System”: “I need to start developing my idea for a learning tutor system using ChatGPT.”, “Invest in Tesla”: “I need to review my investment plan for Tesla and decide whether to adjust it based on the recent market movement.” } 在今天结束时,在noteable的项目(此处为你在noteable中建立的日记项目地址) 中,建立一个笔记本,文件名是今天的日期。在笔记本中写入写入我今天的日记原始记录,你修改润色后的完整版日记,你总结关键要点,鼓励/安慰、分析、建议等和待办事项列表,你需要将内容写入多个cell中,每个cell不超过300字。 请注意: 在这一天里,无论我输入什么内容,你都只需要回复: “####” . 只有当我输入"Hi ChatGPT, 让我们结束今天的日记"时,你才开始执行我规定的任务.

非常感谢!


当对话开始之后,就可以像发推或者发朋友圈一样,想到啥就发给chatGPT,它会储存下来,等一天结束之后再进行总结。注意,由于chatGPT会用你的语料内容进行训练,所以不要发过于隐私的内容,以免泄漏。

对话开始之后,也可以在ios设备上用chatGPT app打开这个历史对话,用语音进行输入。

每天生产的笔记本是这样的

看到chatGPT对我每天做的事情各种花样吹捧,还是非常爽的。有助于第二天坚持继续做这些事情。

不过我的prompt目前有个小bug,输入完prompt之后chatGPT会立刻新建一个当天日期的笔记本,但是不会写入任何内容。到晚上需要写入内容时,早上建立的笔记本它已经没有权限写入了,只能再建立一个同名副本文件。其他运行的都挺好,生成的代办事项json可以用@onenewbite 视频里提供的将GPT-list加入待办事项的快捷方式,在ios上生成待办,如果不需要,也可以改成自己想要的格式。

这个prompt需要使用插件,也就是要GPT 4+插件系统。如果不用插件,那么用claude甚至chatGLM应该也都可以,效果可能略有差异。

死去的工业小镇,故乡和回忆

周末回了趟老家,算起来已经十年没回去过了。前几年是孩子还小,来回跑太折腾,都是老人过来住一段时间。我自己也没有回去的想法。疫情三年,老人也没来过,正好趁这个假期,回去看看父母。

路上其实没什么感觉,但是车子一开进小镇,回忆真的就像潮水一样涌了上来。我以为我忘了,其实并没有。当然,最主要的是,这个地方一点都没变。不是和十年前一样,是和我小时候一样!回忆起来的画面都是我小时候在这些街巷里面玩的画面。

这地方依山傍水,但是以前是几个水泥厂,靠开山炸石头烧水泥为生。我十几岁的时候,厂子就都倒了。从那以后,这地方就仿佛被冻结了时间,只是慢慢的颓败老去。

厂里当年的俱乐部
职工宿舍和狭窄的老街

带儿子往农村走了走,小时候经常路过的铁路已经荒废长草了。

工厂以前运原料的铁轨已经长草了
废弃的厂房

所有的东西,除了颓败,都还是我记忆里的样子。一边走一边和儿子说我小时候的事情,还挺奇妙的,有种时空交错在此刻的感觉。

一些观察:

老家的生活成本非常低,房子2-3万一套。蔬菜的话,农民早上刚摘的自己种的菜,空心菜,茄子都是一块钱一斤,愿意自己种的话,随便找块地就能自己种菜,不过我爸妈说自己种没有买的划算。鱼也便宜,花鲢这种水库养的鱼3-4块一斤,这几年河里面禁渔,野生的不太好买。猪肉12-13一斤,肋排贵点,22一斤。

生活成本低带来的另一个影响就是挣不到钱,农村里面大片水田都抛荒了,没有年轻人,没有人种地了。

聊聊抑郁症

昨天看到新闻,李玟因为抑郁症自杀去世了。非常感慨,就自己的经验稍微聊一下吧。

大概2019年冬天的时候,我确诊了抑郁和焦虑症,不过还好都是轻度的。当时主要症状是睡眠差,要么难以入睡,要么很早就醒,头痛,是不是心脏觉得不舒服,压力大的时候会有焦虑恐慌的感觉。去精神卫生中心查了一下,果然抑郁症了。吃了两周药,后来基本好了,也没再吃药。这几年还是偶尔会有焦虑恐慌发作的时候,但是基本没有抑郁症的症状了。

每个人抑郁的原因可能都是不一样的,抑郁症患者甚至都没法理解另一个患者抑郁的原因。最好的做法不是去开解一个你不了解的患者,而是送他去就医。抑郁症是一种疾病,需要吃药的。抑郁情绪是可以通过心理咨询,疏导缓解的,抑郁症不行,或者说抑郁症不能只通过心理咨询解决问题。

现在想想,我抑郁的可能原因是当时儿子正好比较小,带孩子耗费了非常多的精力和时间,自我剥夺感非常强——自己想做的事情完全没时间做,加上儿子小时候睡眠习惯差,每天半夜才睡,所以我长期处于睡眠缺少的状态。2019年那个学期工作压力又比较大,就导致了抑郁症的发作。当然这是我现在的一个推测,也可能就是我自己体质容易抑郁而已。

抑郁症最可怕的是,它会让人处于一个恶性循环状态:首先是丧失兴趣,无力感增加,对周围的一切都没兴趣,什么都不想做,觉得一切都没有意义。虽然我知道应该补充睡眠,应该出去运动,但是抑郁症的时候是没有能力去做这些事情的。药物其实就是切断了这个循环,让你能够去主动做一些事情,这时候如果配合心理咨询,运动之类的其他活动,就会把人带出那个恶性循环。至少对我来说,药效是立竿见影的。

然后运气比较好的是,紧跟着很快就疫情了。对,疫情对我个人来说是个契机。首先,网课那段时间,儿子不用去上学了,我不需要每天眼一睁就开始紧张,今天几点送他去学幼儿园,几点去接他。网课工作上少了非常多鸡毛蒜皮的破事儿,开会可以把电脑挂着,自己爱干啥干啥。早上也有时间去跑步了。整个来说,生活有种回到自己控制中的错觉。对当时的我来说,这个改变是非常重要的,那段时间我甚至买了PS4,打完了死亡搁浅,战神4等好几个游戏。

之后陆陆续续的复课,网课,抑郁情绪潮起潮落,时不时也会焦虑发作,但是抑郁症一直没有再出现。

直到魔都封城,让我觉得,我应该是好了。

前面说我抑郁可能的原因是自我被剥夺,发现人生和自己期望的差距太大,又无力去弥合这个差距。甚至你知道怎么做会有改变,但是你没有办法做,然后就更抑郁了。之前我开过玩笑,辞职、离婚和搬家,总有一个办法能暂时治好你的抑郁症。但是最终,要改变的其实只能是自己。

魔都封城属于一个重塑人生价值的重要事件,当你的所有存在意义都被打碎的时候,当“你好无价值毫无意义,你从来不曾拥有过自由和自我”这点被摆上台面的时候,所谓的自我剥夺,现实和理想的差距,就自然消失了。封城治好了我的精神内耗,这并不是在反讽。

所以现在我进入了奇怪的禅定状态,积极的运动,学习,练字,学吉他,学各种我想学的东西,但是又并不抱有期待,随时停下来不学也没啥问题。工作也不存在什么想不想,有啥就做啥,做的好不好随缘。可能这就是没有执念了吧,人生处于这种“随时可以去死也不会有什么未尽的遗憾“的状态。从理智上说,这应该不算正常,但是从个人体验上来说,还挺舒服的。

chatGLM也支持API调用了

chatGLM应该是开源的模型里面用起来最顺手的了,现在有了更进一步的chatGLM2-6B,比之前能力有更大提升https://github.com/THUDM/ChatGLM2-6B,硬件需求和之前差不多,3060跑起来还是很勉强。

不过chatGLM已经有了支持API调用的网络服务https://open.bigmodel.cn/,于是就可以和使用chatGPT一样用它了。注册无门槛,无须翻墙,能力我个人感觉比chatGPT差一些,但是用来上课演示什么的够用了,对中国教育者友好。

试了一下翻译英文:

chatGLM 130B

chatGPT 3.5

它的速度也很快,无论是网页上的playground还是调用API,同时也支持本地私有化部署。但是相比openAI的文档,bigmodel.cn的文档写的真的是语焉不详,我直接把它的示例代码扔给chatGPT给我重写了一个符合我要求的调用函数。