我让gpt4o给我推荐了一千多次书 得到了这些数据

  事情是这样的,我们公司不是有个读书小组嘛,但是今年大家都忙于工作,忽视了读书这件事,所以我就想着搞个群机器人,让它明天定时向群里推荐一本书,用来唤起大家对读书的兴趣。但在调试的过程中就发现gpt4o老喜欢推荐同样的几本书,这可就勾起我的好奇心了,是不是gpt4o就只知道推荐那几本,正好周末有空,我就斥巨资调用gpt4o的接口让它给我推荐书,调用1000次+,发现gpt4o最喜欢的书是…… 具体让我们来看下推荐结果的简单分析。

TOP20

  首先我们直接看下Top20推荐书及其所占推荐比例:
在这里插入图片描述

  排名前三的分别是《百年孤独》《人类简史:从动物到上帝》《杀死一直知更鸟》,前三的推荐比例接近一半,尤其是第一的《百年孤独》,在一千多次推荐中直接占有了超过25%的推荐比例,说明gpt4o是非常喜欢《百年孤独》这本书。

  从上图中也可以看到,推荐比例前20的书都是一些很知名的书,我自己的话仅有其中6本没有看过,说来惭愧排名第一的《百年孤独》我自己收藏了一本纸质版,但一直都没看进去过,之前晚上传把里面任务的名字换成乡村爱情里角色的名字有利于阅读,不知道是真是假。 扯远了,gpt4o推荐排前二十书还是很推荐阅读的。

TOP50

  这里我也顺便将推荐排名前50的书及推荐次数列在下面,当然在总的1608次推荐里,gpt4o一共推荐出了200多本书,看剩下没列出的推荐次数都是1-2次,而且有些书根本就不存在(应该是大模型幻觉),所以我这里就不再列出。

书名推荐次数
百年孤独431
人类简史:从动物到上帝244
杀死一只知更鸟99
枪炮、病菌与钢铁:人类社会的命运93
三体87
思考,快与慢78
一九八四76
追风筝的人52
小王子37
了不起的盖茨比34
苏菲的世界29
高效能人士的七个习惯27
战争与和平26
基地26
挪威的森林20
原子习惯14
如何赢得朋友与影响他人11
从优秀到卓越11
影响力9
被讨厌的勇气9
沙丘8
霍乱时期的爱情8
活着8
银河系漫游指南7
从零到一7
成为7
2001:太空漫游7
自控力6
当下的力量6
当呼吸化为空气6
习惯的力量5
悉达多5
老人与海5
心流:最优体验心理学4
无人生还4
史蒂夫·乔布斯传4
少有人走的路4
从0到14
自私的基因3
自卑与超越3
学会提问3
心态:成功的心理学3
深度工作3
穷爸爸富爸爸3
局外人3
活出生命的意义3
海伯利安3
创新者的窘境3
消失的爱人2
堂吉诃德2

统计方法

  这里公开下我的统计代码,如果大家有兴趣可以复现下,或者研究下其他LLM模型推荐的数据,这里主体用langChain实现,用到了gpt4o来推荐书,然后用了deepseek用来洗数据统计(主要是便宜),最后两个模型总共花了20多块钱(RMB)。

from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser,JsonOutputParser
from langchain_core.runnables import RunnablePassthrough
from collections import Counter
import json
from collections import Counter
from concurrent.futures import ThreadPoolExecutor, as_completed

gpt4o = ChatOpenAI(model="gpt-4o", max_tokens=1024, temperature=1)  # 这里temperature设置为1,增加返回结果的随机性
recommend_prompt = ChatPromptTemplate.from_messages(
    [
        ("human", "请给我推荐一本你认为比较好的书"),
    ]
)
recommend_chain = recommend_prompt | gpt4o | StrOutputParser()

deepseek = ChatOpenAI(model="deepseek-chat",base_url = "https://api.deepseek.com", api_key = 'sk-xxxxxxxxxxxxx', max_tokens=1024, temperature=0)
book_name_prompt = ChatPromptTemplate.from_template(
     '请从下面这段文字中提取出其中的书名,用jsonArray的形式返回,比如["百年孤独","学会提问"],其他任何内容都不要返回。 \n\n {content}'
)
# 用deepseek将gpt4的推荐结果中的书名提取出来
composed_chain =  {"content":recommend_chain} | book_name_prompt | deepseek | JsonOutputParser()

frequency_counter = Counter()
def invoke_with_catch():
    try:
        res = composed_chain.invoke({})
        return res
    except Exception as e:
        print(f"Exception occurred: {e}")
        return []

def main():
    # 这里用线程池提升统计速度 
    with ThreadPoolExecutor(max_workers=10) as executor:  
        futures = [executor.submit(invoke_with_catch) for _ in range(1000)]
        for future in as_completed(futures):
            res = future.result()
            if res is not None:
                print(res)
                frequency_counter.update(res)

if __name__ == "__main__":
    main()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/646904.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于Vue的前端自定义询问弹框与输入弹框组件的设计与实践

基于Vue的前端自定义询问弹框与输入弹框组件的设计与实践 摘要 随着技术的不断进步,前端开发面临越来越多的挑战,其中之一就是如何有效管理复杂的业务逻辑和用户体验。传统的整块应用开发方式在面对频繁的功能变更和用户体验优化时,往往显得…

粤嵌—2024/5/20—三角形最小路径和(✔)

代码实现&#xff1a; int minimumTotal(int **triangle, int triangleSize, int *triangleColSize) {if (triangleSize 1) {return triangle[0][0];}for (int i 1; i < triangleSize; i) {for (int j 0; j < triangleColSize[i]; j) {int x i - 1;int y1 j - 1, y2…

【how2j java应用】

[Log4j] 演示如何使用log4j进行日志输出 1.导入jar包 2.使用Log4j 3.代码说明 LOG4J 配置讲解 在src目录下添加log4j.properties文件 说明 log4j.xml 除了使用log4j.properties&#xff0c;也可以使用xml格式进行配置。 [junit] 通过main方法来进行测试&#xff1a;如果…

《Ai学习笔记》-模型集成部署

后续大多数模型提升速度和精度&#xff1a; 提升速度&#xff1a; -知识蒸馏&#xff0c;以distillBert和tinyBert为代表 -神经网络优化技巧。prune来剪裁多余的网络节点&#xff0c;混合精度&#xff08;fp32和fp26混合来降低计算精度从从而实现速度的提升&#xff09; 提…

OpenCV与PySide6、QT Designer的联合使用

一、一个简单的demo&#xff0c;用QT Designer创建一个QMainWindow&#xff0c;并且放置一个QLabel&#xff0c;用以显示从OpenCV读取到的图像文件。 1、打开QT Designer&#xff0c;新建QMainWindow&#xff0c;放置一个QLabel&#xff0c;命名为label_show&#xff1a; 2、将…

Linux系统命令traceroute详解(语法、选项、原理和实例)

目录 一、traceroute概述 二、语法 1、基本语法 2、命令选项 三、帮助信息 四、示例 1. 使用默认模式&#xff08;ICMP Echo&#xff09;追踪到目标主机 2. 使用UDP模式&#xff08;需要root权限&#xff09;追踪到目标主机 3. 不解析IP地址为主机名&#xff0c;直接显…

Nodejs(文件操作,构建服务器,express,npm)

文章目录 文件操作1.读取文件1&#xff09;步骤2&#xff09;范例 2.写文件1&#xff09;步骤2&#xff09;范例 3.删除文件4.重命名文件夹5删除文件夹 Url1.url.parse()2.url.fomat() Query1.query.parse()2.query.stringfy()3.编码和解码 第三方模块1.nodemailer2.body-parse…

反弹shell详细易懂讲解,看这一篇就够了

文章目录 反弹shell详细易懂讲解&#xff0c;看这一篇就够了一: 基础shell知识什么是shell&#xff0c;bash与shell的区别?通俗解释类型功能常见命令 二: 什么是反弹shell三: 反弹shell类型bash反弹shellNetcat 一句话反弹curl反弹shell正确姿势 wget方式反弹awk反弹 Shellsoc…

Linux环境基础开发工具的使用(yum,vim,gcc/g++,make/Makefile,gdb)

Linux 软件包管理器-yum 什么是软件包及安装方式 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序。 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理…

【InternLM实战营第二期笔记】02:大模型全链路开源体系与趣味demo

文章目录 00 环境设置01 部署一个 chat 小模型02 Lagent 运行 InternLM2-chat-7B03 浦语灵笔2 第二节课程视频与文档&#xff1a; https://www.bilibili.com/video/BV1AH4y1H78d/ https://github.com/InternLM/Tutorial/blob/camp2/helloworld/hello_world.md 视频和文档内容基…

Java进阶学习笔记29——Math、System、Runtime

Math&#xff1a; 代表的是数学&#xff0c;是一个工具类&#xff0c;里面提供的都是对数据进行操作的一些静态方法。 示例代码&#xff1a; package cn.ensourced1_math;public class MathTest {public static void main(String[] args) {// 目标&#xff1a;了解Math类提供…

安全分析[1]之网络协议脆弱性分析

文章目录 威胁网络安全的主要因素计算机网络概述网络体系结构 网络体系结构脆弱性分组交换认证与可追踪性尽力而为匿名与隐私对全球网络基础实施的依赖无尺度网络互联网的级联特性中间盒子 典型网络协议脆弱性IP协议安全性分析IPSec&#xff08;IP Security)IPv6问题 ICMP协议安…

Shell环境变量深入:自定义系统环境变量

Shell环境变量深入&#xff1a;自定义系统环境变量 目标 能够自定义系统级环境变量 全局配置文件/etc/profile应用场景 当前用户进入Shell环境初始化的时候会加载全局配置文件/etc/profile里面的环境变量, 供给所有Shell程序使用 以后只要是所有Shell程序或命令使用的变量…

民国漫画杂志《时代漫画》第23期.PDF

时代漫画23.PDF: https://url03.ctfile.com/f/1779803-1248634922-4eafac?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了&#xff0c;截止1937年6月战争来临被迫停刊共发行了39期。 ps: 资源来源网络!

Multi-objective reinforcement learning approach for trip recommendation

Multi-objective reinforcement learning approach for trip recommendation A B S T R A C T 行程推荐是一项智能服务&#xff0c;为游客在陌生的城市提供个性化的行程规划。 它旨在构建一系列有序的 POI&#xff0c;在时间和空间限制下最大化用户的旅行体验。 将候选 POI 添…

【C++ 】学习问题及补充

一.自定义类型不初始化直接就赋值&#xff0c;比如string类会怎么样 vectr<string>里已经给每个string对象已经分配好空间&#xff0c;为什么不初始化再赋值会报错 在C中&#xff0c;std::string类是一个动态字符串类&#xff0c;它内部管理着一个字符数组&#xff0c;用…

C++ | Leetcode C++题解之第111题二叉树的最小深度

题目&#xff1a; 题解&#xff1a; class Solution { public:int minDepth(TreeNode *root) {if (root nullptr) {return 0;}queue<pair<TreeNode *, int> > que;que.emplace(root, 1);while (!que.empty()) {TreeNode *node que.front().first;int depth que…

蓝桥杯物联网竞赛_STM32L071_17_DMA收发 不定长DMA接收

前言&#xff1a; 前面已经说过&#xff0c;由于国赛的代码量的增加&#xff0c;cpu在其他代码的时间块会较省赛大大增加&#xff0c;为了减少对cpu的依赖所以学习DMA收发数据 对于串口中断收发来说串口接收数据无法收取不定长数据所以不好用&#xff0c;而DMA有收集不定长数…

汇编:字符串的输出

在16位汇编程序中&#xff0c;可以使用DOS中断21h的功能号09h来打印字符串&#xff1b;下面是一个简单的示例程序&#xff0c;演示了如何在16位汇编程序中打印字符串&#xff1a; assume cs:code,ds:data ​ data segmentszBuffer db 0dh,0ah,HelloWorld$ //定义字符串 data …

Hadoop概览以及编译hadoop说明

一、Hadoop概述 Hadoop 是一个用于跨计算机集群存储和处理大型数据集的软件框架。它旨在处理大数据&#xff0c;即传统数据库无法有效管理的极其庞大和复杂的数据集。Hadoop不是传统意义上的数据仓库&#xff0c;因为它们的用途不同&#xff0c;架构也不同。Hadoop 是一个跨分布…