在处理了五亿个GPT令牌后感悟总结和教训

  每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领域的领跑者。点击订阅,与未来同行! 订阅:https://rengongzhineng.io/

我想分享一些在处理超过5亿个令牌后得出的“令人惊讶”的教训。

首先给出一些细节:

  • - 我们使用的是OpenAI的模型,如果你想了解我对其他模型的看法,请看文末的问答部分
  • - 我们的使用比例是85%的GPT-4,15%的GPT-3.5
  • - 我们专门处理文本,所以没有使用gpt-4-vision、Sora、whisper等
  • - 我们有一个B2B(企业对企业)的使用案例——主要专注于摘要/分析提取,所以你的情况可能会有所不同
  • - 实际上5亿令牌并不像听起来的那么多——大约是75万页文本,以此来看

教训1:在提示方面,少即是多


我们一直发现,如果某件事已经是常识,那么在提示中不列出确切的列表或指示会产生更好的结果。GPT并不愚蠢,实际上如果你过度具体化,它反而会感到困惑。

这与编码基本不同,在编码中一切都必须明确。

这里有一个我们遇到问题的例子:

我们的一个流程部分是读取一些文本块,并要求GPT将其分类为美国的50个州之一或联邦政府。这并不是一个困难的任务——我们可能本可以使用字符串/正则表达式,但有足够的奇怪的边角情况使得这会花费更长时间。所以我们的第一次尝试大约是这样的:

这里有一个文本块。一个字段应该是"locality_id",它应该是50个州之一或联邦的ID,使用这个列表:[{"locality": "Alabama", "locality_id": 1}, {"locality": "Alaska", "locality_id": 2} ... ]
这种方法有时有效(我估计超过98%的时间),但失败的次数足够多,我们不得不进一步深入调查。

在我们调查时,我们注意到另一个字段,name,一直在返回该州的全名……正确的州——尽管我们没有明确要求它这样做。因此,我们改为在name上进行简单的字符串搜索以找到该州,自此以后它一直运行得很好。我认为总的来说,更好的方法应该是“你显然知道这50个州,GPT,所以只需给我这个州的全名,或者如果这关系到美国政府就给我'Federal'。”

为什么这很疯狂?好吧,当你更模糊时,GPT的质量和泛化能力能够提高,这是高阶委派/思考的典型标志。

教训2:你不需要langchain。

你可能甚至不需要OpenAI在过去一年中发布的API中的任何其他东西。只需要聊天API。这就是全部。
Langchain是过早抽象的完美例子。我们最初认为我们必须使用它,因为网络上是这么说的。然而,数百万令牌和大约3-4个非常多样化的LLM功能后,我们的openai_service文件仍然只有一个40行的函数:

def extract_json(prompt, variable_length_input, number_retries)
我们使用的唯一API是聊天。我们总是提取json。我们不需要JSON模式,也不需要函数调用或助手(尽管我们确实做了所有这些)。天哪,我们甚至不使用系统提示(也许我们应该……)。当gpt-4-turbo发布时,我们在代码库中更新了一个字符串。

这是一个强大的泛化模型的美丽之处——少即是多。

该函数中的大部分40行都是围绕OpenAI API常规的500s/socket关闭的错误处理(尽管情况已经改善,鉴于他们的负载,这并不令人惊讶)。

我们构建了一些自动截断,所以我们不必担心上下文长度限制。我们有我自己的专有令牌长度估计器。这里是:

if s.length > model_context_size * 3
  # truncate it!
end


在有许多句点或数字的角落案例中,它失败了(这些的令牌比率< 3个字符/令牌)。所以还有另一种非常专有的try/catch重试逻辑:

if response_error_code == "context_length_exceeded"
   s.truncate(model_context_size * 3 / 1.3)


我们使用这种方法取得了相当大的进展,而且它足够灵活以满足我们的需求。

教训3:使用流API改善延迟并向用户显示变速“打字”字符,实际上是ChatGPT的一大UX创新。


我们以为这是个噱头,但用户对变速“打字”字符的反应非常积极——这感觉像是AI的鼠标/光标UX时刻。

教训4:GPT在生成空假设方面真的很糟糕


“如果你什么也没找到,就返回一个空输出”——这可能是我们遇到的最容易出错的提示语言。GPT不仅经常选择幻觉而不是什么也不返回,而且它还经常缺乏自信,返回空白的频率比应有的要高。

我们的大多数提示都是这种形式:

“这里有一块关于一家公司的声明文本,我希望你输出提取这些公司的JSON。如果没有相关内容,请返回一个空白。这是文本:[文本块]”

有一段时间,我们遇到了一个错误,其中[block of text]可能是空的。幻觉很糟糕。顺便说一下,GPT喜欢幻觉烘焙店,这里有一些很棒的:

阳光面包店
金谷面包店
幸福面包店


幸运的是,解决方案是修复错误,如果没有文本就不发送提示(嗯!)。但当“它是空的”很难以编程方式定义时,情况就更困难了,你实际上确实需要GPT发表意见。

教训5:“上下文窗口”是个用词不当——它们只是在输入上变大,而不是输出

鲜为人知的事实:GPT-4可能有一个128k令牌的输入窗口,但它的输出窗口仍然是可怜的4k!称它为“上下文窗口”令人困惑。但问题还更糟——我们经常要求GPT给我们返回一个JSON对象列表。没什么复杂的:想想吧,一个json任务数组列表,其中每个任务都有一个名称和一个标签。

GPT实际上不能返回超过10个项目。试图让它给你返回15个项目?也许它做到了15%的时间。我们最初以为这是因为4k上下文窗口的问题,但我们到达10个项目时,它只会是大约700-800个令牌,GPT就会停下来。现在,你当然可以通过给它一个提示来交换输出输入,要求一个任务,然后给它(提示+任务),要求下一个任务等等。但现在你在和GPT玩电话游戏,还得处理像Langchain这样的东西。

教训6:向量数据库和RAG/嵌入对我们这些普通人来说基本无用


我真的尝试过。但每次我以为我找到了RAG / embeddings的杀手级用例时,我都感到困惑。

我认为向量数据库/RAG真的只适合搜索。而且只是搜索。不是像“哦——检索块有点像搜索,所以它会工作!”那样的搜索,而是真正的谷歌和必应搜索。这里有一些原因:

没有相关性的截止点。市场上有一些解决方案,你可以为相关性创建自己的截止启发式,但它们将是不可靠的。这实际上在我看来杀死了RAG——你总是冒着检索到不相关结果的风险,或者过于保守,你错过重要的结果。为什么要把你的向量放在一个专门的、专有的数据库中,远离你所有的其他数据?除非你是在谷歌/必应的规模上交易,否则这种失去上下文的交易绝对不值得。除非你在进行非常开放的搜索,比如说——整个互联网——用户通常不喜欢语义搜索返回他们没有直接输入的东西。对于大多数商业应用程序中的搜索,你的用户是领域专家——他们不需要你猜测他们可能的意思——他们会告诉你!在我看来(这是未经测试的),对于大多数搜索案例,LLMS的更好用途是使用普通的完成提示将用户的搜索转换为分面搜索,甚至更复杂的查询(或者,甚至是SQL!)。但这根本不是RAG。

教训7:基本上不会发生幻觉。


我们的每个用例都基本上是“这里有一堆完整的详细信息,分析/总结/提取”——它非常可靠。我认为你可以看到很多最近的产品发布都强调了这种确切的用例。

因此,这一切都是关于好的数据输入,好的GPT令牌响应输出。

结论:我认为这一切将何去何从?


与其回应一些长篇大论的帖子(编辑:我随后确实写了一篇后续帖子,分享了更多的想法,因为HN评论中有一些非常发人深思/启发性的观点),不如这里简单地进行问答:

我们是否会实现AGI?

不会。不是通过这种变压器+互联网数据+$

XB基础设施的方法。

GPT-4实际上有用吗,还是全是营销?

它是100%有用的。这仍然是互联网的早期。它会解雇每个人吗?不会。主要是,我看到这降低了以前只有谷歌才能达到的ML/AI的进入门槛。

你尝试过Claude、Gemini等吗?

是的,嗯。说真的,我们还没有进行任何严肃的A/B测试,但我已经用它们进行了日常编码的测试,感觉甚至还不够。这主要是一些细微之处,比如直觉意图。

我如何跟上LLM/AI这些天的所有发展?

你不需要。我一直在思考The Bitter Lesson——模型性能的一般改进超过了细分市场的改进。如果这是真的,你只需要关心GPT-5何时发布。其他任何东西都不重要,与此同时OpenAI发布的其他所有东西(不包括Sora等,那是一回事)基本上都是噪音。

那么GPT-5什么时候会出现,它会有多好?

我一直在尝试阅读OpenAI的迹象,就像其他人一样。我认为我们将看到渐进式改进,遗憾的是。我对GPT-5能“改变一切”的希望并不大。有一些根本的经济原因:在GPT-3和GPT-3.5之间,我以为我们可能处于模型获得超线性改进的情况:训练它2倍,它变得好2.2倍。

但显然不是这样。相反,我们看到的是对数式的。而且事实上,令牌速度和每令牌成本对于渐进式改进呈指数增长。

如果是这样的话,我们正处于一条帕累托最优曲线上,而GPT-4可能是最优的:尽管我愿意为GPT-4支付比GPT-3.5高20倍的价格,我真的不认为我会为从GPT-4升级到GPT-5支付20倍的令牌费用,不是为了GPT-4用于的那组任务。

GPT-5可能会打破这一点。或者,它可能是iPhone 5对iPhone 4的。我不认为这是一种损失!

  • 47
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值