AI 文摘

8让大模型做聊天机器人,那些套壳网站就是这么做的





作者: 人工智能大讲堂 来源: 人工智能大讲堂

7.让大模型直接情感分析,都什么年代了还计算Embedding和余弦夹角呢?

上一篇文章,我们用Open AI的Completion接口实现了一个用户评论情感分析功能,有的人说有点大材小用了,那好吧,今天就给大家安排一个更高级的应用:聊天机器人,目前一些所谓的套壳大模型估计也是这么做的。

我们先把调用API代码封装到一个函数中。


import openai
import os
openai.api_key = os.environ.get("OPENAI_API_KEY")
COMPLETION_MODEL = "text-davinci-003"
  

def get_response(prompt, temperature = 1.0):
completions = openai.Completion.create (
engine=COMPLETION_MODEL,
prompt=prompt,
max_tokens=1024,
n=1,
stop=None,
temperature=temperature,
)m
essage = completions.choices[0].text
return message

想要实现问答,仍然要在Prompt提示词上做点文章,我们需要在提示词里,在问题之前加上 “Q :” 表示这是一个问题,然后另起一行,加上 “A :” 表示我想要一个回答,那么 Completion 的接口就会回答你在 “Q : ”后面的问题。例如,我们问 AI “AI都有哪些分支?”。


question = """
Q : AI都有哪些分支?
A :
"""
print(get_response(question))

大模型就会列出所有分支。


1.机器学习(Machine Learning):这是AI中最常见的分支,它使计算机能够从数据中学习并做出决策或预测。机器学习包括监督学习、无监督学习、半监督学习和强化学习等。
2.深度学习(Deep Learning):深度学习是机器学习的一个子集,它使用类似于人脑的神经网络结构来学习复杂的模式。深度学习在图像识别、语音识别和自然语言处理等领域取得了显著的成果。
3.计算机视觉(Computer Vision):这个分支专注于使计算机能够理解和解释视觉信息,如图像和视频。计算机视觉的应用包括面部识别、物体检测和自动驾驶汽车等。
4.自然语言处理(Natural Language Processing, NLP):NLP涉及让计算机理解、解释和生成人类语言。这包括语音识别、机器翻译、情感分析和聊天机器人等应用。
5.专家系统(Expert Systems):这些系统旨在模拟人类专家的决策过程,通过知识库和推理引擎来解决特定领域的问题。
6.机器人学(Robotics):机器人学结合了AI和机械工程,使机器人能够执行复杂的任务,如导航、物体操控和交互。
7.认知计算(Cognitive Computing):这个领域试图模拟人类的认知过程,以创建能够理解、学习和做出决策的智能系统。
8.进化计算(Evolutionary Computation):这个分支使用生物进化的原理,如遗传算法和遗传编程,来解决优化问题和设计复杂系统。
9.模糊逻辑(Fuzzy Logic):模糊逻辑是一种处理不确定性和模糊概念的数学方法,常用于控制系统和决策支持系统。
10.知识表示与推理(Knowledge Representation and Reasoning):这个领域关注如何有效地表示和处理知识,以及如何使用这些知识进行逻辑推理。

先暂停一下,让我么看看Completion接口中的那些参数都是什么意思。

temperature参数 :这个参数的输入范围是0-2之间的浮点数,代表输出结果的随机性,值越小随机性越小,设置为0,同一个问题,模型每次都输出同样的内容;值越大,回答越丰富多样,如何设置?要看业务场景,娱乐,自媒体这些富有创造性,容错性高的可以设置大一些;医疗,金融,法律相对要保守些。

engine参数 :选择open ai发布的哪一个模型,这里我们使用的是 text-davinci-003。

prompt参数 :提示语。

max_tokens参数 :允许模型生成内容的最大token数量,我们这里用的 text-davinci-003 模型,允许最多有4096个token。需要注意,这个数量既包括你输入的提示语,也包括AI产出的回答,两个加起来不能超过4096个token,如果超过这个限制就会被截断。另外,调用API是按token数收费的,目前有些大模型支持200k上下文长度,如果不做限制,钱包就得瑟瑟发抖。

n参数: 代表你希望AI给你生成几条内容供你选择,这个也需要根据用户场景设置。

stop参数: 代表你希望模型输出的内容在遇到什么内容的时候就停下来,合理设置也可以避免不必要的token浪费。

让我们继续。

一般聊天机器人都支持多轮对话,需要在回答用户当前问题时能记住之前的对话,也就是上下文。

你虽然调用的是open ai的API,但它可不会为你保存上下文,这个还得你自己来做。

最简单的方法是把之前的聊天内容和当前的问题拼在一起传给大模型。例如:


question =  """
Q : AI都有哪些分支?
A :
1.机器学习(Machine Learning):这是AI中最常见的分支,它使计算机能够从数据中学习并做出决策或预测。机器学习包括监督学习、无监督学习、半监督学习和强化学习等。
2.深度学习(Deep Learning):深度学习是机器学习的一个子集,它使用类似于人脑的神经网络结构来学习复杂的模式。深度学习在图像识别、语音识别和自然语言处理等领域取得了显著的成果。
3.计算机视觉(Computer Vision):这个分支专注于使计算机能够理解和解释视觉信息,如图像和视频。计算机视觉的应用包括面部识别、物体检测和自动驾驶汽车等。
4.自然语言处理(Natural Language Processing, NLP):NLP涉及让计算机理解、解释和生成人类语言。这包括语音识别、机器翻译、情感分析和聊天机器人等应用。
5.专家系统(Expert Systems):这些系统旨在模拟人类专家的决策过程,通过知识库和推理引擎来解决特定领域的问题。
6.机器人学(Robotics):机器人学结合了AI和机械工程,使机器人能够执行复杂的任务,如导航、物体操控和交互。
7.认知计算(Cognitive Computing):这个领域试图模拟人类的认知过程,以创建能够理解、学习和做出决策的智能系统。
8.进化计算(Evolutionary Computation):这个分支使用生物进化的原理,如遗传算法和遗传编程,来解决优化问题和设计复杂系统。
9.模糊逻辑(Fuzzy Logic):模糊逻辑是一种处理不确定性和模糊概念的数学方法,常用于控制系统和决策支持系统。
10.知识表示与推理(Knowledge Representation and Reasoning):这个领域关注如何有效地表示和处理知识,以及如何使用这些知识进行逻辑推理。
  

Q : 那机器学习又包括哪些分支?
A :
"""

眼尖的人立马会跳出来提出问题:刚才不是说text-davinci-003的最大token数是4096嘛,这么拼下去能记住几轮对话啊?

是的,采用这种方法,就必须采用token窗技术截断太早之前的对话。

也有的人说,不用担心,现在的模型都支持200k上下文长度了。

但这个长度早晚有用完的时候,所以,为了防患于未然,有人就提出了另一种方法,就是对之前的聊天内容使用大模型进行总结,然后把总结后的内容作为上下文和新问题一起传给大模型。

总结:

今天我们基于Completion接口实现了一个简易的聊天机器人,但如何保存聊天记录,为了防止提示词token数超过最大限制,如何实现token窗,以及如何实现对过往聊天内容的总结还没有涉及,这个留到下篇文章讲,届时我将介绍LangChain这个开源框架去实现这些功能。

更多AI工具,参考Github-AiBard123国内AiBard123

可关注我们的公众号:每天AI新工具