在上篇文章中,我解决了各种api调用的报错问题,终于让我的大语言模型生成了输出,只是这个输出和预期的属实是大相径庭,我的目标是使用Langchain agent的tool工具调用serpapi实现从网站中搜索内容。但是返回的结果让我怀疑他是否真的是通过浏览器搜索出来的。因为他的输出能感觉到明显的信息缺失以及缺乏逻辑。而且中间过程显示它频繁的调用一个问题,还没有对这个问题进行正确的回答,真是令人哭笑不得了。
面对这种情况,我打算从调用的目标serpapi入手,serpapi的管理页面中有一个统计调用情况的功能。我之前测试脚本运行了很多次,按道理来说,应该有多次调用的记录才对,然而事实是什么都没有。那么就说明我的脚本并没有正确调用serpapi,它的返回结果也是大模型自己的幻觉回答。
这就十分棘手了,难道之前做的所有努力都白费了吗?先让我们冷静一下,我记得在课程中老师曾说过,langchain是一个正在开发中的框架,它的更新速度十分之快,很多函数和端口在每个小版本的迭代中都有可能会被弃用。我记得我在本地的环境中安装langchain时并没有在意版本问题,也就是说默认下载的是最新的版本。在运行中的确输出了很多将要弃用的警告。难不成真的是版本的问题吗?我立马重新配置了langchian的版本,降为0.2版。
当我怀着无比激动的心情重新运行后,发现,输出完全没有变化。不过这次我的心态倒是没什么变化,习惯了。好消息是这个问题排除了,并不是版本的问题。那么就立马尝试另一个可能,那就是调用的大模型的问题。在上一篇文章中,我的原计划是使用openai的chatgpt3.5作为主力大模型,但是发现要money,所以就放弃了,转而使用huggingface的llama,在好不容易得到了llama3的一个模型的授权后导致了这个问题。那么就有可能是利用huggingface的工作流导致的这个问题。难道不得不氪金才能解决这个问题了吗?当我正要献祭一周饭钱的时候,事情又有了新的转机。
在AI练中学的源代码页面中,我发现,可执行代码的openai调用的不是chatgpt类模型,而是doubao,国内的模型难道也能用openai的api调用了吗?在简单将模型名称变为豆包模型后,代码报错找不到这个名称的模型。别急,再仔细读一遍readme文件,果然,还需要指定OPENAI_BASE_URL。这下终于找到豆包模型了,得到的输出结果如下:
嗯,可以说是非常完美了。在serpapi的统计界面也有了相应的显示:
终于,在经历了种种状况后,终于实现了调用serpai的搜索功能了。这篇文章的主要内容就到这里了,我们下一篇文章见。