在Marscode中使用Langchain进行04-05提示工程的课程时,发现了一些问题与注意事项,下面来给大家分享一下:
首先04/00-01是没有任何问题的,至少目前来看,我是没有发现的,所以我们从04/02的警告来说起——
课程04/02的警告解决
这时候,大家应该有个疑惑,04/02也有问题嘛,跑起来挺正常的,当然了,是没有问题的,只不过会有一行警告而已,秉承着探索的心理,我仔细看了一下,发现原来只是版本弃用警告——这个警告是关于 LangChain 库中一个即将被废弃的方法的提示,我一看是个BaseChatModel.__call__的模块弃用,
这时就有个疑惑,我也没调用这个模块,于是乎我查看了一下————原来是因为当前代码中使用的 chat(prompt) 调用方式(实际上是在调用 __call__ 方法)将在未来的版本中不再支持,这就好办了!只需将倒数第二行的代码稍微修改一下,改成
result = chat.invoke(prompt)
哈哈哈,其实就是加了个.invoke
课程04/03
在这里,大家可能会碰到以下的代码报错(只截取了结尾一部分):
TypeError: Descriptors cannot be created directly. If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0. If you cannot immediately regenerate your protos, some other possible workarounds are: 1. Downgrade the protobuf package to 3.20.x or lower. 2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower).
总结一下,上面的报错原因的大概就是在表述:有个错误发生在 protobuf 库的版本不兼容问题。具体来说,protobuf 版本要求不满足,因此无法正确处理 _pb2.py 文件中的生成代码
这时候我们有三个解决方法,先来说一个最简单的方法,大家只需在命令行(终端)里输入: 1)
export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python
这个优点就是快!因为它相当于在所有的子进程中将环境变量进行临时设置,让protobuf为纯python解析缺点就是每次运行都必须输入一次,那有没有一劳永逸的办法呢?有;
2) 这时我们只需打开之前设置环境变量的文件/home/cloudide/.cloudiderc,在文件中添加方法一的代码:
export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python
也就是如下图所示(最后一行代码):
3) 还有一种办法就是版本降级,只需在命令行(终端)输入以下代码:
pip install protobuf==3.20.3
然后进行与第二种办法一样的环境变量配置即可。
很显然,后两种中,如果没什么特殊要求的话,我更倾向于使用第二种办法,这样可以在不出其他问题的情况下,完成配置!
05/CoT.py
很显然05发出的警告和文章开头的04/02发出的警告一样,只需在倒二行将代码更改为以下内容即可:
response = llm.invoke(prompt)
好了,今天文章就到这里,感谢大家观看🌹