LangChain教程 | 实践过程报错集 | 持续更新

这是本人最近在做langchain教程过程中的遇到的报错,不分先后顺序。

报错:TypeError: 'NoneType' object is not iterable

这个报错很常见,咱们要看原始报错的位置是哪里,下面是我的截图:

找到源头之后,就在源头的位置打个断点:

然后启用debug模式 shift+F9,如果不懂断点模式,自行学习下先。

这里就能看到提示代理错误。再回到上面源码的位置,这是由于咱们在使用LLMs工具时,没有正常访问到大语言模型平台,这里用的是openai的代理,检查发现这是由于OPENAI-KEY代理商的问题,不支持默认的 text-embedding-ada-002 ,更换成其他代理商,就可以了。

以下这几个LLM都有可能报错:请注意检查自己的openai-key代理商都支持那些models

报错:Python-dotenv could not parse statement starting at line 2

直接检查配置文件 .env 格式是否正确,由于刚更新了最新的pycharm编辑器,使用快捷注释 ctrl + / ,直接采用 ; 进行注释而不是标准的 # ,改回正常注释即可,如图:

报错:openai.RateLimitError: Error code: 429 - {'error': {'message': 'Request too large for text-embedding-ada-002 in organization org-LuuLZeqq6vQg5xm5ykGftEgo on tokens per min (TPM): Limit 150000, Requested 301143. The input or output tokens must be reduced in order to run successfully.

原因如错误信息所示,速率限制。 问题是请求者最小( rpm )过多。

官方文档:https://platform.openai.com/docs/guides/embeddings/use-cases

 解决方案:

作为解决方案,通过在一个请求中获取多行的嵌入表示来降低RPM。
首先,计数每行的令牌数。

import tiktoken
embedding_encoding = "cl100k_base"  # this the encoding for text-embedding-ada-002
encoding = tiktoken.get_encoding(embedding_encoding)
df["num_tokens"]=df["embedding_text"].map(lambda x: len(encoding.encode(x)))

通过以接近TMP上限的令牌数请求,避免受到限制。

import time
embedding_model="text-embedding-ada-002"
embedding_texts=[]
token_sum=0
max_input=2048 # inputのlistの最大長は2048 https://github.com/openai/openai-python/issues/519
max_tmp=150000*2/3
responses=[]
for i,row in df.iterrows():
    token_sum+=row["num_tokens"]
    if (token_sum>=max_tmp) or (len(embedding_texts)>=max_input):
        print(i,"/",df.shape[0],len(embedding_texts),token_sum-row["num_tokens"])
        response=client.embeddings.create(input = embedding_texts, model=embedding_model)
        responses+=response.data
        token_sum=row["num_tokens"]
        embedding_texts=[row["embedding_text"]]
        time.sleep(65)
    else:
        embedding_texts+=[row["embedding_text"]]
    
responses+=client.embeddings.create(input = embedding_texts, model=embedding_model).data
df["ada_embedding"]=[r.embedding for r in responses]

除了数据过多( 200*150000令牌以上)以外,这样应该不会影响速率限制。

报错:This model's maximum context length is 4097 tokens. However, your messages resulted in 7998 tokens. Please reduce the length of the messages.

此模型的最大上下文长度为4097个标记。但是,您的消息产生了7998个令牌。请缩短信息的长度。

解决方案: 

其实就是openAI的model都有限制上下文大小,具体的model大小看下面:

model_token_mapping = {
            "gpt-4": 8192,
            "gpt-4-0314": 8192,
            "gpt-4-0613": 8192,
            "gpt-4-32k": 32768,
            "gpt-4-32k-0314": 32768,
            "gpt-4-32k-0613": 32768,
            "gpt-3.5-turbo": 4096,
            "gpt-3.5-turbo-0301": 4096,
            "gpt-3.5-turbo-0613": 4096,
            "gpt-3.5-turbo-16k": 16385,
            "gpt-3.5-turbo-16k-0613": 16385,
            "gpt-3.5-turbo-instruct": 4096,
            "text-ada-001": 2049,
            "ada": 2049,
            "text-babbage-001": 2040,
            "babbage": 2049,
            "text-curie-001": 2049,
            "curie": 2049,
            "davinci": 2049,
            "text-davinci-003": 4097,
            "text-davinci-002": 4097,
            "code-davinci-002": 8001,
            "code-davinci-001": 8001,
            "code-cushman-002": 2048,
            "code-cushman-001": 2048,
        }

目前现有的OpenAI model的上下文大小

按照提示来说,最好是更换成gtp-4或者是gpt-3.5-turbo-16k,如果追求更好性能的就gpt-4,如果想性价比高,价格便宜的就gpt-3.5的,价格差了将近20倍。

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

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

相关文章

使用idea运行程序,发现控制台的中文出现乱码

修改UTF-8发现没有效果,寻找.idea文件夹的encodings.xml文件,将里面的UTF-8全部变成GBK.

(一)基于IDEA的JAVA基础12

一维数组 为什么使用数组: 当我们需要存储一系列数据的时候,就需要用到数组,如果不使用数组,我们就要需要一个一个的去声明变量,这样浪费内存空间,同时效率低下。 什么是数组: 数组本身就是一个变量,只…

爱普生新一代可编程振荡器系列SG-8018

频率范围: 0.67 MHz-170 MHZ 温度范围: -40C to 105C 精度: 50 ppm including aging(包括老化) 供电电压: 1.8V, 2.5V, 3.3V(1.62V-3.63V) 低功耗: 3.2 mA-8.1 mA maximum 单端输出模式: LVCMOS 可编程上升/下降时间:输出使用(OE)或待机功能(ST) 4种封装尺寸…

testng接口自动化2@Test常见参数

接下来是Test注解里的一些常用参数 1,enabled 是否执行此用例,若enabled false,则不执行此方法,若enabled true 则此方法执行,如图test1的testDemo3设置为true,testDemo2设置为false,则testDemo2没执行 2,expecte…

蓝桥杯 历届真题 时间显示【第十二届】【省赛】【C组】

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s #include<bits/stdc.h> #define int long long using namespace std; const int N 1e510; int n,m,t,d; int a[2][N],b[N]; //…

Nuxt3 实战 (三):使用 release-it 自动管理版本号和生成 CHANGELOG

release-it 能做什么&#xff1f; 增加版本号并提交 Git生成变更日志&#xff08;Changelog&#xff09;并提交到 Git创建 Git 标签并推送到远程仓库发布到 npm 等软件仓库在 GitHub、GitLab 等平台创建发行版 前置知识 在看这篇文章之前&#xff0c;我们有必要了解一下 Sem…

深入了解iOS内存(WWDC 2018)笔记-内存诊断

主要记录下用于分析iOS/macOS 内存问题的笔记。 主要分析命令&#xff1a; vmmap, leaks, malloc_history 一&#xff1a;前言 有 3 种思考方式 你想看到对象的创建吗&#xff1f;你想要查看内存中引用对象或地址的内容吗&#xff1f;或者你只是想看看 一个实例有多大&#…

构建第一个ArkTS之页面和自定义组件生命周期

在开始之前&#xff0c;我们先明确自定义组件和页面的关系&#xff1a; 自定义组件&#xff1a;Component装饰的UI单元&#xff0c;可以组合多个系统组件实现UI的复用&#xff0c;可以调用组件的生命周期。页面&#xff1a;即应用的UI页面。可以由一个或者多个自定义组件组成&…

nginx到底是怎么工作的

工作流程 用户通过域名发出访问Web服务器的请求&#xff0c;该域名被DNS服务器解析为反向代理服务器的IP地址反向代理服务器接受用户的请求反向代理服务器在本地缓存中查找请求的内容&#xff0c;找到后直接把内容发送给用户如果本地缓存里没有用户所请求的信息内容&#xff0…

【Java】Java中类的初始化顺序(静态方法,静态块,非静态块,最后有流程图)

&#x1f4dd;个人主页&#xff1a;哈__ 期待您的关注 在日常使用Java的时候&#xff0c;我们都接触过new这个关键字&#xff0c;那你是否知道在我们的对象真正创建出来之前都做了哪些事情呢&#xff1f; 实际上要去判断一个类的初始化的顺序&#xff0c;需要分一下情况&…

Qt使用QWidget重绘实现圆环形渐变色进度条(支持不确定进度模式)

效果如下&#xff1a; 从纯竖直方向顶部蓝色到底部青色的渐变。 从左上角偏左45到右下角偏右45的蓝色到青色渐变。 从左上角偏左22.5到右下角偏右22.5的蓝色到青色渐变。&#xff08;这个角度渐变最好看&#xff09; 可以选择添加背景图片 支持两种模式&#xff1a;正常进度模…

媒体邀约专访如何深入的做一篇专访报道?流程分享

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 进行媒体邀约专访并深入撰写一篇专访报道是一个系统性工作&#xff0c;涉及多个环节。以下是一个详细的流程分享&#xff1a; 一、前期准备 确定专访目的与主题&#xff1a;明确专访希…

Training - 使用 WandB 配置管理模型训练过程

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://blog.csdn.net/caroline_wendy/article/details/137529140 WandB (Weights&Biases) 是轻量级的在线模型训练可视化工具&#xff0c;类似于 TensorBoard&#xff0c;可以帮助用户跟踪…

可编程网关:如何助力智慧工厂实现智能化管理

一个具体的实际案例&#xff0c;详细说明可编程网关在某汽车零部件智慧工厂中的应用细节&#xff1a; 案例背景&#xff1a; 某大型汽车零部件制造企业&#xff0c;致力于提升生产效率、降低运营成本、确保产品质量&#xff0c;决定对其传统工厂进行全面数字化改造&#xff0…

从零开始:一步步学习爬虫技术的实用指南(一)

从零开始&#xff1a;一步步学习爬虫技术的实用指南&#xff08;一&#xff09; Urllib1.什么是互联网爬虫2.爬虫核心3.爬虫的用途4.爬虫的分类4.1 通用爬虫&#xff1a;4.1 聚焦爬虫&#xff1a; 5.反爬手段5.1 User‐Agent&#xff1a;5.2.代理IP5.3.验证码访问5.4.动态加载网…

深入理解JVM后端优化技术-逃逸分析(Escape Analysis)

相关系统 深入理解jvm执行引擎-CSDN博客 深入理解JVM后端优化技术-方法内联-CSDN博客 定义 当一个对象在方法里面被定义后,它可能让外部方法所引用,作为调用参数传递到其它的方法中,这种称为方法逃逸;还有可能被外部线程访问到,赋值给可以在其它线程中访问的实例数量,这…

【测试篇】Selenium + Java环境搭建

文章目录 Selenium Java环境搭建配置系统环境变量PATH验证环境是否搭建成功常见问题&解决办法 Selenium Java环境搭建 Java版本最低要求为8&#xff0c;这里默认大家都下载好了Java。&#x1f606; 下载chrome浏览器&#xff08;点我下载&#xff09; 观察chrome版本。…

混合专家(MoE)模型

文心一言 混合专家模型&#xff08;Mixture of Experts&#xff0c;简称MoE&#xff09;是一种基于Transformer架构的模型设计策略。它通过将多个模型&#xff08;称为“专家”&#xff09;直接结合在一起&#xff0c;以获得更好的预测性能。这种模型特别适用于处理大规模数据…

学习操作系统之多道批处理系统

1964年IBM生产了第一台小规模集成电路计算机IBM System/360&#xff08;第三代计算机&#xff09;&#xff0c;并为该计算机开发了OS/360操作系统&#xff0c;是第一个多道批处理系统。 多道批处理的运行机制&#xff1a; 多道批处理系统同样要求事先将多道作业存放到外存上并…

人工智能_大模型023_AssistantsAPI_01_OpenAI助手的创建_API的调用_生命周期管理_对话服务创建---人工智能工作笔记0159

先来说一下一些问题: 尽量不要微调,很麻烦,而且效果需要自己不断的去测试. 如果文档中有图表,大量的图片去分析就不合适了. 是否用RAG搜索,这个可以这样来弄,首先去es库去搜能直接找到答案可以就不用去RAG检索了,也可以设置一个分,如果低于60分,那么就可以去进行RAG检索 微…