logo
2

基于百度千帆大模型平台进行大模型应用开发入门(一)

百度智能云千帆大模型平台是一站式企业级大模型平台,提供了从数据准备、模型训练、模型部署、模型管理、模型监控、模型优化等全流程的一站式服务,帮助企业和开发者快速实现大模型的落地应用。
本文将介绍如何使用百度智能云千帆大模型平台进行大模型应用的开发,包括如何使用百度智能云千帆大模型平台进行数据准备、模型训练、模型部署、模型管理、模型监控、模型优化等全流程的一站式服务。

1. 使用平台 API 进行应用开发

百度智能云千帆大模型平台包含ERNIE-Bot、ERNIE-Bot-turbo、BLOOMZ-7B、Qianfan-BLOOMZ-7B-compresse、Llama-2-7b-chat等热门大模型,支持对话Chat、续写Completions、向量Embeddings、自定义模型导入、图像Images 等相关能力,用户可以通过平台 API 进行应用开发。

1.1 准备工作

1.1.1 使用 Python SDK

安装SDK,目前支持 Python >= 3.7版本,官方文档地址:https://cloud.baidu.com/doc/WENXINWORKSHOP/s/3lmokh7n6
pip
  
  
  
  
  
  
%pip install qianfan
conda
  
  
  
  
  
  
%conda install qiandan

1.1.2 创建应用并获取AK和 SK

1.1.3 Hello World

  
  
  
  
  
  
import qianfan as qf
import os
ak = os.environ.get("AK")
sk = os.environ.get("SK")
chat_comp = qf.ChatCompletion(ak=ak, sk=sk)
messages=[{
"role": "user",
"content": "你好"
}]
def get_response(messages):
resp = chat_comp.do(messages=messages)
return resp['body']['result']
print(get_response(messages))
# Result:
# 您好!有什么我可以帮助您的吗?

1.2 使用 ERNIE-Bot 进行应用开发

1.2.1 应用一:聊天机器人

对话Chat的文档中,我们可以看到,通过千帆大模型平台可以进行单轮对话、多轮对话、流式等调用,我们可以很轻松的通过对多轮对话封装,快速开发一个聊天机器人。
  
  
  
  
  
  
import qianfan
import os
ak = os.environ.get("AK")
sk = os.environ.get("SK")
class Chat():
def __init__(self, prompt):
self.prompt = prompt
self.messages = qianfan.Messages()
self.chat_comp = qianfan.ChatCompletion(ak=ak, sk=sk)
def get_response(self):
self.messages.append(self.prompt)
resp = self.chat_comp.do(messages=self.messages)
self.messages.append(resp)
return resp['body']['result']
while True:
chat = Chat(input())
print(chat.get_response())
# Result
汽车快还是火车快
火车和汽车各有各的特点,我们不能简单说谁更快。
火车的速度通常在80到120公里/小时,而汽车的平均速度也在80到120公里/小时,所以从速度上来看,它们是没有区别的。然而,在某些情况下,火车的速度可能会比汽车快。例如:在铁轨上行驶的火车,其速度受到的阻力更小,而且火车的功率更大,使其能够以更高的速度运行。
总的来说,火车和汽车各有各的优势,不能简单说谁更快。火车在速度上可能会有优势,但在燃油消耗和噪音方面则不如汽车。因此,在选择交通工具时,应该根据具体的需求来决定。
火车和飞机呢
火车和飞机都属于交通工具,但它们的特点和适用场景有所不同。
飞机速度快、安全性高、舒适度好,适合长途旅行。火车平稳性好、经济性高、安全性好,适合中短途旅行。当然,火车和飞机也有各自的优点和缺点。比如,飞机需要耗时较短,但受天气影响较大,而火车受天气影响较小,但耗时较长。
因此,在选择交通工具时,可以根据自己的需求和行程安排来权衡不同交通工具的优缺点。如果时间紧迫,建议选择飞机;如果时间充裕,建议选择火车。

1.2.2 应用二:使用 Embedding 进行零样本分类

零样本学习(Zero-Shot Learning)是一种机器学习方法,旨在解决传统监督学习中的一个限制,即在训练阶段只能学习已知类别的样本的问题。在零样本学习中,我们的目标是通过使用辅助信息来识别或分类在训练阶段从未见过的新类别或样本。
传统的监督学习需要为每个类别提供大量的标记样本进行训练,以便模型能够正确地分类新样本。然而,在实际应用中,很难获取所有可能类别的标记样本。这就是零样本学习的用武之地。
零样本学习尝试利用附加的语义描述或属性信息,例如类别的语义标签、属性向量、文本描述等,来学习如何将新样本分配到正确的类别中。通常,该方法借助于已有的训练样本和类别的语义表示来构建一个学习模型,该模型可以根据新样本的语义信息进行分类。
零样本学习在面对新的、未知类别的分类问题时具有很大的潜力,特别是在图像识别、自然语言处理和语音处理等领域。通过利用辅助信息,零样本学习提供了一种解决复杂问题的方式,即使在缺乏大规模标记数据的情况下也能实现良好的分类性能。
对于向量化任务,目前千帆大模型平台预置的模型有:
这里我们使用默认的 Embedding-V1,具体使用文档见:Embedding-V1。另外,我们还需要使用 numpy 库来计算两个数列的余弦相似度:
  
  
  
  
  
  
import numpy as np
def cosine_similarity(a, b):
return np.dot(a, b)
接下来我们使用 Embedding 来对辣和不辣的食物进行分类:
  
  
  
  
  
  
import qianfan
import os
ak = os.environ.get("AK")
sk = os.environ.get("SK")
emb = qianfan.Embedding(ak=ak, sk=sk)
def get_embedding(text):
resp = emb.do(model="Embedding-V1", texts=[text])
return resp['data'][0]['embedding']
import numpy as np
def cosine_similarity(a, b):
return np.dot(a, b)
spicy_food = get_embedding("辣的食物")
no_spicy_food = get_embedding("不辣的食物")
def get_score(embedding):
return cosine_similarity(spicy_food, embedding) - cosine_similarity(no_spicy_food, embedding)
spicy_food_example = get_embedding("麻婆豆腐")
no_spicy_food_example = get_embedding("咖啡")
print(get_score(spicy_food_example))
print(get_score(no_spicy_food_example))
# Result
# 0.0535329260040647
# 0.026065864872412692
但通过评分的高低可以做出一个辣的食物和不辣的食物判断。
评论
用户头像