如何计算 GPT 的 Tokens 数量?

news2024/10/6 6:03:29

基本介绍

随着人工智能大模型技术的迅速发展,一种创新的计费模式正在逐渐普及,即以“令牌”(Token)作为衡量使用成本的单位。那么,究竟什么是Token呢?

Token 是一种将自然语言文本转化为计算机可以理解的形式——词向量的手段。这个转化过程涉及对文本进行分词处理,将每个单词、汉字或字符转换为唯一的词向量表示。通过计算这些词向量在模型中的使用次数,服务提供商就能够量化用户所消耗的计算资源,并据此收取费用。

需要注意的是,不同的厂商可能采用不同的方式来定义和计算 Token。一般来说,一个 Token 可能代表一个汉字、一个英文单词,或者一个字符。

在大模型领域,通常情况下,服务商倾向于以千 Tokens(1K Tokens)为单位进行计费。用户可以通过购买一定数量的 Token 来支付模型训练和推理过程中产生的费用。
注意:Token的数量与使用模型的服务次数或数据处理量有关。一般是有梯度的,用得越多可以拿到越便宜的价格,和买东西的道理一样,零售一个价,批发一个价。

如何计算 Tokens 数量?

=======================

具体要怎么计算 Tokens 数量,这个需要官方提供计算方式,或提供接口,或提供源码。
这里以 openAI 的 GPT 为例,介绍 Tokens 的计算方式。

openAI 官方提供了两种计算方式:网页计算、接口计算。

网页计算


网页计算顾名思义,就是打开网页输入文字,然后直接计算结果,网页的链接是:https://platform.openai.com/tokenizer。
曾经看到一个粗略的说法:1 个 Token 大约相当于 4 个英文字符或 0.75 个英文单词;而一个汉字则大约需要 1.5 个 Token 来表示。真实性未知,但从个人经验,一个汉字似乎没有达到 1.5 个 Token 这么多。
随意举三个例子:

【例子1】以下十个汉字计算得到的 Token 数是 14 个。

一二三四五六七八九十

【例子2】以下 11 个汉字加2个标点计算得到的 Token 数是 13 个。

今天是十二月一日,星期五。

【例子3】以下 这段话计算得到的 Token 数是 236 个。

人工智能是智能学科重要的组成部分,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。人工智能从诞生以来,理论和技术日益成熟,应用领域也不断扩大,可以设想,未来人工智能带来的科技产品,将会是人类智慧的“容器”。人工智能可以对人的意识、思维的信息过程的模拟。人工智能不是人的智能,但能像人那样思考、也可能超过人的智能。

接口计算


接下来看看怎么使用 Python 接口实现 Token 计算。
相关链接:https://github.com/openai/openai-cookbook/blob/main/examples/How_to_count_tokens_with_tiktoken.ipynb

从 Note 中可以了解到,要计算 Tokens 需要安装两个第三方包:tiktokenopenai。第一个包不需要 GPT 的 API Key 和 API Secret 便可使用,第二个需要有 GPT 的 API Key 和 API Secret 才能使用,由于某些限制,还需要海外代理。
不过,好消息是openai可以不用,使用tiktoken来计算即可。

先安装tiktoken包:



pip install tiktoken  



注:我使用的是 Python 3.9,默认安装的tiktoken版本是 0.5.1。

安装好tiktoken之后,直接看最后两个 cell(In[14] 和 In[15])。

完整代码如下:

def num_tokens_from_messages(messages, model="gpt-3.5-turbo-0613"):  
    """Return the number of tokens used by a list of messages."""  
    try:  
        encoding = tiktoken.encoding_for_model(model)  
    except KeyError:  
        print("Warning: model not found. Using cl100k_base encoding.")  
        encoding = tiktoken.get_encoding("cl100k_base")  
    if model in {  
        "gpt-3.5-turbo-0613",  
        "gpt-3.5-turbo-16k-0613",  
        "gpt-4-0314",  
        "gpt-4-32k-0314",  
        "gpt-4-0613",  
        "gpt-4-32k-0613",  
    }:  
        tokens_per_message = 3  
        tokens_per_name = 1  
    elif model == "gpt-3.5-turbo-0301":  
        tokens_per_message = 4  # every message follows <|start|>{role/name}\n{content}<|end|>\n  
        tokens_per_name = -1  # if there's a name, the role is omitted  
    elif "gpt-3.5-turbo" in model:  
        print("Warning: gpt-3.5-turbo may update over time. Returning num tokens assuming gpt-3.5-turbo-0613.")  
        return num_tokens_from_messages(messages, model="gpt-3.5-turbo-0613")  
    elif "gpt-4" in model:  
        print("Warning: gpt-4 may update over time. Returning num tokens assuming gpt-4-0613.")  
        return num_tokens_from_messages(messages, model="gpt-4-0613")  
    else:  
        raise NotImplementedError(  
            f"""num_tokens_from_messages() is not implemented for model {model}. See https://github.com/openai/openai-python/blob/main/chatml.md for information on how messages are converted to tokens."""  
        )  
    num_tokens = 0  
    for message in messages:  
        num_tokens += tokens_per_message  
        for key, value in message.items():  
            num_tokens += len(encoding.encode(value))  
            if key == "name":  
                num_tokens += tokens_per_name  
    num_tokens += 3  # every reply is primed with <|start|>assistant<|message|>  
    return num_tokens  
# let's verify the function above matches the OpenAI API response  
  
import openai  
  
example_messages = [  
    {  
        "role": "system",  
        "content": "You are a helpful, pattern-following assistant that translates corporate jargon into plain English.",  
    },  
    {  
        "role": "system",  
        "name": "example_user",  
        "content": "New synergies will help drive top-line growth.",  
    },  
    {  
        "role": "system",  
        "name": "example_assistant",  
        "content": "Things working well together will increase revenue.",  
    },  
    {  
        "role": "system",  
        "name": "example_user",  
        "content": "Let's circle back when we have more bandwidth to touch base on opportunities for increased leverage.",  
    },  
    {  
        "role": "system",  
        "name": "example_assistant",  
        "content": "Let's talk later when we're less busy about how to do better.",  
    },  
    {  
        "role": "user",  
        "content": "This late pivot means we don't have time to boil the ocean for the client deliverable.",  
    },  
]  
  
for model in [  
    "gpt-3.5-turbo-0301",  
    "gpt-3.5-turbo-0613",  
    "gpt-3.5-turbo",  
    "gpt-4-0314",  
    "gpt-4-0613",  
    "gpt-4",  
    ]:  
    print(model)  
    # example token count from the function defined above  
    print(f"{num_tokens_from_messages(example_messages, model)} prompt tokens counted by num_tokens_from_messages().")  
    # example token count from the OpenAI API  
    response = openai.ChatCompletion.create(  
        model=model,  
        messages=example_messages,  
        temperature=0,  
        max_tokens=1,  # we're only counting input tokens here, so let's not waste tokens on the output  
    )  
    print(f'{response["usage"]["prompt_tokens"]} prompt tokens counted by the OpenAI API.')  
    print()  

接下来处理一下以上代码,把 In[15] 中,和openai包相关的内容可以直接注释掉,然后执行代码。处理之后,可直接执行代码如下:

import tiktoken  
def num_tokens_from_messages(messages, model="gpt-3.5-turbo-0613"):  
    """Return the number of tokens used by a list of messages."""  
    try:  
        encoding = tiktoken.encoding_for_model(model)  
    except KeyError:  
        print("Warning: model not found. Using cl100k_base encoding.")  
        encoding = tiktoken.get_encoding("cl100k_base")  
    if model in {  
        "gpt-3.5-turbo-0613",  
        "gpt-3.5-turbo-16k-0613",  
        "gpt-4-0314",  
        "gpt-4-32k-0314",  
        "gpt-4-0613",  
        "gpt-4-32k-0613",  
    }:  
        tokens_per_message = 3  
        tokens_per_name = 1  
    elif model == "gpt-3.5-turbo-0301":  
        tokens_per_message = 4  # every message follows <|start|>{role/name}\n{content}<|end|>\n  
        tokens_per_name = -1  # if there's a name, the role is omitted  
    elif "gpt-3.5-turbo" in model:  
        print("Warning: gpt-3.5-turbo may update over time. Returning num tokens assuming gpt-3.5-turbo-0613.")  
        return num_tokens_from_messages(messages, model="gpt-3.5-turbo-0613")  
    elif "gpt-4" in model:  
        print("Warning: gpt-4 may update over time. Returning num tokens assuming gpt-4-0613.")  
        return num_tokens_from_messages(messages, model="gpt-4-0613")  
    else:  
        raise NotImplementedError(  
            f"""num_tokens_from_messages() is not implemented for model {model}. See https://github.com/openai/openai-python/blob/main/chatml.md for information on how messages are converted to tokens."""  
        )  
    num_tokens = 0  
    for message in messages:  
        num_tokens += tokens_per_message  
        for key, value in message.items():  
            num_tokens += len(encoding.encode(value))  
            if key == "name":  
                num_tokens += tokens_per_name  
    num_tokens += 3  # every reply is primed with <|start|>assistant<|message|>  
    return num_tokens  
# let's verify the function above matches the OpenAI API response  
  
example_messages = [  
    {  
        "role": "system",  
        "content": "You are a helpful, pattern-following assistant that translates corporate jargon into plain English.",  
    },  
    {  
        "role": "system",  
        "name": "example_user",  
        "content": "New synergies will help drive top-line growth.",  
    },  
    {  
        "role": "system",  
        "name": "example_assistant",  
        "content": "Things working well together will increase revenue.",  
    },  
    {  
        "role": "system",  
        "name": "example_user",  
        "content": "Let's circle back when we have more bandwidth to touch base on opportunities for increased leverage.",  
    },  
    {  
        "role": "system",  
        "name": "example_assistant",  
        "content": "Let's talk later when we're less busy about how to do better.",  
    },  
    {  
        "role": "user",  
        "content": "This late pivot means we don't have time to boil the ocean for the client deliverable.",  
    },  
]  
  
for model in [  
    "gpt-3.5-turbo-0301",  
    "gpt-3.5-turbo-0613",  
    "gpt-3.5-turbo",  
    "gpt-4-0314",  
    "gpt-4-0613",  
    "gpt-4",  
    ]:  
    print(model)  
    # example token count from the function defined above  
    print(f"{num_tokens_from_messages(example_messages, model)} prompt tokens counted by num_tokens_from_messages().")  
    print()  

运行结果如下图:

小解析:

  • example_messages变量是一个列表,列表的元素是字典,这个是 GPT 的数据结构,在这个示例代码中,整个列表作为 GPT 的 prompt 输入,所以计算的是整个的 Token 数。

  • 不同的模型,对于 prompt 的计算规则有一点点不同,重点在于数据结构多出的字符。

问题1:实际生产中的数据,可能不是这样的,更多时候是存一个字符串,又该怎么处理?

demo 是从列表解析出键content的值,这个比较简单,如果是要从字符串中去解析相关的数据,则需要多加一步转化,使用json包将字符串转化为列表,然后其他的处理方式保持一致即可。
参考如下:

import tiktoken,json  
def num_tokens_from_messages(messages, model="gpt-3.5-turbo-0613"):  
    """Return the number of tokens used by a list of messages."""  
    try:  
        encoding = tiktoken.encoding_for_model(model)  
    except KeyError:  
        print("Warning: model not found. Using cl100k_base encoding.")  
        encoding = tiktoken.get_encoding("cl100k_base")  
    if model in {  
        "gpt-3.5-turbo-0613",  
        "gpt-3.5-turbo-16k-0613",  
        "gpt-4-0314",  
        "gpt-4-32k-0314",  
        "gpt-4-0613",  
        "gpt-4-32k-0613",  
    }:  
        tokens_per_message = 3  
        tokens_per_name = 1  
    elif model == "gpt-3.5-turbo-0301":  
        tokens_per_message = 4  # every message follows <|start|>{role/name}\n{content}<|end|>\n  
        tokens_per_name = -1  # if there's a name, the role is omitted  
    elif "gpt-3.5-turbo" in model:  
        print("Warning: gpt-3.5-turbo may update over time. Returning num tokens assuming gpt-3.5-turbo-0613.")  
        return num_tokens_from_messages(messages, model="gpt-3.5-turbo-0613")  
    elif "gpt-4" in model:  
        print("Warning: gpt-4 may update over time. Returning num tokens assuming gpt-4-0613.")  
        return num_tokens_from_messages(messages, model="gpt-4-0613")  
    else:  
        raise NotImplementedError(  
            f"""num_tokens_from_messages() is not implemented for model {model}. See https://github.com/openai/openai-python/blob/main/chatml.md for information on how messages are converted to tokens."""  
        )  
    # 结构转化,结构不完整则返回0  
    try:  
        messages = json.loads(messages)  
        num_tokens = 0  
        for message in messages:  
            num_tokens += tokens_per_message  
            for key, value in message.items():  
                num_tokens += len(encoding.encode(value))  
                if key == "name":  
                    num_tokens += tokens_per_name  
        num_tokens += 3  # every reply is primed with <|start|>assistant<|message|>  
    except json.JSONDecodeError:  
        num_tokens = 0  
    return num_tokens  
# let's verify the function above matches the OpenAI API response  
  
example_messages = [  
    {  
        "role": "system",  
        "content": "You are a helpful, pattern-following assistant that translates corporate jargon into plain English.",  
    },  
    {  
        "role": "system",  
        "name": "example_user",  
        "content": "New synergies will help drive top-line growth.",  
    },  
    {  
        "role": "system",  
        "name": "example_assistant",  
        "content": "Things working well together will increase revenue.",  
    },  
    {  
        "role": "system",  
        "name": "example_user",  
        "content": "Let's circle back when we have more bandwidth to touch base on opportunities for increased leverage.",  
    },  
    {  
        "role": "system",  
        "name": "example_assistant",  
        "content": "Let's talk later when we're less busy about how to do better.",  
    },  
    {  
        "role": "user",  
        "content": "This late pivot means we don't have time to boil the ocean for the client deliverable.",  
    },  
]  
example_messages = json.dumps(example_messages)  
  
# 假设使用的是 "gpt-4-0613" 模型  
model = "gpt-4-0613"  
print(f"{num_tokens_from_messages(example_messages, model)} prompt tokens counted by num_tokens_from_messages().")

问题2:在网页计算小节中使用的字符串跑出来的数据是否和tiktoken一样呢?

实现这个验证很简单,把上面的代码再做简化,直接计算字符串即可。参考逻辑如下:

import tiktoken  
  
def num_tokens_from_messages(messages, model="gpt-3.5-turbo-0613"):  
    """Return the number of tokens used by a list of messages."""  
    try:  
        encoding = tiktoken.encoding_for_model(model)  
    except KeyError:  
        print("Warning: model not found. Using cl100k_base encoding.")  
        encoding = tiktoken.get_encoding("cl100k_base")  
  
    num_tokens = len(encoding.encode(messages))  
    return num_tokens  
  
  
str1 = num_tokens_from_messages('一二三四五六七八九十')  
str2 = num_tokens_from_messages('今天是十二月一日,星期五。')  
str3 = num_tokens_from_messages('人工智能是智能学科重要的组成部分,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。人工智能从诞生以来,理论和技术日益成熟,应用领域也不断扩大,可以设想,未来人工智能带来的科技产品,将会是人类智慧的“容器”。人工智能可以对人的意识、思维的信息过程的模拟。人工智能不是人的智能,但能像人那样思考、也可能超过人的智能。')  
  
print(f'字符串1长度{str1},字符串2长度{str2},字符串3长度{str3}。')  

返回结果如下:

返回结果和网页计算的结果完全一致!

其实这个有点像是 GPT 给我们返回的文本数据,可以直接计算其长度,不需要像上面那么复杂,如果数据结构也是像上面一样,那就需要多加一步解析。

import tiktoken,json  
  
def num_tokens_from_messages(messages):  
    """Return the number of tokens used by a list of messages."""  
    try:  
        encoding = tiktoken.encoding_for_model(model)  
    except KeyError:  
        print("Warning: model not found. Using cl100k_base encoding.")  
        encoding = tiktoken.get_encoding("cl100k_base")  
  
    try:  
        messages = json.loads(messages)[0]['content']  
        num_tokens = len(encoding.encode(messages))  
    except json.JSONDecodeError:  
        num_tokens = 0  
    return num_tokens  
  
example_messages = '''[  
    {  
        "role": "system",  
        "content": "一二三四五六七八九十"  
    }  
]'''  
print(num_tokens_from_messages(example_messages))  

小结

=========

本文主要介绍了 GPT 如何计算 Tokens 的方法,官方提供了两种方式:网页计算和接口计算。
网页计算不需要技术,只需要魔法即可体验,而接口计算,事实上接口计算包含了两种方法,一种使用tiktoken,则需要点 Python 基础,而openai还需要点网络基础和货币基础,需要代理和 plus 账号(20刀/月)等。

参考链接:
网页计算链接:https://platform.openai.com/tokenizer 接口使用链接:https://github.com/openai/openai-cookbook/blob/main/examples/How_to_count_tokens_with_tiktoken.ipynb

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【成品设计】基于STM32的单相瞬时值反馈逆变器

《基于STM32的单相瞬时值反馈逆变器》 整体功能&#xff1a; 图13 软件框图 如图13所示&#xff0c;由于本设计中需要通过定时器中断执行一些程序&#xff0c;故首先对中断进行初始化。中断初始化以后即为对串口进行初始化&#xff0c;总共初始化了两个串口&#xff0c;第一个…

轻兔推荐 —— Alist

via&#xff1a;轻兔推荐 - https://app.lighttools.net/ 简介 Alist是一个开源自建网盘程序&#xff0c;界面简洁&#xff0c;功能完善&#xff0c;支持多种存储后端和文件预览功能。 - 分布式设计&#xff0c;无需中心服务器&#xff0c;数据均在本地设备 - 配置灵活&…

springboot整合sentinel接口熔断

背景 请求第三方接口或者慢接口需要增加熔断处理&#xff0c;避免因为慢接口qps过大导致应用大量工作线程陷入阻塞以至于其他正常接口都不可用&#xff0c;最近项目测试环境就因为一个查询的慢接口调用次数过多&#xff0c;导致前端整个首页都无法加载。 依赖下载 springboo…

「C/C++ 01」大小端字节序

目录 一、什么是大小端字节序&#xff1f; 二、为什么会出现大小端之分&#xff1f; 三、实际应用 四、如何区分当前机器是大端还是小端&#xff1f; 1. 用代码来区分 2. 通过VS编译器的监视窗口和内存窗口 一、什么是大小端字节序&#xff1f; 字节序 &#xff1a;是指二进制…

8. 文本三剑客之sed

文章目录 8.1 介绍8.1.1 工作流程8.1.2 命令格式 8.2 sed 使用8.2.1 查找/打印8.2.2 添加8.2.3 修改8.2.4 删除 8.3 保存操作后的内容 8.1 介绍 sed编辑器被称作流编辑器&#xff08; stream editor&#xff09;&#xff0c;和普通的交互式文本编辑器恰好相反。在交互式文本编…

win10打开共享设置

win10打开共享设置

themleaf 页面弹层取值

themleaf 页面弹层取值 创作背景themleaf页面事件onbluronclick 页面参数提交 创作背景 个人在日常开发中&#xff0c;遇到了一个需求页面&#xff0c;页面交互较多&#xff0c;用到的事件也很丰富&#xff0c;特此记录&#xff0c;方便后续查找也方便有需要的开发者采用&…

chrome浏览器设置--disable-web-security解决跨域

在开发人员于后台进行接口测试的时候&#xff0c;老是遇到跨域问题&#xff0c;这时前端总是会让后台添加跨域请求头来允许跨域请求&#xff0c;今天介绍一个简单的方法跨过这一步操作的设置。 –disable-web-security参数&#xff0c;禁用同源策略&#xff0c;利于开发人员本…

Postman 请求参数传递指南:Query、Path和Body

Postman 作为一个功能强大的工具&#xff0c;极大地简化了 API 测试和调试的过程&#xff0c;提供了发送请求和检查响应的直接方法。本文将着重介绍如何在 Postman 中高效地处理请求参数&#xff0c;以提高 API 测试和开发的便利性。 1、解析请求参数 首先&#xff0c;我们需要…

2024最值得入手的骨传导耳机有几款?年度精选五款骨传导耳机分享

作为一个爱好运动的人来说&#xff0c;现在天气越来越暖和了&#xff0c;很多人选择外出徒步、越野或者骑行。在运动过程中都会佩戴一些入耳式耳机&#xff0c;但是运动一段时间发现入耳式耳机带久了耳朵会很不舒服&#xff0c;而且出汗了的话对于一些不防水的入耳式耳机的话&a…

硕思LOGO设计师软件最新版下载及详细安装教程

硕思Logo设计师是一款操作灵活简单&#xff0c;且功能强大的logo制作软件。它可以通过简单的点击就可以为网站、博客、论坛和邮件创建专业的logo、条幅、按钮、标题、图标和签名等。 该软件提供了很多精心设计的模板和丰富的资源&#xff0c;为更好的创建logo艺术作品&#xff…

博物馆藏品管理的重要性

博物馆是人们了解历史文化、传承文明的重要场所。而博物馆的藏品管理是博物馆的核心工作之一&#xff0c;对于展现博物馆的魅力、吸引观众的眼球有着至关重要的影响。并且博物馆藏品管理是一项复杂且专业的工作&#xff0c;它涉及到多个方面&#xff0c;包括但不限于藏品的收集…

DDPM公式推导(一)

去噪扩散概率模型 Title:Denoising Diffusion Probabilistic Models paper是UC Berkeley发表在NIPS 2020的工作 paper地址 Abstract 我们使用扩散概率模型&#xff08;一类受非平衡热力学启发的潜在变量模型&#xff09;展示了高质量的图像合成结果。根据扩散概率模型与采用La…

AI大模型的应用远比你想像的要简单—人人都是程序员

2022年底OpenAI发布了语言大模型chatgpt3.5&#xff0c;它能像人一样跟我们聊天&#xff0c;从此AI市场着了大火&#xff0c;国内外各个顶级科技公司纷纷跟进&#xff0c;出现了一大批的AI大模型&#xff0c;比如文心一言&#xff08;百度&#xff09;、Gemini&#xff08;谷歌…

Python 使用print输出二进制文件时产生的错位

项目实践中&#xff0c; with open(fileName, rb) as f: result f.read()print(result)f.close()打开二进制文件&#xff0c;打印出的结果会出现有些\x后面有好几个字符的情况 但实际这串数字是 这种情况是因为print函数将二进制数据解释为字符串并以其字节值的十六进制表…

中电金信:GienTech动态|中标、入选、参会...近期精彩呈现!

中电金信参编业内首个银行核心系统分级度量标准 2024年6月6日&#xff0c;由中国信息通信研究院云计算与大数据研究所主办的“应用现代化赋能银行核心系统升级”交流会议在京召开。会议发布了业内首个银行核心系统分级度量标准《银行核心系统现代化建设水平度量模型》&#xf…

视频字幕提取工具怎么使用?不妨看看这些教程

在探索学习设备使用的过程中&#xff0c;视频教程扮演着极其重要的角色。 但是&#xff0c;我们可能会遇到一些挑战&#xff0c;比如长视频教程的观看效率不高&#xff0c;信息量大难以快速定位到关键点&#xff0c;或者有些人更喜欢阅读文字而非观看视频来学习。 为解决这一…

前沿重器[49] | 聊聊搜索系统2:常见架构

前沿重器 栏目主要给大家分享各种大厂、顶会的论文和分享&#xff0c;从中抽取关键精华的部分和大家分享&#xff0c;和大家一起把握前沿技术。具体介绍&#xff1a;仓颉专项&#xff1a;飞机大炮我都会&#xff0c;利器心法我还有。&#xff08;算起来&#xff0c;专项启动已经…

GPT4,你能做什么详细告诉我可以么?

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

三个pdf工具和浏览软件(pdftk,muppdf,epdfview)

安装pdftk pdftk是一款功能强大的PDF处理工具&#xff0c;主要用于对PDF文件进行各种操作。它提供了丰富的功能&#xff0c;包括但不限于合并、拆分、旋转、加密、解密、添加水印、从PDF文档中解出附件等。pdftk分为图形界面版本和命令行版本&#xff0c;适用于不同的用户需求…