当前位置: 首页 > news >正文

小试牛刀调整Prompt,优化Token消耗

262f84645106b2d037ba4a3dbeedc672.jpeg

在上一篇文章 荒腔走板Mac电脑本地部署 LLM 中介绍过本地部署大模型之后,可以通过定制 prompt 来实现 domain 提取等各种各样的需求。

但是实际上,部署本地大模型 这种方式对于个人开发者来说实在是不太友好。一方面需要投入大量资金确保设备的算力足够支撑LLM的训练和推理;另一方面本地部署的大模型的量级都不会太大,所以效果也不会太理想。

对于个人开发者来说,想开发一个 AI  应用,最快的方式就是集成某个大模型平台 API。这种情况下,所有的成本主要体现在 Token  花费。以下是各大 LLM 平台的 Token 价格:

通义千问

2c6ce7453e5cdfecee4d05dbc1651fc2.png

智普

9bdfda3f97fd568bad9f6d7ec6aadb81.png

百度文心Ernie

5c17e493dfb5db45fd83962f14999ba9.png

月之暗面 Kimi

6dd4ed0eb26cb98101385fcc5a007008.png

谷歌 Gemini

54d712139af2998c00ef8875079b0d78.png

Claude

925cd0de0d23654a2ad18cd834d31470.png

接下来我将使用通义千问平台实现一个伪需求,来看下具体的 Token 使用情况。

实际上各个平台都提供了一定量的免费Token,之所以采用通义千问,是因为通义千问相对便宜。

daa11af63ee58d3a734e27f1288f446d.gif

通义千问实现展览馆搜索

我将实现的伪需求是:列举某个城市的3个展览馆,并分别介绍每一个展览馆的一些藏品。

返回JSON格式

通过定制 Prompt,可以让大模型返回固定格式的数据,一种常用的格式就是 JSON。 Prompt 如下:

e305dff37e049014859f12f2bf0ae054.png

具体代码如下:

c21490446fde1988790ff148f1a1bdf5.png

返回结果如下图:

4045c9daeef9af2609beb08bd4359b9e.png

很明显,通义千问大模型返回的结果是符合我们需求的。但是请求时间使用了将近 17s,并且一次性消耗了 543 个 Token。1百万的Token量只能支持访问 1000000/543 = 1841 次请求。 

假设你开发的大模型应用比较受大众欢迎,有1000个日活用户,每个用户每天会请求10次请求。那你每天的 Token 消耗计算公式如下:

1000用户 * 10次请求 * 单次请求Token 543 = 5430000个

作为一名合格的穷人,一定要节约使用 Token。如何优化 prompt,尽量在不损失准确率的基础上,减少 token 的使用量,显得尤为重要。

精简 JSON 格式

在基于JSON格式的基础上,进行格式精简并删除非必要内容。在之前 Prompt 基础上新增如下内容:

c4b6bbd1e2ed47ca10c2e9c376e74e92.png

可以看出,Prompt新增了一行 "使用精简模式的JSON,删除一切不必要的空格和换行符号"。

具体修改代码如下:

45e54c88cbe75cc3f640edd6677e1d71.png

运行上述代码,最终返回结果如下:

090bfadd6ff7bda8bf3f6b0d354b0c39.png

明显可以看出性能有明显提升:推理耗时优化到8s,并且 Token 消耗也减少到393个。

使用自定义格式

实际上就算是精简后的JSON格式,依然是一种比较复杂的数据格式。我们可以通过自定义一种简单,进一步减少大模型推理的耗时以及Token使用。

比如以下格式:

4e472a296966f842e018031be21cc01e.png

上图中我们自定义的格式相比于JSON格式,虽然可读性很差,但是对于高性能的机器来说不算一件难事。我用 ! 符号代表一个JSON的Object,用 ? 符号代表一个字符串,最后用 # 符号代表数组对象。

具体修改代码如下:

8a1b9fcda8c7b48493fdb7fda2e75919.png

最终运行结果如下图:

f89ef25ad536c4458179432df98172df.png

通过自定义数据格式,到模型推理的时间和Token消耗被进一步优化。

Prompt Engineering 是一个不断持续优化的过程,但是也是有一些基本规则的。后面文章会尝试梳理如何写一个完善 Prompt 的基本准则。

f099f5d40af34143a5a6c77b87b7ff5f.gif

如果你喜欢本文

长按二维码关注

79fa291029eaaae72d036bc616bb2080.gif

23735b6a7674e0fb346684391753b0d0.jpeg

相关文章:

小试牛刀调整Prompt,优化Token消耗

在上一篇文章 荒腔走板Mac电脑本地部署 LLM 中介绍过本地部署大模型之后,可以通过定制 prompt 来实现 domain 提取等各种各样的需求。 但是实际上,部署本地大模型 这种方式对于个人开发者来说实在是不太友好。一方面需要投入大量资金确保设备的算力足够支…...

snippets router pinia axios mock

文章目录 补充VS Code 代码片段注册自定义组件vue routerpinia删除vite创建项目时默认的文件axiosmock3.0.x版本的 viteMockServe 补充 为文章做补充:https://blog.csdn.net/yavlgloss/article/details/140063387 VS Code 代码片段 为当前项目创建 Snippets {&quo…...

Visual Studio2019调试DLL

1、编写好DLL代码之后,对DLL项目的属性进行设置,选择待注入的DLL,如下图所示 2、生成DLL文件 3、将DLL设置为启动项目之后,按F5启动调试。弹出选择注入的exe的界面之后,使用代码注入器注入步骤2中生成的dll&#xff0…...

深入解析:Docker 容器如何实现文件系统与资源的多维隔离?

目录 一、RootFs1. Docker 镜像与文件系统层2. RootFs 与容器隔离的意义 二、Linux Namespace1. 进程命名空间1.1 lsns 命令说明1.2 查看“祖先进程”命名空间1.3 查看当前用户进程命名空间 2. 容器进程命名空间2.1 查看容器进程命名空间列表2.2 容器进程命名空间的具体体现 三…...

vue项目中打包后的地址加载不出图片【五种解决方案】

在 Vue 项目中打包后,加载图片路径可能会出现问题,主要是因为打包后的路径与开发时的路径不同。为了确保图片可以正确加载,你可以考虑以下几种方法: 1. 使用 require 或 import 动态加载图片 如果你在 Vue 的模板或者脚本中引用…...

讯飞星火大模型将超越chatgpt?

讯飞星火大模型真的能超越ChatGPT吗? 在人工智能的世界里,新技术层出不穷,而科大讯飞最近发布的讯飞星火大模型3.0引发了不少讨论。有些人甚至大胆猜测:这个模型是否能够在某些方面超越如今广受欢迎的ChatGPT?今天,我们就来深入探讨一下这个话题,分析讯飞星火大模型3.0…...

3D Vision--计算点到平面的距离

写在前面 本文内容 计算点到平面的距离 平台/环境 python open3d 转载请注明出处: https://blog.csdn.net/qq_41102371/article/details/121482246 目录 写在前面准备Open3D代码完 准备Open3D pip install open3d代码 import open3d as o3ddef compute_points2…...

《开源与合作:驱动鸿蒙Next系统中人工智能技术创新发展的双引擎》

在当今科技飞速发展的时代,鸿蒙Next系统作为一款具有创新性和前瞻性的操作系统,为人工智能技术的发展提供了广阔的舞台。而开源和合作则是推动鸿蒙Next系统中人工智能技术创新和发展的两大关键引擎。 开源:创新的源泉 代码共享与知识传播&am…...

Java 高级工程师面试高频题:JVM+Redis+ 并发 + 算法 + 框架

前言 在过 2 个月即将进入 3 月了,然而面对今年的大环境而言,跳槽成功的难度比往年高了很多,很明显的感受就是:对于今年的 java 开发朋友跳槽面试,无论一面还是二面,都开始考验一个 Java 程序员的技术功底…...

【机器学习】嘿马机器学习(科学计算库)第11篇:Pandas,学习目标【附代码文档】

本教程的知识点为:机器学习(常用科学计算库的使用)基础定位 机器学习概述 机器学习概述 1.5 机器学习算法分类 1 监督学习 机器学习概述 1.7 Azure机器学习模型搭建实验 Azure平台简介 Matplotlib 3.2 基础绘图功能 — 以折线图为例 1 完善原…...

WordPress Fancy Product Designer插件Sql注入漏洞复现(CVE-2024-51818)(附脚本)

免责申明: 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 0x0…...

StarRocks强大的实时数据分析

代码仓库:https://github.com/StarRocks/starrocks?tabreadme-ov-file StarRocks | A High-Performance Analytical Database 快速开始:StarRocks | StarRocks StarRocks 是一款高性能分析型数据仓库,使用向量化、MPP 架构、CBO、智能物化…...

Linux(Centos 7.6)命令详解:iconv

1.命令作用 将给定文件的编码从一种编码转换为另一种编码(Convert encoding of given files from one encoding to another) 2.命令语法 Usage: iconv [OPTION...] [FILE...] 3.参数详解 OPTION: 输入/输出格式规范: -f, --from-codeNAME,原始文本编码-t, --t…...

SpringBoot读取配置优先级顺序是什么?

Spring Boot外部化配置详解 目录 引言Spring Boot外部化配置概述配置加载优先级配置加载顺序详解实际案例总结 引言 Spring Boot因其“开箱即用”的特性,极大地简化了Java应用的开发和部署过程。它通过外部化配置机制,允许开发者根据不同的环境&#x…...

VScode连接远程Linux服务器环境配置

一、安装vscode 下载链接:Visual Studio Code - Code Editing. Redefined,点击下载安装即可 安装: 双击安装 选择安装位置,一直点击下一步即可 二、环境配置 1.中文汉化包 2.安装remote-ssh,用于远程连接 2.1安装 2…...

梯度下降法 (Gradient Descent) 算法详解及案例分析

梯度下降法 (Gradient Descent) 算法详解及案例分析 目录 梯度下降法 (Gradient Descent) 算法详解及案例分析1. 引言2. 梯度下降法 (Gradient Descent) 算法原理2.1 基本概念2.2 算法步骤2.3 梯度下降法的变种3. 梯度下降法的优势与局限性3.1 优势3.2 局限性4. 案例分析4.1 案…...

docker 部署 java 项目详解

在平常的开发工作中,我们经常需要部署项目,开发测试完成后,最关键的一步就是部署。今天我们以若依项目为例,总结下部署项目的整体流程。简单来说,第一步:安装项目所需的中间件;第二步&#xff1…...

npm install 报错:Command failed: git checkout 2.2.0-c

[TOC](npm install 报错:Command failed: git checkout 2.2.0-c) npm install 报错:Command failed: git checkout 2.2.0-c export NODE_HOME/usr/local/node-v14.14.0-linux-x64 npm config set registry https://registry.npmmirror.com 使用如上环…...

Vue基础(2)

19、组件之间传递数据 组件与组件之间不是完全独立的&#xff0c;而是有交集的&#xff0c;那就是组件与组 件之间是可以传递数据的 传递数据的解决方案就是 props ComponentA.vue <template><!-- 使用ComponentB组件&#xff0c;并传递title属性 --><h3>…...

(长期更新)《零基础入门 ArcGIS(ArcScene) 》实验七----城市三维建模与分析(超超超详细!!!)

城市三维建模与分析 三维城市模型已经成为一种非常普遍的地理空间数据资源,成为城市的必需品,对城市能化管理至关重要。语义信息丰富的三维城市模型可以有效实现不同领域数据与IS相信息的高层次集成及互操作,从而在城市规划、环境模拟、应急响应和辅助决策等众多领域公挥作用、…...

C++ ODB ORM 实战指南

好的&#xff0c;这是一份关于在 C 中使用 ODB ORM 的指南&#xff0c;涵盖从基础概念到实际应用的各个方面。 1. ODB ORM 简介 对象关系映射 (ORM) 是一种编程技术&#xff0c;用于在面向对象的编程语言&#xff08;如 C&#xff09;和关系型数据库之间建立映射关系。它允许开…...

基于GA - XGBoost的时间序列预测:抑制过拟合与参数优化

基于遗传算法优化算法优化XGBoost(GA-XGBoost)的时间序列预测 GA-XGBoost时间序列 采用交叉验证抑制过拟合问题 优化参数为迭代次数、最大深度和学习率 matlab代码&#xff0c;注&#xff1a;暂无Matlab版本要求 -- 推荐 2016B 版本及以上 注&#xff1a;采用 XGBoost 工具箱&a…...

Vivado Design Suite中BUFG优化策略与实战技巧

1. 理解BUFG的核心作用与设计痛点 在FPGA设计中&#xff0c;时钟信号就像人体神经系统中的电脉冲&#xff0c;需要快速、准确地传递到每个功能单元。BUFG&#xff08;全局时钟缓冲器&#xff09;就是Xilinx器件中专用的"信号放大器"&#xff0c;它能将时钟信号分配到…...

别再手动拼URL了!Spring Cloud项目里用OpenFeign调用其他服务,保姆级配置避坑指南

别再手动拼URL了&#xff01;Spring Cloud项目里用OpenFeign调用其他服务&#xff0c;保姆级配置避坑指南 微服务架构下&#xff0c;服务间的HTTP调用是家常便饭。很多开发者还在用RestTemplate手动拼接URL、处理序列化&#xff0c;不仅代码冗长&#xff0c;还容易出错。想象一…...

5分钟上手Vane容器化部署:从零搭建隐私优先的AI搜索引擎

5分钟上手Vane容器化部署&#xff1a;从零搭建隐私优先的AI搜索引擎 【免费下载链接】Vane Vane is an AI-powered answering engine. 项目地址: https://gitcode.com/GitHub_Trending/pe/Vane 想要在5分钟内搭建一个功能强大的AI搜索引擎吗&#xff1f;Vane是一个专注于…...

Conda环境回滚实战:当安装新包搞崩base环境时如何一键恢复

Conda环境回滚实战&#xff1a;当安装新包搞崩base环境时如何一键恢复 在Python开发中&#xff0c;conda作为包管理和环境管理的利器&#xff0c;几乎成为数据科学家的标配工具。但越是频繁使用conda&#xff0c;越容易遇到一个令人头疼的问题——在base环境中安装新包后&#…...

YOLOv5+Swin-Tiny实战:在自定义数据集上提升小目标检测精度的完整流程

YOLOv5与Swin-Tiny融合实战&#xff1a;工业级小目标检测优化指南 在无人机巡检、遥感监测和工业质检等场景中&#xff0c;小目标检测一直是计算机视觉领域的棘手挑战。传统卷积神经网络(CNN)在处理这类任务时&#xff0c;往往难以兼顾感受野与计算效率的平衡。本文将带您探索如…...

EasyAnimateV5-7b-zh-InP在AI艺术创作中的算法优化实践

EasyAnimateV5-7b-zh-InP在AI艺术创作中的算法优化实践 1. 引言 作为一名数字艺术创作者&#xff0c;我一直在寻找能够提升创作效率和质量的技术工具。最近在尝试使用EasyAnimateV5-7b-zh-InP进行艺术创作时&#xff0c;发现这个模型在图像到视频的转换方面表现出色&#xff…...

新手入门福音:用快马AI生成你的第一个Python版游戏账号管理工具

作为一个刚接触Python编程的新手&#xff0c;最近想尝试开发一个简单的游戏账号管理工具。这个需求其实挺常见的&#xff0c;比如我平时玩多个游戏&#xff0c;账号密码经常记混&#xff0c;如果能有个小工具统一管理就方便多了。在朋友的推荐下&#xff0c;我尝试用InsCode(快…...

IIS请求筛选规则实战:手把手教你用‘拒绝字符串’精准拦截SQL注入和恶意爬虫

IIS请求筛选规则实战&#xff1a;构建精准防御体系的完整指南 当你的网站遭遇SQL注入攻击时&#xff0c;服务器日志里那些可疑的 OR 11--字符串是否让你夜不能寐&#xff1f;面对每天数十万次的恶意爬虫扫描&#xff0c;是否觉得传统的防火墙规则力不从心&#xff1f;IIS的请求…...