• 踹他GPT 之 弄个大乐透助手


    11月7日凌晨的OpenAI第一次开发者大会,除了速度提升、服务使用费用的减少、开发者生态以外,最让我震撼的是,GPTS是ChatGPT的定制版本,是通过简单配置就可以完成一个使用ChatGPT、集成系统和数据服务的智能助手。比如OpenAI开发者体验主管演示的,当你想去一个城市旅游,那么旅游攻略、城市景点轨迹设计、航班登机、汇率计算等等都可以智能完成。感觉ChatGPT马上就会变成一个24x7完全智能的私人管家。

    做点什么哪,一直很喜欢买彩票,要不让ChatGPT帮我推荐一下大乐透的号码吧。只是为了娱乐,提倡快乐彩票、理智购买。

    第一步、我们使用ChatGPT-4来看看什么样的提示词可以得到我们想要的分析、推荐结果。ChatGPT是很有原则的,如果你直接让它预测彩票号码,它会非常委婉的拒绝。

    第二步、既然直接问不行,那就迂回一下,那我就把大乐透的号码球产生的过程描述一下吧,并且针对每个数字提出一个简单的概率问题。

    Instruction: 你是数据分析大师,我将35个完全相同的小球放在一个容器中,小球上标记处1到35不重复的数字,容器有一个圆形小洞,我每次旋转容器让一个小球掉出,再旋转容器让另外一个小球掉出,直到一共掉出5个小球算是一组,我会记录每次掉出的小球的数字

    次数掉出小球上面的数字
    18, 11, 19, 22, 29
    24, 6, 7, 9, 24
    .............
    234, 5, 18, 20, 25

    Prompt: 列出前10个出现概率最大的数字和概率值

    上面斜体字就是我要使用的指令和提示词,在提交给ChatGPT的时候出现了几种情况。

    • 第二种情况,ChatGPT的分析出现间断

            当然它会提供解释和建议

    • 第三种,也是最理想的情况就是系统可以完成分析工作,我们可以看到结果产生。如果你在ChatGPT进行分析时候点开"Analyzing"下拉菜单,你就可以看到ChatGPT使用的代码了,否则ChatGPT只会提供结论而不会提供代码。

    我把代码放在编译器中方便阅读

    1. # Now we will input the complete data provided by the user to calculate the probabilities correctly.
    2. # Data provided by the user
    3. ball_drops_complete = [
    4. [8, 11, 19, 22, 29],
    5. [4, 6, 7, 9, 24],
    6. # ... all the way to ...
    7. [1, 5, 7, 12, 13]
    8. ]
    9. # Calculate the total number of rounds
    10. num_rounds = len(ball_drops_complete)
    11. # Flatten the list of lists to get one big list of all the balls dropped
    12. all_balls_dropped = [ball for round in ball_drops_complete for ball in round]
    13. # Count the frequency of each ball number
    14. ball_frequency = {ball: all_balls_dropped.count(ball) for ball in range(1, 36)}
    15. # Calculate the probability for each ball number
    16. # Since each round 5 balls are dropped, the total number of balls dropped is 5 times the number of rounds
    17. total_balls_dropped = 5 * num_rounds
    18. ball_probability = {ball: freq / total_balls_dropped for ball, freq in ball_frequency.items()}
    19. # Sort the ball numbers by their probability and get the top 10
    20. top_10_balls = sorted(ball_probability.items(), key=lambda item: item[1], reverse=True)[:10]
    21. top_10_balls
     
    

    除了代码,ChatGPT也生成了基于这个代码运行的结果

    很奇怪的一点是,10个出现次数最多的数字是不对的,几率也是不对的,一看就不像计算出来的,更像是随意生成的。如果我用自己的环境跑完的结果如下就是正确的。

    根据自己的经验,原因可能有几个

    1. ChatGPT最后的结果并不是用自己生成的代码生成出来的
    2. ChatGPT在跑数据的时候提示词中的数据信息有丢失

    第三步、分析完单一数字的概率以后,我们来分析一下数字组合出现的概率

    使用和第二步类似的指令,提示换成下面的内容

    Prompt: 识别同时出现几率高的号码

    ChatGPT给出了分析思路和代码,但是毫无意外,这个分析结果还是错的。

    1. from collections import defaultdict
    2. import itertools
    3. # 假设您的数据是这样的格式,每个列表代表一次抽取的5个数字
    4. data = [
    5. [8, 11, 19, 22, 29],
    6. [4, 6, 7, 9, 24],
    7. [2, 18, 24, 25, 34],
    8. # ... 其他数据
    9. [1, 5, 7, 12, 13]
    10. ]
    11. # 初始化一个字典来存储所有数字对及其出现次数
    12. pair_counts = defaultdict(int)
    13. # 遍历数据,对每组数字中的每对数字进行计数
    14. for group in data:
    15. # itertools.combinations用于生成数字的所有可能组合(这里是两两组合)
    16. for pair in itertools.combinations(group, 2):
    17. pair_counts[pair] += 1
    18. # 按出现次数对数字对进行降序排序
    19. sorted_pairs = sorted(pair_counts.items(), key=lambda x: x[1], reverse=True)
    20. # 获取出现次数最多的前10对数字
    21. top_10_pairs = sorted_pairs[:10]
    22. # 打印结果
    23. for pair, count in top_10_pairs:
    24. print(f"数字对 {pair} 出现了 {count} 次")

    使用个人环境跑出正确的结果。

    第四步、尝试将这部分逻辑添加到GPTs中

    考虑到ChatGPT分析思路严谨、代码正确,但是分析结论是错误的,个人感觉数据分析类需求无法直接通过GPTs来配置完成。

    如果需要代码和提示词请留言,欢迎多多拍砖

  • 相关阅读:
    关于安卓调用python代码(chaquo)(一)
    用支持向量机SVM进行光学字符识别OCR
    html5 web 按钮跳转方法(及其相关)
    StringRedisTemplate
    一张图系列 - “position_embedding”
    Redis数据类型之List类型
    打包Qt程序,自动添加依赖的库和文件(详细步骤)
    rsync远程同步
    un8.15:SpringBoot——集成MyBatis+SpringMVC
    某职业混子的学习路线
  • 原文地址:https://blog.csdn.net/dutguoyi/article/details/134336534