langChain 调用链路时序图

刚学会ChatGPT,又来了LangChain,LangChain到底是个什么鬼?

1. 背景

随着ChatGPT的兴起,越来越多的人都用ChatGPT,但都是个人用户,通过网页的WEB界面进行提问,然后解决自己的问题,就感觉ChatGPT很强大,但是做为公司和企业,肯定不能只提供一个GPT服务给我们的用户啊,那必须要包装一个啊,然后再说我们公司的产品应用了什么什么高科技啊。

于是,就有了 prompt 生成器,让用户按照模板,输入特定的文字后,转换为专业的 prompt,再提交给GPT。但这种交互,还仅仅停留在和GPT直接进行交互上。

我们没有办法和企业的一些商品或用户数据进行交互。甚至不能和最新的实时数据进行交互。

LangChain 就是用来解决这个问题的。

2. 聊LangChain之前,我们先来说一下ChatGPT 具有的学习能力

chatGPT 的学习能力
chatGPT 的学习能力

如上图,我们让GPT 怎么样,他就真的可能听懂我们的意思。跟个孩子一样,还能理解我们的指令。

这正是 Langchain首先要利用的GPT的第一个能力。

这个时候 ,LangChain 也会向我上面的示例一样,告诉GPT,应该怎么样听指令:
LangChain 告诉GPT的指令可能如下:

SeveningGPT 旨在协助完成产品推荐任务,从回答简单的问题到提供对广泛主题的深入解释和讨论。 SeveningGPT 能够根据收到的输入生成类似人类的文本,使其能够进行听起来自然的对话,并提供连贯且与手头主题相关的响应。
SeveningGPT 能够处理和理解人类意图。 作为一种语言模型,SeveningGPT 不能直接给出推荐,但是它有一个工具列表来做推荐任务。 按照工具描述,SeveningGPT 可以调用不同的工具来满足人类的意图。
总的来说,SeveningGPT 是一款功能强大且友好的推荐辅助工具,可以为 Human 带来更好的体验。

SeveningGPT 可以访问以下工具:产品搜索工具,产品推荐工具;
产品搜索工具,用来解决用户有意图搜索或查找某个产品时,那请给我返回:tools:产品搜索工具:用户要查找的意图词。
产品推荐工具,用来解决用户希望让我们推荐更多产品时使用,如果用户有这个意图,就调用这个工具,请给我返回:tools: 产品推荐工具:要推荐的产品ID。
否则的话,正常返回即可。

类似上面的话术,我们的GPT就学会了当要使用工具时,会给我们返回:tools:开头的一段文字。

3. 我们再接着说GPT为什么可以识别上下文

正常情况下,我们可以直接把问题通过HTTP POST请求直接发送过去。代码如下

curl https://api.openai.com/v1/chat/completions \
     -H "Authorization: Bearer sk-your-key" \
     -H "Content-Type: application/json" \
     -d '{
     "model": "gpt-3.5-turbo",
     "messages": [{"role": "user", "content": "怎么做好用户增长?}]
     }'

上面的代码只是一次问题的询问请求,如果连续提问的话,会是怎么样的格式呢?格式如下:

[
    {
        "content": "怎样做好用户增长?",
        "role": "user"
    },
    {
        "content": "以下是一些提高用户增长的方法和技巧:\n\n1.了解目标用户-了解目标用户,包括他们的兴趣、需求和行为,可以帮助你定制用于吸引和保留用户的战略\n\n2.提供优质的产品和服务-令人满意和易于使用的产品和服务,是吸引用户和促进用户增长的关键之一\n\n3.使用多种媒介-在不同的平台和渠道上展示品牌,以扩大知名度和吸引潜在用户\n\n4.运用社交媒体-社交媒体可以成为与目标用户互动和建立品牌忠诚度的强大工具\n\n5.提供促销和特价-这可以吸引新用户并帮助留住现有用户\n\n6.基于数据调整策略-了解数字分析和用户数据,以确定哪些战略和策略是最有效并予以进一步调整\n\n7.采用口碑营销策略-当用户喜欢和信任你的产品时,他们更可能向他们的社交网络推荐它\n\n8.与用户保持联系-维持一种与用户的双向关系,可以帮助你了解他们的需求和反馈,并在他们离开你的平台时劝说他们回归",
        "role": "assistant"
    },
    {
        "content": "第二点详细介绍一下",
        "role": "user"
    },
    {
        "content": "提供优质的产品和服务是吸引并保留用户的关键。在产品和服务方面提供了令人满意和易于使用的选择,也可以提高用户增长率。以下是关于如何提供优质产品和服务的更详细说明:\n\n1. 用户需求调研:要了解用户的需求,并提供满足他们需求的产品和服务。市场调研是了解用户需求的关键,包括用户痛点和用户喜好,这可以让您确定您的产品/服务应该有哪些特性和功能。\n\n2. 简单易用的用户界面:优化用户界面,确保该界面易于使用、清晰直观。产品和服务的使用复杂度越小,吸引新用户的可能性越大。因此,优化用户界面和用户体验可以提高用户参与度和留存率。\n\n3. 针对用户反馈进行改进:听取用户反馈,并根据这些反馈进行改进。这不仅可以提高用户参与度和忠诚度,还可以将产品和服务的质量提高到用户满意度更高的水平。\n\n4. 个性化定制:通过对用户兴趣和偏好的了解,为其提供个性化定制的服务和产品。个性化的定制选择可以帮助您建立与用户的紧密联系,从而提高用户增长率。\n\n5. 优惠活动:提供用户优惠活动,例如特价和奖励项目,以吸引新用户及留住现有用户。提供优惠活动或奖励计划有助于提高用户集中度和忠诚度。\n\n总之,提供优质的产品和服务可以帮助您吸引新用户并保留现有的用户。将用户的需求放在最高优先级,并为用户提供吸引人的产品和服务是获得用户增长的关键之一。",
        "role": "assistant"
    }
]

通过上述代码交互,我们每一次,提交给GPT去运算,其实都把上一次提问的问题和结果又重新传给了GPT,所以当我们说第二点详细介绍一下时,GPT才可以理解我们说的第二点是指什么内容。

4. 那LangChain在中间的作用呢?

LangChain 是一个介于 user 和 assistant 之间的一个拦截器,解决了GPT不能实时与外界网络或API即时交互的问题。
我们现在就是想把动态API能力嵌入到上面的 聊天记录中,

  • 一种方式是我们处理用户的Prompt,然后对Prompt中的变量进行替换。比如 当Prompt中 出现 {product:10010:title} 时,我们拦截到用户的Prompt,查询我们的API,得到产品10010的产品标题后,再发送给ChatGPT。 这种调用最终会改变我们调用prompt。我也写了一个Demo,大家可以看这个例子:https://mp.weixin.qq.com/s/lqt5aPGqFhbpC8zfF35BzA Prompt 模板变量替换演示视频。

  • 第二种方式,就是在 用户和 GPT 之间增加一个请求拦截器,教会GPT用工具,然后GPT理解用户的意图后,返回要用工具,然后LangChain 去调用工具的API并得到结果,得到结果后,再返回给GPT去处理,比如得到了产品列表,然后GPT 帮产品写出对应的导购文案,最终增加销量。

详如下图:LangChain 训练了GPT,让GPT学会了用工具,然后LangChain 识别到要调用工具,就在中间调用,不返回给前端用户去展现。

langChain 调用链路时序图
langChain 调用链路时序图

这样,我们利用LangChain 就把我们业务上的一些API给缝补进了用户和GPT之间的交互。

5. 一顿操作猛如虎,那有没有什么风险呢?

首先GPT是不知道我们的API的,因为API相关的调用是在LangChain中完成的调用,GPT只知道 某个工具的入参和工具的调用结果。所以从API的角度,我们是安全的,但从数据保护的角度,因为我们还是把产品相关信息 传输给了 GPT,所以有这方面隐私数据安全的业务,还是不能去调用。

但如果是个人玩,LangChain 还是一个十足的利器。

这里面 让我最惊讶的是 LangChain 训练GPT 使用工具的能力,就想当于我们训练 小朋友 吃饭时,要用筷子一样,对GPT而言,他要识别出这是吃饭的场景,然后还会主动向家长反馈,给我筷子。

6. 发贴要留种

当然,我们也可以自定义我们自己工具,最终去调用我们自己的API。

再高深的,我也讲不出来了,就讲到这吧。产品上知道数据链路图,会提需求,我就知足了。

类似文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注