从2022年12月以来,chatGPT 的横空出世掀起了新一波的 AI 浪潮,热度一直居高不下直到现在。半年时间里,从底层模型 API 到上层应用的生态逐渐建立,经过一轮轮迭代不断完善创新。本文将结合开源框架和应用程序,从工程师的角度,与大家讨论如何对大语言模型进行封装和应用,并从工程层面解决现有问题,搭建完整可商用的 AI 应用程序。
LLM,Large Language Model,即大语言模型。这个“大”是说参数量大(通常数十亿个权重或更多),是一种语言模型的概念。为了更深入理解,我们选用OpenAI 公司的 GPT 模型进行讨论。本文实验都在 GPT3.5 的模型上进行(GPT4 太贵了)。
开始之前,先科普一下:GPT 是 OpenAI 训练的模型,chatGPT 是在 GPT 基础上构建的聊天应用程序,有很大的区别。
如下图所示,接口入参必填参数包括应用的模型名称、消息列表。消息列表是一个 jsonArray,可以包括历史消息。模型区分了消息文本的角色,分为系统、用户和 AI 三个角色。以便于区分历史上下文和设定统一背景。还有一些其他可选字段:比如 temprature 可以控制返回的随机性,0代表最不随机,如果完全相同的输入,大概率给出完全相同的输出。1代表最随机;stream 表示是否需要以流的形式返回,就像 chatGPT 逐个文本进行返回;max_token 规定了单次请求的 token 数量限制,毕竟 token 就代表了成本。
返回的结果也很简单:一句 AI 的回复 content ,和本次对话的 token 消耗值。API 如下图所示:
首先来看 GPT 的优势。作为开发工程师,从应用的视角看,总结出如下几点:
无与伦比的自然语言掌握能力,在某些角度是超越了我们普通人的。相信大家或多或少领略过,可以很强大地做文本生成、文本理解和文本翻译等。
某些领域有推理和抽象思维的能力,尤其写代码方面。也通过了各种人类的考试,如SAT、美国医学执照考试、律师资格考试等。注意是某些领域,不完全。
他还有强大的泛化能力,在新的样本上表现很好,支持了跨各个垂直领域的对话。
GPT 有对人类的“理解能力”。心智理论(Theory of Mind, ToM)是指通过将心理状态归因于他人来理解他人的能力,或者更简单的说,是推测其他人心里在想什么的能力。GPT 在心智理论测试中表现出色。
多样性和可控性,GPT 模型提供了一些参数,增强它的多样性,比如Temprature。
实际上,在人工智能领域是有很多分支的。比如推荐、模式识别、自然语言、计算机视觉等方向。但是 GPT 都能解决吗?并不是。那么一个主要在自然语言领域的模型,为什么让大家都有惊艳的感觉呢?我认为归功于以下两点:
语言是人类与外部世界交互的主要方式,尤其是在信息时代。尽管 GPT 只是一个语言模型,但这个它在各种领域和任务上展现的能力,让你觉得他真的“懂”。
原有用到人工智能的领域,大多需要专有的模型。每一种专有的模型之间都有比较大的鸿沟,成本很高,包括学习成本和训练成本。GPT 如此通用的模型加上如此方便的交互方式,给一些需要 AI 但是没有能力搞AI的公司或个人,实现了技术的普惠。在很快的产品周期里,就可以将人工智能的进步转化为真正投入使用的实际产品。对于我们纯开发工程师来说,是“弯道超车”的重要机会。
多提一句,各种优势的来源,就是大语言模型的“涌现”能力。涌现可以用一句经典的话来概括:量变引起质变。很多方面的测试任务表明,模型量级在大于10的22次方之后,能力的增幅得到了大幅度的提升。(论文来源:Emergent Abilities of Large Language Models, arxiv.org/abs/2206.07…
了解了 GPT 的优势,但是作为工程师在应用落地过程中更要关心它不足的地方,并给出解决方案。我总结了几个主要的点,下面和大家一一分析。
GPT 对 prompt 的要求体现在两个方面:其一是对于 prompt 表达的敏感性,其二是对 token 的数量限制。
对于 prompt 表达的敏感性
prompt 就是提示,也可以简单理解为向 GPT 输入的问题。GPT 对于提示的措辞很敏感。这意味着在与 GPT 进行对话时,用户需要非常准确地表达自己的意图,并且对 GPT 的思考范围和返回方式作出明确的规定。否则 GPT 会天马行空,无法满足落地应用确定性的要求。
token 的数量限制
对于 GPT 模型来说,有很强的 token 数量限制,输入和输出都会算 token 。GPT3.5 的 token 上限是4096,GPT4 是8000或32000,且根据 token 数计费。具体 token 的计算涉及到 NLP 领域的分词相关算法,大家可以根据 OpenAI 提供的工具进行查询:platform.openai.com/tokenizer。这… GPT 交流的方式,比如上下文的篇幅限制。下图是实验的时候 token 超出限制的报错。