独家 | LLM的旅程:从POC(概念验证)到生产环境(上篇)

ce832063fb97737aec2386ec8931a19b.png

作者:Adva Nakash Peleg

翻译:付雯欣
校对:赵茹萱


本文约3100字,建议阅读10分钟
本文将从实际项目需求出发,手把手带你了解LLM。

92f70cc3e9f6cf878b738f9363e09443.png

图:由DALL-E生成的图片

试想一下:你有一个很棒的项目想法,可以通过大语言模型(LLM)来实现,并且很快实现了一个可运行的概念验证(POC)。你为自己感到骄傲,并惊讶于你只需很少的工作就能使其发挥作用。(只需五行prompt的魔力 ☺)

但接下来呢?

你很快就会意识到,在使用LLM时,编写POC是容易的,但要做出一个真正可行的产品却需要更多艰苦的工作。

如果你认同这个情景,你可能会对这篇文章感兴趣。

LLM旅程之始

理解这个旅程的最佳方式是看看我们当前的一个LLM项目。旅程的第一部分可以分为三个步骤。

1. 寻找动机

在一个充满复杂产品的世界里,还在面对着海量信息的情况下,我们的客户常常感到迷失。有时,即使是执行基本操作也需要阅读许多文档,耗费大量时间浏览产品的UI界面,或者分析大量信息,例如日志、报告和其他原始资料。

客户通常会问:“难道我不能用自己的话说出我想要的东西,然后让系统为我完成吗?”

答案是——有了LLM——可以的!

2. 确立目标

在这个例子中,项目目标是通过客户提供的自然语言(natural language,NL)对我们的产品进行操作。

我们的项目首先学习产品的API规范文件(以标准格式声明API的文件,通常是OpenAPI),然后使用LLM将自然语言请求转换为正确的API调用。

3. 实现可运行的概念验证(POC)

在确立项目目标后,我们进入了POC阶段。

POC的目的是确保我们的想法是可行的。

我们需要构建一个基本系统,该系统接收API规范文件连同自然语言的用户请求作为输入,并执行用户的请求作为结果。

为了实现这一点,我们选择了OpenAI的GPT作为我们的LLM,并选择了LangChain作为封装LLM使用的库。

我们编写了一个引擎,该引擎接收输入数据,将其处理成逻辑分组(服务),并将其加载到LangChain库中,同时包含用户请求和一些执行指令的prompt。我们使用LangChain的链、工具和代理来实现这一点,同时结合OpenAI的功能调用特性。

你可以在这个网站上了解更多关于LangChain工具和代理的信息:https://python.langchain.com/v0.1/docs/modules/agents/

下图描述了我们POC中的主要角色:

272b2d8f1fc4049758d3f5924757d4f0.png

图:POC 流程

恭喜,我们有了一个可运行的POC!现在真正的旅程开始了……

首要任务:准确性

在初期对POC的兴奋消退后,我们开始看到LLM决策和响应中的一些缺陷。

在软件行业,我们通常使用确定性算法(即,对于相同的输入,算法总是产生相同的输出)。

我的第一个建议是将你习惯的确定性期望抛到一边。是的,即使在OpenAI的温度设置为0的情况下也是如此。

目标是学习如何在这个新的非确定性世界中导航。换句话说,我们如何使其更可预测,以及如何处理不同的响应?

这里有一些小tips:

Tip1:确保你在使用正确的prompt

你需要逐步告诉LLM需要做什么。这包括描述你的输入(它的格式、含义)、预期输出(它的格式、含义)等等。有时这意味着使用比你想象的更多的提示行,或在提示中包含示例。

在下面的Few-Shots Learning示例中,你可以看到在提示中添加例子(shots)的优势。

请看以下请求:“Get the user details of the user ‘user1’, and create a new user with those details”。

这看起来很基本和直截了当,对吗?错!你不会相信LLM尝试采取的奇怪操作——包括将“those”一词放入新用户的详细信息中。相反,在提示中给LLM以下示例效果非常好:

Question: Get the details of ‘User1’ entity and create a new entity named ‘User2’ with the same details

Thought: I should first get the details of ‘User1’ using the “Get entity Details” tool. then I should use the “entity writer” tool to create a new entity named ‘User2’ with the same details.

Tip2:给你的LLM配备工具

有时LLM不知道如何自行执行正确的操作。在这种情况下,你可以为LLM配备一套工具,当LLM不确定该怎么做时可以使用这些工具。这可以通过LangChain工具或OpenAI的功能调用轻松实现。

以下是一些不同工具的示例:

  • 一个用于计算日期的日期工具。你可以问它:“给我所有昨天的日志。”由于LLM可能难以理解“昨天”具体指的是哪一天,日期工具可以帮助它将“昨天”转换为可用的时间戳。

  • 一个可以帮助LLM向用户获取澄清信息的用户/人类工具。你可以问它:“创建一个新用户。”由于LLM可能需要额外的信息,比如用户名,它可以使用用户工具询问用户所需的用户名。

Tip3:限制LLM的创造力

另一个建议是限制LLM的创造力,让LLM在不确定时询问澄清信息,而不是妄自猜测。

例如,当你要求“创建一个名为‘user1’的新用户”时,API的一个参数是密码。

LLM可能会尝试使用生成的密码Password123来创建用户。这可能不是你想要的结果。你可以指示LLM在这种情况下询问澄清信息,而不是自行猜测。

永远预料 “未曾预料”

我们现在已经创建了一个支持所有用例并在“顺利路径”中表现非常好的引擎。但是错误流程和边缘情况下怎么办呢?

以下是一些关于处理这些情况的想法:

  • 指示LLM如何处理意外响应:让LLM知道错误可能发生,描述如何识别错误以及错误发生时应采取的措施。

  • 向用户呈现清晰的错误消息:当发生错误时,向用户展示清晰的消息,使用户能够理解发生了什么以及如何修复。

  • 定义自动恢复行为:在某些情况下,LLM可以自动从故障中恢复。

示例1:自动纠正错误

“创建一个名为‘user1’的用户”。

LLM可能会请求创建此用户,并自动生成描述,例如“这是一个管理员用户!”。在这种情况下,产品可能会返回一个错误,指出“‘!’的使用是非法的。只允许使用字母数字值”。我们可以指示LLM读取此错误消息并自动纠正自身,使用不包含无效字符的描述。

示例2:绕过认证问题

“获取名为‘user1’的用户”。

可能我们用来认证到产品系统的token已经过期。在这种情况下,产品返回错误“token已过期”。

我们可以指示LLM处理认证问题并返回特殊消息,以便我们可以自动刷新token并重试请求。

部署、托管和重大决策

在构建引擎并对模型进行微调之后,你需要做出关于部署的决策。需要做出的众多选择各有利弊,包括:

在哪里托管引擎

对于我们来说,这个问题很容易决定。由于我们主推SaaS,这是我们的首选。

而且由于我们的主要云提供商是AWS,这也是我们的首选。

在哪里托管LLM模型

我们使用了OpenAI的GPT模型,它提供了最佳的结果(主要是因为我们大量使用了本模型原生支持的功能调用特性)。经过一些比较,我们得出的结论是,托管此模型的最佳方式是使用Azure OpenAI。这意味着该项目建立在两个云提供商之上——但这完全不是问题。

选择部署策略

作为无状态和无服务器解决方案的倡导者,我总是倾向于走这条路。

这并不意味着引擎不能托管在静态、有状态的机器上。但我认为,无状态和无服务器在弹性、扩展、部署和管理方面的优势实在是太大了,几乎没有竞争对手。

这就指引我们来到了下一个挑战……

使您的LLM引擎无状态和无服务器化

敬请关注,LLM的旅程:从POC(概念验证)到生产环境(下篇)

编辑:黄继彦

译者简介

23e90d7c19c121861e052fcdcc3414c0.jpeg

付雯欣,中国人民大学统计学专业硕士研究生在读,数据科学道路上的探索者一枚。小时候梦想做数学家,现在依旧着迷于数据背后的世界。热爱阅读,热爱遛弯儿,不停感受打开生命大门的瞬间。欢迎大家和我一起用概率的视角看世界~

翻译组招募信息

工作内容:需要一颗细致的心,将选取好的外文文章翻译成流畅的中文。如果你是数据科学/统计学/计算机类的留学生,或在海外从事相关工作,或对自己外语水平有信心的朋友欢迎加入翻译小组。

你能得到:定期的翻译培训提高志愿者的翻译水平,提高对于数据科学前沿的认知,海外的朋友可以和国内技术应用发展保持联系,THU数据派产学研的背景为志愿者带来好的发展机遇。

其他福利:来自于名企的数据科学工作者,北大清华以及海外等名校学生他们都将成为你在翻译小组的伙伴。

点击文末“阅读原文”加入数据派团队~

转载须知

如需转载,请在开篇显著位置注明作者和出处(转自:数据派ID:DatapiTHU),并在文章结尾放置数据派醒目二维码。有原创标识文章,请发送【文章名称-待授权公众号名称及ID】至联系邮箱,申请白名单授权并按要求编辑。

发布后请将链接反馈至联系邮箱(见下方)。未经许可的转载以及改编者,我们将依法追究其法律责任。

关于我们

数据派THU作为数据科学类公众号,背靠清华大学大数据研究中心,分享前沿数据科学与大数据技术创新研究动态、持续传播数据科学知识,努力建设数据人才聚集平台、打造中国大数据最强集团军。

040c6681cc779fa8e48522ce9603f223.png

新浪微博:@数据派THU

微信视频号:数据派THU

今日头条:数据派THU

点击“阅读原文”拥抱组织

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值