LangChain: Reduce size of tokens being passed to OpenAI

news2024/11/15 18:51:05

题意:在使用 LangChain时,需要减少传递给OpenAI的令牌(tokens)的数量

问题背景:

I am using LangChain to create embeddings and then ask a question to those embeddings like so:

我正在使用 LangChain 来创建嵌入表示(embeddings),然后像这样向这些嵌入表示提出问题:

embeddings: OpenAIEmbeddings = OpenAIEmbeddings(disallowed_special=())
db = DeepLake(
    dataset_path=deeplake_url,
    read_only=True,
    embedding_function=embeddings,
)
retriever: VectorStoreRetriever = db.as_retriever()
model = ChatOpenAI(model_name="gpt-3.5-turbo") 
qa = ConversationalRetrievalChain.from_llm(model, retriever=retriever)
result = qa({"question": question, "chat_history": chat_history})

But I am getting the following error:       

但是我得到了以下的错误:

File "/xxxxx/openai/api_requestor.py", line 763, in _interpret_response_line
    raise self.handle_error_response(
openai.error.InvalidRequestError: This model's maximum context length is 4097 tokens. However, your messages resulted in 13918 tokens. Please reduce the length of the messages.

The chat_history is empty and the question is quite small.

“聊天历史是空的,而且问题相当简短。”

How can I reduce the size of tokens being passed to OpenAI?

我如何减少传递给OpenAI的令牌数量?

I'm assuming the response from the embeddings is too large being passed to openai. It might be easy enough to just figure out how to truncate the data being sent to openai.

我假设传递给OpenAI的嵌入表示响应太大。可能很容易就能找到如何截断发送给OpenAI的数据的方法。

问题解决:

Summary        概述

When you initiate the ConversationalRetrievalChain object, pass in a max_tokens_limit amount.

当你初始化ConversationalRetrievalChain对象时,传入一个max_tokens_limit的数量

qa = ConversationalRetrievalChain.from_llm(
        model, retriever=retriever, max_tokens_limit=4000
    )

This will automatically truncate the tokens when asking openai / your llm.

这将在向OpenAI/你的大语言模型(LLM)提问时自动截断令牌。

Longer explainer        更详细的说明

In the base.py of ConversationalRetrievalChain there is a function that is called when asking your question to deeplake/openai:

ConversationalRetrievalChainbase.py文件中,有一个函数,当你向deeplake/openai提问时会被调用。

    def _get_docs(self, question: str, inputs: Dict[str, Any]) -> List[Document]:
        docs = self.retriever.get_relevant_documents(question)
        return self._reduce_tokens_below_limit(docs)

Which reads from the deeplake vector database, and adds that as context to your doc's text that you upload to openai.

它从deeplake向量数据库中读取数据,并将这些数据作为上下文添加到你上传到openai的文档文本中。

The _reduce_tokens_below_limit reads from the class instance variable max_tokens_limit to truncate the size of the input docs.

_reduce_tokens_below_limit 函数从类实例变量 max_tokens_limit 中读取值,以截断输入文档的大小。

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

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

相关文章

记录|To run this application, you must install .NET Core.【C#,VS】

目录 前言一、问题描述二、解决办法三、.NET版本和Windows版本对接更新时间 前言 参考文章: 1、安装失败,提示“To run this application,you must install .netcore…” 2、【bug】to run this application ,you must install .net 3、在 Windows 上安装…

【亲测管用】Windows11 部署Maxkb + 本地Ollama

一、下载地址 maxkb:https://maxkb.cn/ ollama: https://ollama.com/download/windows 二、安装ollama 2.1 默认安装 直接install就好,默认是安装到C盘里面的。 安装好之后会显示在 直接打开cmd黑窗口,输入命令即可查看。 2.2 ollama…

什么牌子的洗地机好用?石头、添可、希亦真实使用测评对比!

随着科技的不断进步,许多人已经更新了家中的清洁工具。在挑选时,大家可能会看到很多网络攻略,但看得越多,反而越难抉择。其实,最直接的方法是看看这些工具的真实使用体验,这样就能大概知道自己使用时的感受…

5G 网络切片

5G 业务分类 增强型移动宽带(eMBB) 传统数据业务,特点是高带宽超高可靠性低时延业务(URLLC)无人驾驶、工业自动化等业务, 特点是高可靠、低时延海量机器类通信(mMTC) 物联网,特点是大量连接,时延不敏感,数…

练习2.19

先上代码吧。 (defn first-denomination [coin-values](first coin-values))(defn no-more? [coin-values](if (empty? coin-values) truefalse))(defn except-first-denomination [coin-values ](rest coin-values ))(defn cc[amount coin-values](cond ( amount 0) 1(or (…

ChatGPTAI指令提示工程案例

一、AI指令提示工程概述 AI指令提示工程(AI Prompt Engineering)是指通过设计巧妙的提示词(Prompt)来引导人工智能模型,特别是像ChatGPT这样的自然语言处理模型,生成符合用户需求的回答。这一过程不仅涉及…

重塑视界,流畅无界:『Levels of Detail』

在那片烽火连天的虚拟疆域——《刺激战场》中,你是否曾披荆斩棘,穿梭于一个个错落有致的城市迷宫?当我们飞越天际,俯瞰那些精心雕琢的城市场景,心中是否闪过一丝好奇的火花:在这广阔天地间,为何…

冷门细分才是王道,小白用AI几分钟生成,都有出了7000+单了

现在大家都在说,网上整点米,越来越难了,竞争太激烈。那要不看看冷门赛道,看这样冷门细分赛道,【绘本故事】,我视频号,和其他平台都搜了下,千赞,万赞很多。 这样的图片大家…

一文带你彻底搞定小程序分包和预加载

小程序分包 某些情况下,开发者需要将小程序划分成不同的子包,在构建时打包成不同的分包,用户在使用时按需进行加载。 在构建小程序分包项目时,构建会输出一个或多个分包。每个使用分包小程序必定含有一个主包。所谓的主包&#…

思码逸 信通院联合发布:《研发效能基准报告》解读

页数:47页 免费下载:https://fs80.cn/go7exq 本文共计6000字,建议阅读时间:5-10分钟。 阅读本文你将收获: 研发效能基准指标 研发效能基准指标数据:交付速率、交付质量、交付能力 研发效能综合分析&…

基于springboot+vue+uniapp的英语学习交流平台小程序

开发语言:Java框架:springbootuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包&#…

视觉SLAM中的数学基础01 -3D空间的位置表示

在视觉SLAM中,理解和表示3D空间中的位置是至关重要的。这涉及到多种数学概念和工具,如坐标系、向量、矩阵、旋转和平移等。这些数学基础构成了视觉SLAM算法的核心。以下是3D空间位置表示的基本数学概念。 这是一个表示世界坐标系和相机坐标系之间关系的3…

以差异化运营高亮建材企业品牌优势,多层级孵化客户成交

建筑建材业作为国民经济的支柱产业之一,行业周期性明显,其发展情况与宏观经济走势高度相关。过去一年,随着供应链上下游的发展滑坡,建筑建材企业的流动性压力进一步显现,市场格局逐渐两级分化,头部企业甚至能在出口旺季一举收割将近80%的盈利份额。 对于非集团性门窗企业来说,…

人力资源外包项目适合哪些人做?

人力资源外包(RPO)项目在现代企业管理中扮演了重要角色。然而,成功运营RPO项目需要具备特定技能和背景的人员。以下是适合从事人力资源外包项目的几类人群,他们的特点和能力使他们能够在这一领域中取得成功。 1. 具备人力资源管理经验的专业人士 具备丰富…

Spring IOC and DI

1.什么是IOC (1)在Spring的MVC中我们学习了,让我们知道了将对象如何交给Spring进行管理类 (2)Spring是一个开源框架,是包含众多方法容器的IOC容器 (3)那么什么事IOC,我…

条理最清楚的最常用的 Git 管理指令

基础提交操作 git init # 将本地文件夹变为一个git仓库 git clone #将远程仓库克隆到本地 git log 查看提交记录 git fetch 命令更新remote索引,解决git branch -a没有最新分支的问题 git add # 将单个文件从工作区添加到暂存区 git add . # 将所有文件添加到暂存…

Win11(23H2)Copilot电脑重启会修改注册表解决办法

基础条件:科学上网 参考这两篇文章开启Copilot 参考一 参考二 成功后,如果你电脑每次重启,Copilot图标都会消失,那就是注册表被修改了,可以用一个取巧的办法解决 解决办法如下: 1. 桌面上新建一个文本&…

2024年【烟花爆竹经营单位主要负责人】找解析及烟花爆竹经营单位主要负责人复审模拟考试

题库来源:安全生产模拟考试一点通公众号小程序 烟花爆竹经营单位主要负责人找解析参考答案及烟花爆竹经营单位主要负责人考试试题解析是安全生产模拟考试一点通题库老师及烟花爆竹经营单位主要负责人操作证已考过的学员汇总,相对有效帮助烟花爆竹经营单…

vue3引入模块报错:无法找到模块“xxx”的声明文件

使用vue3ts导入vue文件的时候,报错:找不到模块“./XXX.vue”或其相应的类型声明 这是由于:Vue 文件并不是标准的 JavaScript 模块,因此 TypeScript 需要通过这种声明方式来理解和处理这些文件 我是使用vite创建的项目&#xff0…

工作随记:oracle中偶发遇到存储过程编辑,删除等卡死问题

文章目录 一、查询session是否占用二、通过对象名称定位对应SID三、通过对应的SID查询session信息四、kill掉session 最近有几个客户也询问过:我的存储过程怎么编译、调试有时候就卡死不动了,而且还没办法删除,本次又碰到实际情况&#xff0c…